blob: 3d4118d1ebd1b2ae99faeece895a4c82fb36a24e [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
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530170};
Jeff Johnson295189b2012-06-20 16:38:30 -0700171
172/*--------------------------------------------------------------------------
173 WLAN DAL State Machine
174 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700175WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700176{
177 /*WDI_INIT_ST*/
178 {{
179 WDI_MainStart, /*WDI_START_EVENT*/
180 NULL, /*WDI_STOP_EVENT*/
181 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
182 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
183 WDI_MainClose, /*WDI_CLOSE_EVENT*/
184 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
185 }},
186
187 /*WDI_STARTED_ST*/
188 {{
189 WDI_MainStartStarted, /*WDI_START_EVENT*/
190 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
191 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
192 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
193 NULL, /*WDI_CLOSE_EVENT*/
194 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
195 }},
196
197 /*WDI_STOPPED_ST*/
198 {{
199 WDI_MainStart, /*WDI_START_EVENT*/
200 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
201 NULL, /*WDI_REQUEST_EVENT*/
202 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
203 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700204 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700205 }},
206
207 /*WDI_BUSY_ST*/
208 {{
209 WDI_MainStartBusy, /*WDI_START_EVENT*/
210 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
211 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
212 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
213 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
214 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
215 }}
216};
217
Jeff Johnsone7245742012-09-05 17:12:55 -0700218/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700219 DAL Request Processing Array - the functions in this table will only be
220 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700221 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700222 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700223WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700224{
225 /*INIT*/
226 WDI_ProcessStartReq, /* WDI_START_REQ */
227 WDI_ProcessStopReq, /* WDI_STOP_REQ */
228 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
229
230 /*SCAN*/
231 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
232 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
233 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
234 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
235
236 /*ASSOCIATION*/
237 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
238 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
239 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
240 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
241 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
242
243 /* Security */
244 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
245 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
246 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
247 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
248
249 /* QoS and BA APIs */
250 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
251 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
252 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
253 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
254 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
255
256 /* Miscellaneous Control APIs */
257 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
258 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
259 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
260 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
261 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
262
263 /*BA APIs*/
264 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
265 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
266
267 /*Beacon processing APIs*/
268 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
269 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
270
271 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
272 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
273 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
274 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700275 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700276 /* PowerSave APIs */
277 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
278 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
279 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
280 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
281 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
282 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
283 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
284 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
285 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
286 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
287 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
288 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
289 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
290 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
291 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
292 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
293 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
294 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
295 /*NV Download APIs*/
296 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
297 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
298 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
299#ifdef WLAN_FEATURE_VOWIFI_11R
300 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
301#else
302 NULL,
303#endif /* WLAN_FEATURE_VOWIFI_11R */
304 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
305 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700306 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700307
308#ifdef FEATURE_OEM_DATA_SUPPORT
309 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
310#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700311 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700312#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700313 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700314
315 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700316
317#ifdef FEATURE_WLAN_SCAN_PNO
318 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
319 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
320 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
321#else
322 NULL,
323 NULL,
324 NULL,
325#endif /* FEATURE_WLAN_SCAN_PNO */
326
327 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700328
Jeff Johnson295189b2012-06-20 16:38:30 -0700329#ifdef WLAN_FEATURE_PACKET_FILTERING
330 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700331 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700332 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700333 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700334 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700335 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700336 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700337 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700338#else
339 NULL,
340 NULL,
341 NULL,
342 NULL,
343#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700344 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700345 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
346 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
347
348 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800349#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700350 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
351#else
352 NULL,
353#endif
354
355#ifdef WLAN_FEATURE_GTK_OFFLOAD
356 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
357 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
358#else
359 NULL,
360 NULL,
361#endif // WLAN_FEATURE_GTK_OFFLOAD
362
363 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
364 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700365#ifdef WLAN_FEATURE_11AC
366 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800367#else
368 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700369#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800370#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800371 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
372#else
schang86c22c42013-03-13 18:41:24 -0700373 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800374#endif
schang86c22c42013-03-13 18:41:24 -0700375 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700376#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700377 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700378#else
379 NULL,
380#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530381#ifdef FEATURE_WLAN_TDLS
382 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
383#else
384 NULL,
385#endif
Leo Chang9056f462013-08-01 19:21:11 -0700386#ifdef FEATURE_WLAN_LPHB
387 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
388#else
389 NULL,
390#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530391
392#ifdef FEATURE_WLAN_BATCH_SCAN
393 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
394#else
395 NULL,
396#endif /* FEATURE_WLAN_BATCH_SCAN */
397
Arif Hussaina5ebce02013-08-09 15:09:58 -0700398 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800399
400 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
schang86c22c42013-03-13 18:41:24 -0700401 /*-------------------------------------------------------------------------
402 Indications
403 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700404 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800405 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530406 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
407 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700408#ifdef WLAN_FEATURE_11W
409 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
410#else
411 NULL,
412#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700413 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
414 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530415#ifdef FEATURE_WLAN_BATCH_SCAN
416 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
417 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
418#else
419 NULL,
420 NULL,
421#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700422 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530423 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
424 WDI_ProcessHT40OBSSStopScanInd /*WDI_STOP_HT40_OBSS_SCAN_IND */
425
Jeff Johnson295189b2012-06-20 16:38:30 -0700426};
427
428
Jeff Johnsone7245742012-09-05 17:12:55 -0700429/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700430 DAL Request Processing Array - the functions in this table will only be
431 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700432 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700433 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700434WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700435{
436 /*INIT*/
437 WDI_ProcessStartRsp, /* WDI_START_RESP */
438 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
439 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
440
441 /*SCAN*/
442 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
443 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
444 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
445 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
446
447 /* ASSOCIATION*/
448 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
449 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
450 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
451 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
452 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
453
454 /* Security */
455 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
456 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
457 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
458 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
459
460 /* QoS and BA APIs */
461 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
462 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
463 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
464 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
465 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
466
467 /* Miscellaneous Control APIs */
468 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
469 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
470 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
471 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
472 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
473
474 /* BA APIs*/
475 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
476 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700477
Jeff Johnson295189b2012-06-20 16:38:30 -0700478 /* IBSS APIs*/
479 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
480 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
481
482 /*Soft AP APIs*/
483 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
484 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
485 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
486 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
487
488 /* PowerSave APIs */
489 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
490 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
491 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
492 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
493 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
494 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
495 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
496 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
497 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
498 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
499 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
500 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
501 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
502 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
503 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
504 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
505 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
506 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700507
Jeff Johnson295189b2012-06-20 16:38:30 -0700508
509 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
510
511 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
512 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
513#ifdef WLAN_FEATURE_VOWIFI_11R
514 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
515#else
516 NULL,
517#endif /* WLAN_FEATURE_VOWIFI_11R */
518 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
519 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700520#ifdef FEATURE_OEM_DATA_SUPPORT
521 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
522#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700523 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700524#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700525 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
526
Jeff Johnson295189b2012-06-20 16:38:30 -0700527 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700528
Jeff Johnson295189b2012-06-20 16:38:30 -0700529 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700530
Jeff Johnsone7245742012-09-05 17:12:55 -0700531 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
532
Jeff Johnson295189b2012-06-20 16:38:30 -0700533#ifdef FEATURE_WLAN_SCAN_PNO
534 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
535 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
536 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
537#else
538 NULL,
539 NULL,
540 NULL,
541#endif // FEATURE_WLAN_SCAN_PNO
542
543 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
544
545 /*---------------------------------------------------------------------
546 Indications
547 ---------------------------------------------------------------------*/
548#ifdef WLAN_FEATURE_PACKET_FILTERING
549 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700550 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700551 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700552 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700553 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700554 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700555 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700556 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700557#else
558 NULL,
559 NULL,
560 NULL,
561 NULL,
562#endif // WLAN_FEATURE_PACKET_FILTERING
563
564 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
565 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
566
567 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800568#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700569 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
570#else
571 NULL,
572#endif
573
574#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700575 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
576 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700577#else
578 NULL,
579 NULL,
580#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700581 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
582 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700583#ifdef WLAN_FEATURE_11AC
584 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700585#else
586 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700587#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800588#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800589 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
590#else
591 NULL,
592#endif
schang86c22c42013-03-13 18:41:24 -0700593 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700594#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700595 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700596#else
597 NULL,
598#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530599#ifdef FEATURE_WLAN_TDLS
600 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
601#else
602 NULL,
603#endif
Leo Chang9056f462013-08-01 19:21:11 -0700604#ifdef FEATURE_WLAN_LPHB
605 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
606#else
607 NULL,
608#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530609
610#ifdef FEATURE_WLAN_BATCH_SCAN
611 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
612#else
613 NULL,
614#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800615 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530616
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800617 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
618
Jeff Johnson295189b2012-06-20 16:38:30 -0700619 /*---------------------------------------------------------------------
620 Indications
621 ---------------------------------------------------------------------*/
622 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
623 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
624 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
625 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
626 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
627 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
628
629 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
630
631 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
632
Jeff Johnson295189b2012-06-20 16:38:30 -0700633 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700634
635#ifdef FEATURE_WLAN_SCAN_PNO
636 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
637#else
638 NULL,
639#endif // FEATURE_WLAN_SCAN_PNO
640
641#ifdef WLAN_WAKEUP_EVENTS
642 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
643#else // WLAN_WAKEUP_EVENTS
644 NULL,
645#endif // WLAN_WAKEUP_EVENTS
646
647 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800648
Viral Modid86bde22012-12-10 13:09:21 -0800649 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530650#ifdef FEATURE_WLAN_TDLS
651 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
652#else
653 NULL,
654#endif
Leo Chang9056f462013-08-01 19:21:11 -0700655
656#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700657 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700658#else
659 NULL,
660#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700661
662 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700663
664 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530665
666#ifdef FEATURE_WLAN_BATCH_SCAN
667 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
668#else
669 NULL,
670#endif
671
Leo Chang0b0e45a2013-12-15 15:18:55 -0800672#ifdef FEATURE_WLAN_CH_AVOID
673 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
674#else
675 NULL,
676#endif /* FEATURE_WLAN_CH_AVOID */
677
Jeff Johnson295189b2012-06-20 16:38:30 -0700678};
679
680
Jeff Johnsone7245742012-09-05 17:12:55 -0700681/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700682 WLAN DAL Global Control Block
683 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700684WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700685static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
686
Jeff Johnsone7245742012-09-05 17:12:55 -0700687const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700688
689/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700690WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700691void* WDI_GET_PAL_CTX( void )
692{
Jeff Johnsone7245742012-09-05 17:12:55 -0700693 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700694}/*WDI_GET_PAL_CTX*/
695
Jeff Johnsone7245742012-09-05 17:12:55 -0700696/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700697 Helper inline converters
698 ============================================================================*/
699/*Convert WDI driver type into HAL driver type*/
700WPT_STATIC WPT_INLINE WDI_Status
701WDI_HAL_2_WDI_STATUS
702(
703 eHalStatus halStatus
704);
705
706/*Convert WDI request type into HAL request type*/
707WPT_STATIC WPT_INLINE tHalHostMsgType
708WDI_2_HAL_REQ_TYPE
709(
710 WDI_RequestEnumType wdiReqType
711);
712
713/*Convert WDI response type into HAL response type*/
714WPT_STATIC WPT_INLINE WDI_ResponseEnumType
715HAL_2_WDI_RSP_TYPE
716(
717 tHalHostMsgType halMsg
718);
719
720/*Convert WDI driver type into HAL driver type*/
721WPT_STATIC WPT_INLINE tDriverType
722WDI_2_HAL_DRV_TYPE
723(
724 WDI_DriverType wdiDriverType
725);
726
727/*Convert WDI stop reason into HAL stop reason*/
728WPT_STATIC WPT_INLINE tHalStopType
729WDI_2_HAL_STOP_REASON
730(
731 WDI_StopType wdiStopType
732);
733
734/*Convert WDI scan mode type into HAL scan mode type*/
735WPT_STATIC WPT_INLINE eHalSysMode
736WDI_2_HAL_SCAN_MODE
737(
738 WDI_ScanMode wdiScanMode
739);
740
741/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700742WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700743WDI_2_HAL_SEC_CH_OFFSET
744(
745 WDI_HTSecondaryChannelOffset wdiSecChOffset
746);
747
748/*Convert WDI BSS type into HAL BSS type*/
749WPT_STATIC WPT_INLINE tSirBssType
750WDI_2_HAL_BSS_TYPE
751(
752 WDI_BssType wdiBSSType
753);
754
755/*Convert WDI NW type into HAL NW type*/
756WPT_STATIC WPT_INLINE tSirNwType
757WDI_2_HAL_NW_TYPE
758(
759 WDI_NwType wdiNWType
760);
761
762/*Convert WDI chanel bonding type into HAL cb type*/
763WPT_STATIC WPT_INLINE ePhyChanBondState
764WDI_2_HAL_CB_STATE
765(
766 WDI_PhyChanBondState wdiCbState
767);
768
769/*Convert WDI chanel bonding type into HAL cb type*/
770WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
771WDI_2_HAL_HT_OPER_MODE
772(
773 WDI_HTOperatingMode wdiHTOperMode
774);
775
776/*Convert WDI mimo PS type into HAL mimo PS type*/
777WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
778WDI_2_HAL_MIMO_PS
779(
780 WDI_HTMIMOPowerSaveState wdiHTOperMode
781);
782
783/*Convert WDI ENC type into HAL ENC type*/
784WPT_STATIC WPT_INLINE tAniEdType
785WDI_2_HAL_ENC_TYPE
786(
787 WDI_EncryptType wdiEncType
788);
789
790/*Convert WDI WEP type into HAL WEP type*/
791WPT_STATIC WPT_INLINE tAniWepType
792WDI_2_HAL_WEP_TYPE
793(
794 WDI_WepType wdiWEPType
795);
796
797/*Convert WDI Link State into HAL Link State*/
798WPT_STATIC WPT_INLINE tSirLinkState
799WDI_2_HAL_LINK_STATE
800(
801 WDI_LinkStateType wdiLinkState
802);
803
Jeff Johnsone7245742012-09-05 17:12:55 -0700804/*Translate a STA Context from WDI into HAL*/
805WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700806void
807WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700808(
Jeff Johnson295189b2012-06-20 16:38:30 -0700809 tConfigStaParams* phalConfigSta,
810 WDI_ConfigStaReqInfoType* pwdiConfigSta
811);
Jeff Johnsone7245742012-09-05 17:12:55 -0700812
813/*Translate a Rate set info from WDI into HAL*/
814WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700815WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700816(
Jeff Johnson295189b2012-06-20 16:38:30 -0700817 tSirMacRateSet* pHalRateSet,
818 WDI_RateSet* pwdiRateSet
819);
820
821/*Translate an EDCA Parameter Record from WDI into HAL*/
822WPT_STATIC WPT_INLINE void
823WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700824(
Jeff Johnson295189b2012-06-20 16:38:30 -0700825 tSirMacEdcaParamRecord* phalEdcaParam,
826 WDI_EdcaParamRecord* pWDIEdcaParam
827);
828
829/*Copy a management frame header from WDI fmt into HAL fmt*/
830WPT_STATIC WPT_INLINE void
831WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
832(
833 tSirMacMgmtHdr* pmacMgmtHdr,
834 WDI_MacMgmtHdr* pwdiMacMgmtHdr
835);
836
837/*Copy config bss parameters from WDI fmt into HAL fmt*/
838WPT_STATIC WPT_INLINE void
839WDI_CopyWDIConfigBSSToHALConfigBSS
840(
841 tConfigBssParams* phalConfigBSS,
842 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
843);
844
Jeff Johnsone7245742012-09-05 17:12:55 -0700845/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700846 pointed to by user data */
847WPT_STATIC WPT_INLINE void
848WDI_ExtractRequestCBFromEvent
849(
850 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700851 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700852 void** ppUserData
853);
854
855wpt_uint8
856WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700857(
Jeff Johnson295189b2012-06-20 16:38:30 -0700858 WDI_ControlBlockType* pWDICtx,
859 WDI_BSSSessionType** ppSession
860);
861
862void
863WDI_AddBcastSTAtoSTATable
864(
865 WDI_ControlBlockType* pWDICtx,
866 WDI_AddStaParams * staParams,
867 wpt_uint16 usBcastStaIdx
868);
869
870WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700871(
Jeff Johnson295189b2012-06-20 16:38:30 -0700872 WDI_ControlBlockType* pWDICtx,
873 WDI_EventInfoType* pEventData
874);
875
876void
877WDI_SetPowerStateCb
878(
879 wpt_status status,
880 unsigned int dxePhyAddr,
881 void *pContext
882);
883
Jeff Johnson295189b2012-06-20 16:38:30 -0700884/**
885 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700886
887 @param wdiReqMsgId: WDI Message request Id
888
889 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700890 @return Result of the function call
891*/
892static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
893{
894 switch (wdiReqMsgId)
895 {
896 CASE_RETURN_STRING( WDI_START_REQ );
897 CASE_RETURN_STRING( WDI_STOP_REQ );
898 CASE_RETURN_STRING( WDI_CLOSE_REQ );
899 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
900 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
901 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
902 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
903 CASE_RETURN_STRING( WDI_JOIN_REQ );
904 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
905 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
906 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
907 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
908 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
909 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
910 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
911 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
912 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
913 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
914 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
915 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
916 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
917 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
918 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
919 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
920 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
921 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
922 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
923 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
924 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
925 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
926 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
927 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
928 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
929 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -0700930 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700931 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530932#ifdef FEATURE_WLAN_TDLS
933 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
934#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700935 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
936 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
937 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
938 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
939 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
940 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
941 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
942 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
943 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
944 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
945 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
946 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
947 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
948 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
949 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
950 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
951 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
952 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
953 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
954 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
955 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
956 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
957 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
958 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
959 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700960 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700961 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
962 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
963 #ifdef FEATURE_WLAN_SCAN_PNO
964 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
965 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
966 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
967 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700968#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700969 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700970#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700971 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
972 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
973 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
974 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
975 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
976 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
977 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
978 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
979 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800980 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800981 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -0700982#ifdef WLAN_FEATURE_11W
983 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
984#endif
Rajeev79dbe4c2013-10-05 11:03:42 +0530985#ifdef FEATURE_WLAN_BATCH_SCAN
986 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
987 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
988 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
989#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530990 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
991 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800992 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Jeff Johnson295189b2012-06-20 16:38:30 -0700993 default:
994 return "Unknown WDI MessageId";
995 }
996}
997
998
999
1000/**
1001 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001002
1003 @param wdiRespMsgId: WDI Message response Id
1004
1005 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001006 @return Result of the function call
1007*/
1008static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1009{
1010 switch (wdiRespMsgId)
1011 {
1012 CASE_RETURN_STRING( WDI_START_RESP );
1013 CASE_RETURN_STRING( WDI_STOP_RESP );
1014 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1015 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1016 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1017 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1018 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1019 CASE_RETURN_STRING( WDI_JOIN_RESP );
1020 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1021 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1022 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1023 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1024 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1025 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1026 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1027 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1028 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1029 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1030 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1031 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1032 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1033 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1034 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1035 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1036 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1037 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1038 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1039 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1040 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1041 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1042 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1043 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1044 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1045 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1046 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301047#ifdef FEATURE_WLAN_TDLS
1048 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1049 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1050#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001051 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1052 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1053 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1054 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1055 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1056 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1057 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1058 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1059 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1060 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1061 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1062 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1063 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1064 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1065 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1066 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1067 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1068 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1069 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1070 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1071 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1072 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1073 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1074 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1075 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001076 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001077 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1078 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1079 #ifdef FEATURE_WLAN_SCAN_PNO
1080 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1081 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1082 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1083 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001084#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001085 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001086#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001087 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1088 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1089 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1090 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1091 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1092 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1093 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1094 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001095 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301096#ifdef FEATURE_WLAN_BATCH_SCAN
1097 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1098#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001099 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001100 default:
1101 return "Unknown WDI MessageId";
1102 }
1103}
1104
1105/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301106 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1107 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301108 @param capabilityBitmap - Base address of a 4 element Bitmap array
1109 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301110 @see
1111 @returns None
1112 */
1113void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1114{
Abhishek Singh08b60122014-02-04 18:05:23 +05301115 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301116 char capStr[512];
1117 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301118 for (j = 0; j < 4; j++) {
1119 for (i = 0; i < 32; i++) {
1120 if ((*(capabilityBitmap + j) & (1 << i))) {
1121 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301122 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1123 pCapStr += strlen("MCC");
1124 break;
1125 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1126 pCapStr += strlen("P2P");
1127 break;
1128 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1129 pCapStr += strlen("DOT11AC");
1130 break;
1131 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1132 pCapStr += strlen("SLM_SESSIONIZATION");
1133 break;
1134 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1135 pCapStr += strlen("DOT11AC_OPMODE");
1136 break;
1137 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1138 pCapStr += strlen("SAP32STA");
1139 break;
1140 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1141 pCapStr += strlen("TDLS");
1142 break;
1143 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1144 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1145 break;
1146 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1147 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1148 break;
1149 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1150 pCapStr += strlen("BEACON_OFFLOAD");
1151 break;
1152 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1153 pCapStr += strlen("SCAN_OFFLOAD");
1154 break;
1155 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1156 pCapStr += strlen("ROAM_OFFLOAD");
1157 break;
1158 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1159 pCapStr += strlen("BCN_MISS_OFFLOAD");
1160 break;
1161 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1162 pCapStr += strlen("STA_POWERSAVE");
1163 break;
1164 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1165 pCapStr += strlen("AP_UAPSD");
1166 break;
1167 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1168 pCapStr += strlen("AP_DFS");
1169 break;
1170 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1171 pCapStr += strlen("BLOCKACK");
1172 break;
1173 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1174 pCapStr += strlen("PHY_ERR");
1175 break;
1176 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1177 pCapStr += strlen("BCN_FILTER");
1178 break;
1179 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1180 pCapStr += strlen("RTT");
1181 break;
1182 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1183 pCapStr += strlen("RATECTRL");
1184 break;
1185 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1186 pCapStr += strlen("WOW");
1187 break;
1188 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1189 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1190 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301191 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1192 pCapStr += strlen("FW_IN_TX_PATH");
1193 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301194 case HT40_OBSS_SCAN:
1195 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1196 "%s", "HT40_OBSS_SCAN");
1197 pCapStr += strlen("HT40_OBSS_SCAN");
1198 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301199 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1200 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1201 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1202 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1203 break;
1204
Abhishek Singh08b60122014-02-04 18:05:23 +05301205 }
1206 *pCapStr++ = ',';
1207 *pCapStr++ = ' ';
1208 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301209 }
1210 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301211 pCapStr -= 2;
1212 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301213 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301215}
1216
1217/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001218 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001219
1220 @param halStatusId: HAL status Id
1221
1222 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001223 @return Result of the function call
1224*/
1225static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1226{
1227 switch (halStatusId)
1228 {
1229 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1230 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1231 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1232 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1233 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1234 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1235 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1236 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1237 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1238 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1239 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1240 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1241 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1242 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1243 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1244 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1245 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1246 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1247 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1248 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1249 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1250 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1251 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1252 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1253 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1254 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1255 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1256 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1257 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1258 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1259 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1260 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1261 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1262 default:
1263 return "Unknown HAL status";
1264 }
1265}
1266
Jeff Johnsone7245742012-09-05 17:12:55 -07001267/*========================================================================
1268
Jeff Johnson295189b2012-06-20 16:38:30 -07001269 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001270
Jeff Johnson295189b2012-06-20 16:38:30 -07001271==========================================================================*/
1272
1273/**
1274 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001275
Jeff Johnson295189b2012-06-20 16:38:30 -07001276 DAL will allocate all the resources it needs. It will open PAL, it will also
1277 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001278 DXE/SMD or any other drivers that they need.
1279
Jeff Johnson295189b2012-06-20 16:38:30 -07001280 @param pOSContext: pointer to the OS context provided by the UMAC
1281 will be passed on to PAL on Open
1282 ppWDIGlobalCtx: output pointer of Global Context
1283 pWdiDevCapability: output pointer of device capability
1284
1285 @return Result of the function call
1286*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001287WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001288WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001289(
Jeff Johnson295189b2012-06-20 16:38:30 -07001290 void* pOSContext,
1291 void** ppWDIGlobalCtx,
1292 WDI_DeviceCapabilityType* pWdiDevCapability,
1293 unsigned int driverType
1294)
1295{
1296 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001297 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001298 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001299 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1301
1302 /*---------------------------------------------------------------------
1303 Sanity check
1304 ---------------------------------------------------------------------*/
1305 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1306 {
1307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1308 "Invalid input parameters in WDI_Init");
1309
Jeff Johnsone7245742012-09-05 17:12:55 -07001310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001311 }
1312
1313 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001314 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001315 ---------------------------------------------------------------------*/
1316 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1317 {
1318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1319 "WDI module already initialized - return");
1320
Jeff Johnsone7245742012-09-05 17:12:55 -07001321 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001322 }
1323
1324 /*Module is now initialized - this flag is to ensure the fact that multiple
1325 init will not happen on WDI
1326 !! - potential race does exist because read and set are not atomic,
1327 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001328 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001329
1330 /*Setup the control block */
1331 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001332 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001333
1334 /*Setup the STA Table*/
1335 wdiStatus = WDI_STATableInit(&gWDICb);
1336 if ( WDI_STATUS_SUCCESS != wdiStatus )
1337 {
1338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1339 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001340 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001341 goto fail_STATableInit;
1342 }
1343
1344 /*------------------------------------------------------------------------
1345 Open the PAL
1346 ------------------------------------------------------------------------*/
1347 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1348 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1349 {
1350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1351 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001352 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001353 goto fail_wpalOpen;
1354 }
1355
1356 /*Initialize main synchro mutex - it will be used to ensure integrity of
1357 the main WDI Control Block*/
1358 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1359 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1360 {
1361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1362 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001363 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001364 goto fail_mutex;
1365 }
1366
1367 /*Initialize the response timer - it will be used to time all messages
1368 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001369 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1370 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001371 &gWDICb);
1372 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1373 {
1374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1375 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001376 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001377 goto fail_timer;
1378 }
1379
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001380 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1381 WDI_SsrTimerCB,
1382 &gWDICb);
1383 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1384 {
1385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1386 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001387 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001388 goto fail_timer2;
1389 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001390 /* Initialize the WDI Pending Request Queue*/
1391 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1392 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1393 {
1394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1395 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001396 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001397 goto fail_pend_queue;
1398 }
1399
1400 /*Init WDI Pending Assoc Id Queue */
1401 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1402 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1403 {
1404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1405 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001406 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001407 goto fail_assoc_queue;
1408 }
1409
1410 /*Initialize the BSS sessions pending Queue */
1411 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1412 {
1413 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1414 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1415 {
1416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1417 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001418 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001419 goto fail_bss_queue;
1420 }
1421 }
1422
1423 /*Indicate the control block is sufficiently initialized for callbacks*/
1424 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1425
1426 /*------------------------------------------------------------------------
1427 Initialize the Data Path Utility Module
1428 ------------------------------------------------------------------------*/
1429 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1430 if ( WDI_STATUS_SUCCESS != wdiStatus )
1431 {
1432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1433 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001434 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001435 goto fail_dp_util_init;
1436 }
1437
1438 /* Init Set power state event */
1439 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001440 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001441 {
1442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1443 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001444 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001445 goto fail_power_event;
1446 }
1447
1448 /* Init WCTS action event */
1449 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001450 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001451 {
1452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1453 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001454 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001455 goto fail_wcts_event;
1456 }
1457
1458 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001459 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001460 ------------------------------------------------------------------------*/
1461 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1462 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001463 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001464 wctsCBs.wctsRxMsgCBData = &gWDICb;
1465
Jeff Johnsone7245742012-09-05 17:12:55 -07001466 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001467 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001468 WDI_CT_CHANNEL_SIZE,
1469 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001470
1471 if ( NULL == gWDICb.wctsHandle )
1472 {
1473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001474 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001475 goto fail_wcts_open;
1476 }
1477
1478 gWDICb.driverMode = (tDriverType)driverType;
1479 /* FTM mode not need to open Transport Driver */
1480 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001481 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001482 /*------------------------------------------------------------------------
1483 Open the Data Transport
1484 ------------------------------------------------------------------------*/
1485 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1486 {
1487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001488 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001489 goto fail_wdts_open;
1490 }
1491 }
1492
1493 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001494 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001495
1496 /*Send the context as a ptr to the global WDI Control Block*/
1497 *ppWDIGlobalCtx = &gWDICb;
1498
1499 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001500 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001501 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1502 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1503 return WDI_STATUS_SUCCESS;
1504
1505 /* ERROR handlers
1506 Undo everything that completed successfully */
1507
1508 fail_wdts_open:
1509 {
1510 wpt_status eventStatus;
1511
1512 /* Closing WCTS in this scenario is tricky since it has to close
1513 the SMD channel and then we get notified asynchronously when
1514 the channel has been closed. So we take some of the logic from
1515 the "normal" close procedure in WDI_Close()
1516 */
1517
1518 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001519 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001520 {
1521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001522 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001523 }
1524
1525 WCTS_CloseTransport(gWDICb.wctsHandle);
1526
1527 /* Wait for WCTS to close the control transport. If we were able
1528 to reset the event flag, then we'll wait for the event,
1529 otherwise we'll wait for a maximum amount of time required for
1530 the channel to be closed */
1531 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1532 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001533 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001534 WDI_WCTS_ACTION_TIMEOUT);
1535 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1536 {
1537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001538 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001539 }
1540 }
1541 else
1542 {
1543 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1544 }
1545 }
1546 fail_wcts_open:
1547 wpalEventDelete(&gWDICb.wctsActionEvent);
1548 fail_wcts_event:
1549 wpalEventDelete(&gWDICb.setPowerStateEvent);
1550 fail_power_event:
1551 WDI_DP_UtilsExit(&gWDICb);
1552 fail_dp_util_init:
1553 gWDICb.magic = 0;
1554 fail_bss_queue:
1555 /* entries 0 thru i-1 were successfully initialized */
1556 while (0 < i)
1557 {
1558 i--;
1559 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1560 }
1561 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1562 fail_assoc_queue:
1563 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1564 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001565 wpalTimerDelete(&gWDICb.ssrTimer);
1566 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001567 wpalTimerDelete(&gWDICb.wptResponseTimer);
1568 fail_timer:
1569 wpalMutexDelete(&gWDICb.wptMutex);
1570 fail_mutex:
1571 wpalClose(gWDICb.pPALContext);
1572 fail_wpalOpen:
1573 WDI_STATableClose(&gWDICb);
1574 fail_STATableInit:
1575 gWDIInitialized = eWLAN_PAL_FALSE;
1576
1577 return WDI_STATUS_E_FAILURE;
1578
1579}/*WDI_Init*/;
1580
1581/**
1582 @brief WDI_Start will be called when the upper MAC is ready to
1583 commence operation with the WLAN Device. Upon the call
1584 of this API the WLAN DAL will pack and send a HAL Start
1585 message to the lower RIVA sub-system if the SMD channel
1586 has been fully opened and the RIVA subsystem is up.
1587
1588 If the RIVA sub-system is not yet up and running DAL
1589 will queue the request for Open and will wait for the
1590 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001591 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001592
1593 WDI_Init must have been called.
1594
Jeff Johnsone7245742012-09-05 17:12:55 -07001595 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001596 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001597
Jeff Johnson295189b2012-06-20 16:38:30 -07001598 wdiStartRspCb: callback for passing back the response of
1599 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001600
Jeff Johnson295189b2012-06-20 16:38:30 -07001601 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001602 callback
1603
Jeff Johnson295189b2012-06-20 16:38:30 -07001604 @see WDI_Start
1605 @return Result of the function call
1606*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001607WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001608WDI_Start
1609(
1610 WDI_StartReqParamsType* pwdiStartParams,
1611 WDI_StartRspCb wdiStartRspCb,
1612 void* pUserData
1613)
1614{
1615 WDI_EventInfoType wdiEventData;
1616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1617
1618 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001619 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001620 ------------------------------------------------------------------------*/
1621 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1622 {
1623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1624 "WDI API call before module is initialized - Fail request");
1625
Jeff Johnsone7245742012-09-05 17:12:55 -07001626 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001627 }
1628
1629 /*------------------------------------------------------------------------
1630 Fill in Event data and post to the Main FSM
1631 ------------------------------------------------------------------------*/
1632 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001633 wdiEventData.pEventData = pwdiStartParams;
1634 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1635 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001636 wdiEventData.pUserData = pUserData;
1637
1638 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1639
1640}/*WDI_Start*/
1641
1642/**
1643 @brief WDI_Stop will be called when the upper MAC is ready to
1644 stop any operation with the WLAN Device. Upon the call
1645 of this API the WLAN DAL will pack and send a HAL Stop
1646 message to the lower RIVA sub-system if the DAL Core is
1647 in started state.
1648
1649 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001650
1651 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001652
1653 WDI_Start must have been called.
1654
Jeff Johnsone7245742012-09-05 17:12:55 -07001655 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001656 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001657
Jeff Johnson295189b2012-06-20 16:38:30 -07001658 wdiStopRspCb: callback for passing back the response of
1659 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001660
Jeff Johnson295189b2012-06-20 16:38:30 -07001661 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001662 callback
1663
Jeff Johnson295189b2012-06-20 16:38:30 -07001664 @see WDI_Start
1665 @return Result of the function call
1666*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001667WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001668WDI_Stop
1669(
1670 WDI_StopReqParamsType* pwdiStopParams,
1671 WDI_StopRspCb wdiStopRspCb,
1672 void* pUserData
1673)
1674{
1675 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001676 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1678
1679 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001680 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001681 ------------------------------------------------------------------------*/
1682 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1683 {
1684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1685 "WDI API call before module is initialized - Fail request");
1686
Jeff Johnsone7245742012-09-05 17:12:55 -07001687 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001688 }
1689
Jeff Johnson43971f52012-07-17 12:26:56 -07001690 /*Access to the global state must be locked before cleaning */
1691 wpalMutexAcquire(&pWDICtx->wptMutex);
1692
1693 /*Clear all pending request*/
1694 WDI_ClearPendingRequests(pWDICtx);
1695
1696 /*We have completed cleaning unlock now*/
1697 wpalMutexRelease(&pWDICtx->wptMutex);
1698
Jeff Johnson295189b2012-06-20 16:38:30 -07001699 /* Free the global variables */
1700 wpalMemoryFree(gpHostWlanFeatCaps);
1701 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001702 gpHostWlanFeatCaps = NULL;
1703 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001704
1705 /*------------------------------------------------------------------------
1706 Fill in Event data and post to the Main FSM
1707 ------------------------------------------------------------------------*/
1708 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001709 wdiEventData.pEventData = pwdiStopParams;
1710 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1711 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001712 wdiEventData.pUserData = pUserData;
1713
1714 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1715
1716}/*WDI_Stop*/
1717
1718
1719
1720/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001721 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001722 needs to interact with DAL. DAL will free its control
1723 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001724
1725 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001726
1727 WDI_Stop must have been called.
1728
1729 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001730
Jeff Johnson295189b2012-06-20 16:38:30 -07001731 @see WDI_Stop
1732 @return Result of the function call
1733*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001734WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001735WDI_Close
1736(
1737 void
1738)
1739{
1740 wpt_uint8 i;
1741 WDI_EventInfoType wdiEventData;
1742 wpt_status wptStatus;
1743 wpt_status eventStatus;
1744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1745
1746 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001747 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001748 ------------------------------------------------------------------------*/
1749 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1750 {
1751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1752 "WDI API call before module is initialized - Fail request");
1753
Jeff Johnsone7245742012-09-05 17:12:55 -07001754 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001755 }
1756
1757 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1758 (the control transport will be closed by the FSM and we'll want
1759 to wait until that completes)*/
1760 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001761 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 {
1763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001764 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001765 /* fall through and try to finish closing via the FSM */
1766 }
1767
1768 /*------------------------------------------------------------------------
1769 Fill in Event data and post to the Main FSM
1770 ------------------------------------------------------------------------*/
1771 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001772 wdiEventData.pEventData = NULL;
1773 wdiEventData.uEventDataSize = 0;
1774 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001775 wdiEventData.pUserData = NULL;
1776
1777 gWDIInitialized = eWLAN_PAL_FALSE;
1778
1779 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1780
1781 /*Wait for WCTS to close the control transport
1782 (but only if we were able to reset the event flag*/
1783 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1784 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001785 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001786 WDI_WCTS_ACTION_TIMEOUT);
1787 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1788 {
1789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001790 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001791 }
1792 }
1793
1794 /* Destroy the WCTS action event */
1795 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1796 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1797 {
1798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1799 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001800 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001801 }
1802
1803 /* Destroy the Set Power State event */
1804 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1805 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1806 {
1807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1808 "WDI Close failed to destroy an event");
1809
Jeff Johnsone7245742012-09-05 17:12:55 -07001810 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001811 }
1812
1813 /*------------------------------------------------------------------------
1814 Closes the Data Path Utility Module
1815 ------------------------------------------------------------------------*/
1816 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1817 {
1818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1819 "WDI Init failed to close the DP Util Module");
1820
Jeff Johnsone7245742012-09-05 17:12:55 -07001821 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001822 }
1823
1824 /*destroy the BSS sessions pending Queue */
1825 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1826 {
1827 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1828 }
1829
1830 /* destroy the WDI Pending Assoc Id Request Queue*/
1831 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1832
1833 /* destroy the WDI Pending Request Queue*/
1834 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001835
Jeff Johnson295189b2012-06-20 16:38:30 -07001836 /*destroy the response timer */
1837 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1838
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001839 /*destroy the SSR timer */
1840 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1841
Jeff Johnson295189b2012-06-20 16:38:30 -07001842 /*invalidate the main synchro mutex */
1843 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1844 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1845 {
1846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1847 "Failed to delete mutex %d", wptStatus);
1848 WDI_ASSERT(0);
1849 }
1850
1851 /*Clear control block. note that this will clear the "magic"
1852 which will inhibit all asynchronous callbacks*/
1853 WDI_CleanCB(&gWDICb);
1854
1855 return wptStatus;
1856
1857}/*WDI_Close*/
1858
1859/**
1860 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1861 This will do most of the WDI stop & close
1862 operations without doing any handshake with Riva
1863
1864 This will also make sure that the control transport
1865 will NOT be closed.
1866
1867 This request will not be queued.
1868
1869
1870 WDI_Start must have been called.
1871
1872 @param closeTransport: Close control channel if this is set
1873
1874 @return Result of the function call
1875*/
1876WDI_Status
1877WDI_Shutdown
1878(
1879 wpt_boolean closeTransport
1880)
1881{
1882 WDI_EventInfoType wdiEventData;
1883 wpt_status wptStatus;
1884 int i = 0;
1885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1886
1887 /*------------------------------------------------------------------------
1888 Sanity Check
1889 ------------------------------------------------------------------------*/
1890 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1891 {
1892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1893 "WDI API call before module is initialized - Fail request");
1894
1895 return WDI_STATUS_E_NOT_ALLOWED;
1896 }
1897
1898 /*------------------------------------------------------------------------
1899 Fill in Event data and post to the Main FSM
1900 ------------------------------------------------------------------------*/
1901 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1902 wdiEventData.pEventData = NULL;
1903 wdiEventData.uEventDataSize = 0;
1904
1905 /* Shutdown will not be queued, if the state is busy timer will be
1906 * stopped & this message will be processed.*/
1907 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1908 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1909 {
1910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001911 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001912 }
1913 /* Destroy the Set Power State event */
1914 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1915 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1916 {
1917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1918 "WDI Close failed to destroy an event");
1919
1920 WDI_ASSERT(0);
1921 }
1922 /*------------------------------------------------------------------------
1923 Closes the Data Path Utility Module
1924 ------------------------------------------------------------------------*/
1925 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1926 {
1927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1928 "WDI Init failed to close the DP Util Module");
1929
1930 WDI_ASSERT(0);
1931 }
1932 if ( closeTransport )
1933 {
1934 /* Close control transport, called from module unload */
1935 WCTS_CloseTransport(gWDICb.wctsHandle);
1936 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001937 else
1938 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001939 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001940 the pending messages in the transport queue */
1941 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1942 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001943 /*destroy the BSS sessions pending Queue */
1944 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1945 {
1946 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1947 }
1948
1949 /* destroy the WDI Pending Assoc Id Request Queue*/
1950 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1951 /* destroy the WDI Pending Request Queue*/
1952 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1953 /*destroy the response timer */
1954 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001955 /*destroy the SSR timer */
1956 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001957
1958 /*invalidate the main synchro mutex */
1959 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1960 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1961 {
1962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001963 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001964 WDI_ASSERT(0);
1965 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001966 /* Free the global variables */
1967 wpalMemoryFree(gpHostWlanFeatCaps);
1968 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001969 gpHostWlanFeatCaps = NULL;
1970 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001971 /*Clear control block. note that this will clear the "magic"
1972 which will inhibit all asynchronous callbacks*/
1973 WDI_CleanCB(&gWDICb);
1974 return wptStatus;
1975
1976}/*WDI_Shutdown*/
1977
1978
Jeff Johnsone7245742012-09-05 17:12:55 -07001979/*========================================================================
1980
Jeff Johnson295189b2012-06-20 16:38:30 -07001981 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001982
Jeff Johnson295189b2012-06-20 16:38:30 -07001983==========================================================================*/
1984
1985/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001986 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001987 the WLAN Device to get ready for a scan procedure. Upon
1988 the call of this API the WLAN DAL will pack and send a
1989 HAL Init Scan request message to the lower RIVA
1990 sub-system if DAL is in state STARTED.
1991
1992 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001993 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001994
1995 WDI_Start must have been called.
1996
1997 @param wdiInitScanParams: the init scan parameters as specified
1998 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001999
Jeff Johnson295189b2012-06-20 16:38:30 -07002000 wdiInitScanRspCb: callback for passing back the response
2001 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002002
Jeff Johnson295189b2012-06-20 16:38:30 -07002003 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002004 callback
2005
Jeff Johnson295189b2012-06-20 16:38:30 -07002006 @see WDI_Start
2007 @return Result of the function call
2008*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002009WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002010WDI_InitScanReq
2011(
2012 WDI_InitScanReqParamsType* pwdiInitScanParams,
2013 WDI_InitScanRspCb wdiInitScanRspCb,
2014 void* pUserData
2015)
2016{
2017 WDI_EventInfoType wdiEventData;
2018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2019
2020 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002021 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002022 ------------------------------------------------------------------------*/
2023 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2024 {
2025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2026 "WDI API call before module is initialized - Fail request");
2027
Jeff Johnsone7245742012-09-05 17:12:55 -07002028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002029 }
2030
2031 /*------------------------------------------------------------------------
2032 Fill in Event data and post to the Main FSM
2033 ------------------------------------------------------------------------*/
2034 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002035 wdiEventData.pEventData = pwdiInitScanParams;
2036 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2037 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002038 wdiEventData.pUserData = pUserData;
2039
2040 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2041
2042}/*WDI_InitScanReq*/
2043
2044/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002045 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002046 wishes to change the Scan channel on the WLAN Device.
2047 Upon the call of this API the WLAN DAL will pack and
2048 send a HAL Start Scan request message to the lower RIVA
2049 sub-system if DAL is in state STARTED.
2050
2051 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002052 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002053
2054 WDI_InitScanReq must have been called.
2055
Jeff Johnsone7245742012-09-05 17:12:55 -07002056 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002057 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002058
Jeff Johnson295189b2012-06-20 16:38:30 -07002059 wdiStartScanRspCb: callback for passing back the
2060 response of the start scan operation received from the
2061 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002062
Jeff Johnson295189b2012-06-20 16:38:30 -07002063 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002064 callback
2065
Jeff Johnson295189b2012-06-20 16:38:30 -07002066 @see WDI_InitScanReq
2067 @return Result of the function call
2068*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002069WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002070WDI_StartScanReq
2071(
2072 WDI_StartScanReqParamsType* pwdiStartScanParams,
2073 WDI_StartScanRspCb wdiStartScanRspCb,
2074 void* pUserData
2075)
2076{
2077 WDI_EventInfoType wdiEventData;
2078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2079
2080 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002081 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002082 ------------------------------------------------------------------------*/
2083 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2084 {
2085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2086 "WDI API call before module is initialized - Fail request");
2087
Jeff Johnsone7245742012-09-05 17:12:55 -07002088 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002089 }
2090
2091 /*------------------------------------------------------------------------
2092 Fill in Event data and post to the Main FSM
2093 ------------------------------------------------------------------------*/
2094 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002095 wdiEventData.pEventData = pwdiStartScanParams;
2096 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2097 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002098 wdiEventData.pUserData = pUserData;
2099
2100 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2101
2102}/*WDI_StartScanReq*/
2103
2104
2105/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002106 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002107 wants to end scanning for a particular channel that it
2108 had set before by calling Scan Start on the WLAN Device.
2109 Upon the call of this API the WLAN DAL will pack and
2110 send a HAL End Scan request message to the lower RIVA
2111 sub-system if DAL is in state STARTED.
2112
2113 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002114 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002115
2116 WDI_StartScanReq must have been called.
2117
Jeff Johnsone7245742012-09-05 17:12:55 -07002118 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002119 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002120
Jeff Johnson295189b2012-06-20 16:38:30 -07002121 wdiEndScanRspCb: callback for passing back the response
2122 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002123
Jeff Johnson295189b2012-06-20 16:38:30 -07002124 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002125 callback
2126
Jeff Johnson295189b2012-06-20 16:38:30 -07002127 @see WDI_StartScanReq
2128 @return Result of the function call
2129*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002130WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002131WDI_EndScanReq
2132(
2133 WDI_EndScanReqParamsType* pwdiEndScanParams,
2134 WDI_EndScanRspCb wdiEndScanRspCb,
2135 void* pUserData
2136)
2137{
2138 WDI_EventInfoType wdiEventData;
2139 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2140
2141 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002142 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002143 ------------------------------------------------------------------------*/
2144 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2145 {
2146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2147 "WDI API call before module is initialized - Fail request");
2148
Jeff Johnsone7245742012-09-05 17:12:55 -07002149 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002150 }
2151
2152 /*------------------------------------------------------------------------
2153 Fill in Event data and post to the Main FSM
2154 ------------------------------------------------------------------------*/
2155 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002156 wdiEventData.pEventData = pwdiEndScanParams;
2157 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2158 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002159 wdiEventData.pUserData = pUserData;
2160
2161 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2162
2163}/*WDI_EndScanReq*/
2164
2165
2166/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002167 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002168 completed the scan process on the WLAN Device. Upon the
2169 call of this API the WLAN DAL will pack and send a HAL
2170 Finish Scan Request request message to the lower RIVA
2171 sub-system if DAL is in state STARTED.
2172
2173 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002174 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002175
2176 WDI_InitScanReq must have been called.
2177
Jeff Johnsone7245742012-09-05 17:12:55 -07002178 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002179 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002180
Jeff Johnson295189b2012-06-20 16:38:30 -07002181 wdiFinishScanRspCb: callback for passing back the
2182 response of the finish scan operation received from the
2183 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002184
Jeff Johnson295189b2012-06-20 16:38:30 -07002185 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002186 callback
2187
Jeff Johnson295189b2012-06-20 16:38:30 -07002188 @see WDI_InitScanReq
2189 @return Result of the function call
2190*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002191WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002192WDI_FinishScanReq
2193(
2194 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2195 WDI_FinishScanRspCb wdiFinishScanRspCb,
2196 void* pUserData
2197)
2198{
2199 WDI_EventInfoType wdiEventData;
2200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2201
2202 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002203 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002204 ------------------------------------------------------------------------*/
2205 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2206 {
2207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2208 "WDI API call before module is initialized - Fail request");
2209
Jeff Johnsone7245742012-09-05 17:12:55 -07002210 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002211 }
2212
2213 /*------------------------------------------------------------------------
2214 Fill in Event data and post to the Main FSM
2215 ------------------------------------------------------------------------*/
2216 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002217 wdiEventData.pEventData = pwdiFinishScanParams;
2218 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2219 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002220 wdiEventData.pUserData = pUserData;
2221
2222 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2223
2224}/*WDI_FinishScanReq*/
2225
Jeff Johnsone7245742012-09-05 17:12:55 -07002226/*========================================================================
2227
Jeff Johnson295189b2012-06-20 16:38:30 -07002228 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002229
Jeff Johnson295189b2012-06-20 16:38:30 -07002230==========================================================================*/
2231
2232/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002233 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 to start an association procedure to a BSS. Upon the
2235 call of this API the WLAN DAL will pack and send a HAL
2236 Join request message to the lower RIVA sub-system if
2237 DAL is in state STARTED.
2238
2239 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002240 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002241
2242 WDI_Start must have been called.
2243
Jeff Johnsone7245742012-09-05 17:12:55 -07002244 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002245 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002246
Jeff Johnson295189b2012-06-20 16:38:30 -07002247 wdiJoinRspCb: callback for passing back the response of
2248 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002249
Jeff Johnson295189b2012-06-20 16:38:30 -07002250 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002251 callback
2252
Jeff Johnson295189b2012-06-20 16:38:30 -07002253 @see WDI_Start
2254 @return Result of the function call
2255*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002256WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002257WDI_JoinReq
2258(
2259 WDI_JoinReqParamsType* pwdiJoinParams,
2260 WDI_JoinRspCb wdiJoinRspCb,
2261 void* pUserData
2262)
2263{
2264 WDI_EventInfoType wdiEventData;
2265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2266
2267 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002268 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002269 ------------------------------------------------------------------------*/
2270 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2271 {
2272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2273 "WDI API call before module is initialized - Fail request");
2274
Jeff Johnsone7245742012-09-05 17:12:55 -07002275 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002276 }
2277
2278 /*------------------------------------------------------------------------
2279 Fill in Event data and post to the Main FSM
2280 ------------------------------------------------------------------------*/
2281 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002282 wdiEventData.pEventData = pwdiJoinParams;
2283 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2284 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002285 wdiEventData.pUserData = pUserData;
2286
2287 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2288
2289}/*WDI_JoinReq*/
2290
2291/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002292 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002293 wishes to configure the newly acquired or in process of
2294 being acquired BSS to the HW . Upon the call of this API
2295 the WLAN DAL will pack and send a HAL Config BSS request
2296 message to the lower RIVA sub-system if DAL is in state
2297 STARTED.
2298
2299 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002300 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002301
2302 WDI_JoinReq must have been called.
2303
Jeff Johnsone7245742012-09-05 17:12:55 -07002304 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002305 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002306
Jeff Johnson295189b2012-06-20 16:38:30 -07002307 wdiConfigBSSRspCb: callback for passing back the
2308 response of the config BSS operation received from the
2309 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002310
Jeff Johnson295189b2012-06-20 16:38:30 -07002311 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002312 callback
2313
Jeff Johnson295189b2012-06-20 16:38:30 -07002314 @see WDI_JoinReq
2315 @return Result of the function call
2316*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002317WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002318WDI_ConfigBSSReq
2319(
2320 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2321 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2322 void* pUserData
2323)
2324{
2325 WDI_EventInfoType wdiEventData;
2326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2327
2328 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002329 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002330 ------------------------------------------------------------------------*/
2331 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2332 {
2333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2334 "WDI API call before module is initialized - Fail request");
2335
Jeff Johnsone7245742012-09-05 17:12:55 -07002336 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002337 }
2338
2339 /*------------------------------------------------------------------------
2340 Fill in Event data and post to the Main FSM
2341 ------------------------------------------------------------------------*/
2342 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002343 wdiEventData.pEventData = pwdiConfigBSSParams;
2344 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2345 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002346 wdiEventData.pUserData = pUserData;
2347
2348 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2349
2350}/*WDI_ConfigBSSReq*/
2351
2352/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002353 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002354 disassociating from the BSS and wishes to notify HW.
2355 Upon the call of this API the WLAN DAL will pack and
2356 send a HAL Del BSS request message to the lower RIVA
2357 sub-system if DAL is in state STARTED.
2358
2359 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002360 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002361
2362 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2363
Jeff Johnsone7245742012-09-05 17:12:55 -07002364 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002365 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002366
Jeff Johnson295189b2012-06-20 16:38:30 -07002367 wdiDelBSSRspCb: callback for passing back the response
2368 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002369
Jeff Johnson295189b2012-06-20 16:38:30 -07002370 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002371 callback
2372
2373 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002374 @return Result of the function call
2375*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002376WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002377WDI_DelBSSReq
2378(
2379 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2380 WDI_DelBSSRspCb wdiDelBSSRspCb,
2381 void* pUserData
2382)
2383{
2384 WDI_EventInfoType wdiEventData;
2385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2386
2387 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002388 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002389 ------------------------------------------------------------------------*/
2390 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2391 {
2392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2393 "WDI API call before module is initialized - Fail request");
2394
Jeff Johnsone7245742012-09-05 17:12:55 -07002395 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002396 }
2397
2398 /*------------------------------------------------------------------------
2399 Fill in Event data and post to the Main FSM
2400 ------------------------------------------------------------------------*/
2401 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002402 wdiEventData.pEventData = pwdiDelBSSParams;
2403 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2404 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002405 wdiEventData.pUserData = pUserData;
2406
2407 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2408
2409}/*WDI_DelBSSReq*/
2410
2411/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002412 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002413 associated to a BSS and wishes to configure HW for
2414 associated state. Upon the call of this API the WLAN DAL
2415 will pack and send a HAL Post Assoc request message to
2416 the lower RIVA sub-system if DAL is in state STARTED.
2417
2418 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002419 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002420
2421 WDI_JoinReq must have been called.
2422
2423 @param wdiPostAssocReqParams: the assoc parameters as specified
2424 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002425
Jeff Johnson295189b2012-06-20 16:38:30 -07002426 wdiPostAssocRspCb: callback for passing back the
2427 response of the post assoc operation received from the
2428 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002429
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002431 callback
2432
Jeff Johnson295189b2012-06-20 16:38:30 -07002433 @see WDI_JoinReq
2434 @return Result of the function call
2435*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002436WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002437WDI_PostAssocReq
2438(
2439 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2440 WDI_PostAssocRspCb wdiPostAssocRspCb,
2441 void* pUserData
2442)
2443{
2444 WDI_EventInfoType wdiEventData;
2445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2446
2447 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002448 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002449 ------------------------------------------------------------------------*/
2450 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2451 {
2452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2453 "WDI API call before module is initialized - Fail request");
2454
Jeff Johnsone7245742012-09-05 17:12:55 -07002455 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002456 }
2457
2458 /*------------------------------------------------------------------------
2459 Fill in Event data and post to the Main FSM
2460 ------------------------------------------------------------------------*/
2461 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002462 wdiEventData.pEventData = pwdiPostAssocReqParams;
2463 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2464 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002465 wdiEventData.pUserData = pUserData;
2466
2467 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2468
2469}/*WDI_PostAssocReq*/
2470
2471/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002472 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002473 association with another STA has ended and the station
2474 must be deleted from HW. Upon the call of this API the
2475 WLAN DAL will pack and send a HAL Del STA request
2476 message to the lower RIVA sub-system if DAL is in state
2477 STARTED.
2478
2479 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002480 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002481
2482 WDI_PostAssocReq must have been called.
2483
Jeff Johnsone7245742012-09-05 17:12:55 -07002484 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002485 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002486
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 wdiDelSTARspCb: callback for passing back the response
2488 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002489
Jeff Johnson295189b2012-06-20 16:38:30 -07002490 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002491 callback
2492
Jeff Johnson295189b2012-06-20 16:38:30 -07002493 @see WDI_PostAssocReq
2494 @return Result of the function call
2495*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002496WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002497WDI_DelSTAReq
2498(
2499 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2500 WDI_DelSTARspCb wdiDelSTARspCb,
2501 void* pUserData
2502)
2503{
2504 WDI_EventInfoType wdiEventData;
2505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2506
2507 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002508 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002509 ------------------------------------------------------------------------*/
2510 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2511 {
2512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2513 "WDI API call before module is initialized - Fail request");
2514
Jeff Johnsone7245742012-09-05 17:12:55 -07002515 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002516 }
2517
2518 /*------------------------------------------------------------------------
2519 Fill in Event data and post to the Main FSM
2520 ------------------------------------------------------------------------*/
2521 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002522 wdiEventData.pEventData = pwdiDelSTAParams;
2523 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2524 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002525 wdiEventData.pUserData = pUserData;
2526
2527 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2528
2529}/*WDI_DelSTAReq*/
2530
Jeff Johnsone7245742012-09-05 17:12:55 -07002531/*========================================================================
2532
Jeff Johnson295189b2012-06-20 16:38:30 -07002533 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002534
Jeff Johnson295189b2012-06-20 16:38:30 -07002535==========================================================================*/
2536
2537/**
2538 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2539 install a BSS encryption key on the HW. Upon the call of this
2540 API the WLAN DAL will pack and send a Set BSS Key request
2541 message to the lower RIVA sub-system if DAL is in state
2542 STARTED.
2543
2544 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002545 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002546
2547 WDI_PostAssocReq must have been called.
2548
Jeff Johnsone7245742012-09-05 17:12:55 -07002549 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002550 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002551
Jeff Johnson295189b2012-06-20 16:38:30 -07002552 wdiSetBSSKeyRspCb: callback for passing back the
2553 response of the set BSS Key operation received from the
2554 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002555
Jeff Johnson295189b2012-06-20 16:38:30 -07002556 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002557 callback
2558
Jeff Johnson295189b2012-06-20 16:38:30 -07002559 @see WDI_PostAssocReq
2560 @return Result of the function call
2561*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002562WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002563WDI_SetBSSKeyReq
2564(
2565 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2566 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2567 void* pUserData
2568)
2569{
2570 WDI_EventInfoType wdiEventData;
2571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2572
2573 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002574 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002575 ------------------------------------------------------------------------*/
2576 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2577 {
2578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2579 "WDI API call before module is initialized - Fail request");
2580
Jeff Johnsone7245742012-09-05 17:12:55 -07002581 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002582 }
2583
2584 /*------------------------------------------------------------------------
2585 Fill in Event data and post to the Main FSM
2586 ------------------------------------------------------------------------*/
2587 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002588 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2589 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2590 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 wdiEventData.pUserData = pUserData;
2592
2593 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2594
2595}/*WDI_SetBSSKeyReq*/
2596
2597/**
2598 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2599 uninstall a BSS key from HW. Upon the call of this API the
2600 WLAN DAL will pack and send a HAL Remove BSS Key request
2601 message to the lower RIVA sub-system if DAL is in state
2602 STARTED.
2603
2604 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002605 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002606
2607 WDI_SetBSSKeyReq must have been called.
2608
Jeff Johnsone7245742012-09-05 17:12:55 -07002609 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002610 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002611
Jeff Johnson295189b2012-06-20 16:38:30 -07002612 wdiRemoveBSSKeyRspCb: callback for passing back the
2613 response of the remove BSS key operation received from
2614 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002615
Jeff Johnson295189b2012-06-20 16:38:30 -07002616 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002617 callback
2618
Jeff Johnson295189b2012-06-20 16:38:30 -07002619 @see WDI_SetBSSKeyReq
2620 @return Result of the function call
2621*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002622WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002623WDI_RemoveBSSKeyReq
2624(
2625 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2626 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2627 void* pUserData
2628)
2629{
2630 WDI_EventInfoType wdiEventData;
2631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2632
2633 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002634 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002635 ------------------------------------------------------------------------*/
2636 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2637 {
2638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2639 "WDI API call before module is initialized - Fail request");
2640
Jeff Johnsone7245742012-09-05 17:12:55 -07002641 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002642 }
2643
2644 /*------------------------------------------------------------------------
2645 Fill in Event data and post to the Main FSM
2646 ------------------------------------------------------------------------*/
2647 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2649 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2650 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002651 wdiEventData.pUserData = pUserData;
2652
2653 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2654
2655}/*WDI_RemoveBSSKeyReq*/
2656
2657
2658/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002659 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002660 ready to install a STA(ast) encryption key in HW. Upon
2661 the call of this API the WLAN DAL will pack and send a
2662 HAL Set STA Key request message to the lower RIVA
2663 sub-system if DAL is in state STARTED.
2664
2665 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002666 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002667
2668 WDI_PostAssocReq must have been called.
2669
Jeff Johnsone7245742012-09-05 17:12:55 -07002670 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002671 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002672
Jeff Johnson295189b2012-06-20 16:38:30 -07002673 wdiSetSTAKeyRspCb: callback for passing back the
2674 response of the set STA key operation received from the
2675 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002676
Jeff Johnson295189b2012-06-20 16:38:30 -07002677 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002678 callback
2679
Jeff Johnson295189b2012-06-20 16:38:30 -07002680 @see WDI_PostAssocReq
2681 @return Result of the function call
2682*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002683WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002684WDI_SetSTAKeyReq
2685(
2686 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2687 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2688 void* pUserData
2689)
2690{
2691 WDI_EventInfoType wdiEventData;
2692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2693
2694 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002695 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002696 ------------------------------------------------------------------------*/
2697 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2698 {
2699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2700 "WDI API call before module is initialized - Fail request");
2701
Jeff Johnsone7245742012-09-05 17:12:55 -07002702 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002703 }
2704
2705 /*------------------------------------------------------------------------
2706 Fill in Event data and post to the Main FSM
2707 ------------------------------------------------------------------------*/
2708 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002709 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2710 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2711 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002712 wdiEventData.pUserData = pUserData;
2713
2714 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2715
2716}/*WDI_SetSTAKeyReq*/
2717
2718
2719/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002720 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002721 wants to uninstall a previously set STA key in HW. Upon
2722 the call of this API the WLAN DAL will pack and send a
2723 HAL Remove STA Key request message to the lower RIVA
2724 sub-system if DAL is in state STARTED.
2725
2726 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002727 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002728
2729 WDI_SetSTAKeyReq must have been called.
2730
Jeff Johnsone7245742012-09-05 17:12:55 -07002731 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002732 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002733
Jeff Johnson295189b2012-06-20 16:38:30 -07002734 wdiRemoveSTAKeyRspCb: callback for passing back the
2735 response of the remove STA key operation received from
2736 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002737
Jeff Johnson295189b2012-06-20 16:38:30 -07002738 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002739 callback
2740
Jeff Johnson295189b2012-06-20 16:38:30 -07002741 @see WDI_SetSTAKeyReq
2742 @return Result of the function call
2743*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002744WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002745WDI_RemoveSTAKeyReq
2746(
2747 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2748 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2749 void* pUserData
2750)
2751{
2752 WDI_EventInfoType wdiEventData;
2753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2754
2755 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002756 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002757 ------------------------------------------------------------------------*/
2758 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2759 {
2760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2761 "WDI API call before module is initialized - Fail request");
2762
Jeff Johnsone7245742012-09-05 17:12:55 -07002763 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002764 }
2765
2766 /*------------------------------------------------------------------------
2767 Fill in Event data and post to the Main FSM
2768 ------------------------------------------------------------------------*/
2769 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002770 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2771 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2772 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002773 wdiEventData.pUserData = pUserData;
2774
2775 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2776
2777}/*WDI_RemoveSTAKeyReq*/
2778
2779
2780/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002781 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002782 wants to install a STA Bcast encryption key on the HW.
2783 Upon the call of this API the WLAN DAL will pack and
2784 send a HAL Start request message to the lower RIVA
2785 sub-system if DAL is in state STARTED.
2786
2787 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002788 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002789
2790 WDI_PostAssocReq must have been called.
2791
Jeff Johnsone7245742012-09-05 17:12:55 -07002792 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002793 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002794
Jeff Johnson295189b2012-06-20 16:38:30 -07002795 wdiSetSTABcastKeyRspCb: callback for passing back the
2796 response of the set BSS Key operation received from the
2797 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002798
Jeff Johnson295189b2012-06-20 16:38:30 -07002799 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002800 callback
2801
Jeff Johnson295189b2012-06-20 16:38:30 -07002802 @see WDI_PostAssocReq
2803 @return Result of the function call
2804*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002805WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002806WDI_SetSTABcastKeyReq
2807(
2808 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2809 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2810 void* pUserData
2811)
2812
2813{
2814 WDI_EventInfoType wdiEventData;
2815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2816
2817 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002818 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002819 ------------------------------------------------------------------------*/
2820 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2821 {
2822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2823 "WDI API call before module is initialized - Fail request");
2824
Jeff Johnsone7245742012-09-05 17:12:55 -07002825 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002826 }
2827
2828 /*------------------------------------------------------------------------
2829 Fill in Event data and post to the Main FSM
2830 ------------------------------------------------------------------------*/
2831 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002832 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2833 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2834 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002835 wdiEventData.pUserData = pUserData;
2836
2837 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2838
2839}/*WDI_SetSTABcastKeyReq*/
2840
2841/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002842 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 MAC wants to uninstall a STA Bcast key from HW. Upon the
2844 call of this API the WLAN DAL will pack and send a HAL
2845 Remove STA Bcast Key request message to the lower RIVA
2846 sub-system if DAL is in state STARTED.
2847
2848 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002849 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002850
2851 WDI_SetSTABcastKeyReq must have been called.
2852
Jeff Johnsone7245742012-09-05 17:12:55 -07002853 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002854 parameters as specified by the Device
2855 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002856
Jeff Johnson295189b2012-06-20 16:38:30 -07002857 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2858 response of the remove STA Bcast key operation received
2859 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002860
Jeff Johnson295189b2012-06-20 16:38:30 -07002861 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002862 callback
2863
Jeff Johnson295189b2012-06-20 16:38:30 -07002864 @see WDI_SetSTABcastKeyReq
2865 @return Result of the function call
2866*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002867WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002868WDI_RemoveSTABcastKeyReq
2869(
2870 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2871 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2872 void* pUserData
2873)
2874{
2875 WDI_EventInfoType wdiEventData;
2876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2877
2878 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002879 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002880 ------------------------------------------------------------------------*/
2881 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2882 {
2883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2884 "WDI API call before module is initialized - Fail request");
2885
Jeff Johnsone7245742012-09-05 17:12:55 -07002886 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002887 }
2888
2889 /*------------------------------------------------------------------------
2890 Fill in Event data and post to the Main FSM
2891 ------------------------------------------------------------------------*/
2892 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002893 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2894 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2895 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002896 wdiEventData.pUserData = pUserData;
2897
2898 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2899
2900}/*WDI_RemoveSTABcastKeyReq*/
2901
2902/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002903 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002904 MAC wants to set Max Tx Power to HW. Upon the
2905 call of this API the WLAN DAL will pack and send a HAL
2906 Remove STA Bcast Key request message to the lower RIVA
2907 sub-system if DAL is in state STARTED.
2908
2909 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002910 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002911
2912 WDI_SetSTABcastKeyReq must have been called.
2913
Jeff Johnsone7245742012-09-05 17:12:55 -07002914 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002915 parameters as specified by the Device
2916 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002917
Jeff Johnson295189b2012-06-20 16:38:30 -07002918 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2919 response of the remove STA Bcast key operation received
2920 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002921
Jeff Johnson295189b2012-06-20 16:38:30 -07002922 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002923 callback
2924
Jeff Johnson295189b2012-06-20 16:38:30 -07002925 @see WDI_SetMaxTxPowerReq
2926 @return Result of the function call
2927*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002928WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002929WDI_SetMaxTxPowerReq
2930(
2931 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2932 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2933 void* pUserData
2934)
2935{
2936 WDI_EventInfoType wdiEventData;
2937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2938
2939 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002940 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002941 ------------------------------------------------------------------------*/
2942 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2943 {
2944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2945 "WDI API call before module is initialized - Fail request");
2946
Jeff Johnsone7245742012-09-05 17:12:55 -07002947 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002948 }
2949
2950 /*------------------------------------------------------------------------
2951 Fill in Event data and post to the Main FSM
2952 ------------------------------------------------------------------------*/
2953 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002954 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2955 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2956 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002957 wdiEventData.pUserData = pUserData;
2958
2959 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2960}
2961
schang86c22c42013-03-13 18:41:24 -07002962/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07002963 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
2964 MAC wants to set Max Tx Power to HW for specific band.
2965
2966 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
2967
2968 wdiReqStatusCb: callback for passing back the
2969 response msg from the device
2970
2971 pUserData: user data will be passed back with the
2972 callback
2973
2974 @see WDI_SetMaxTxPowerPerBandReq
2975 @return Result of the function call
2976*/
2977WDI_Status
2978WDI_SetMaxTxPowerPerBandReq
2979(
2980 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
2981 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
2982 void* pUserData
2983)
2984{
2985 WDI_EventInfoType wdiEventData;
2986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2987
2988 /*------------------------------------------------------------------------
2989 Sanity Check
2990 ------------------------------------------------------------------------*/
2991 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2992 {
2993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2994 "WDI API call before module is initialized - Fail request");
2995
2996 return WDI_STATUS_E_NOT_ALLOWED;
2997 }
2998
2999 /*------------------------------------------------------------------------
3000 Fill in Event data and post to the Main FSM
3001 ------------------------------------------------------------------------*/
3002 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3003 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3004 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3005 wdiEventData.pCBfnc = wdiReqStatusCb;
3006 wdiEventData.pUserData = pUserData;
3007
3008 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3009}
3010
3011/**
schang86c22c42013-03-13 18:41:24 -07003012 @brief WDI_SetTxPowerReq will be called when the upper
3013 MAC wants to set Tx Power to HW.
3014 In state BUSY this request will be queued. Request won't
3015 be allowed in any other state.
3016
3017
3018 @param pwdiSetTxPowerParams: set TS Power parameters
3019 BSSID and target TX Power with dbm included
3020
3021 wdiReqStatusCb: callback for passing back the response
3022
3023 pUserData: user data will be passed back with the
3024 callback
3025
3026 @return Result of the function call
3027*/
3028WDI_Status
3029WDI_SetTxPowerReq
3030(
3031 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3032 WDA_SetTxPowerRspCb wdiReqStatusCb,
3033 void* pUserData
3034)
3035{
3036 WDI_EventInfoType wdiEventData;
3037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3038
3039 /*------------------------------------------------------------------------
3040 Sanity Check
3041 ------------------------------------------------------------------------*/
3042 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3043 {
3044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3045 "WDI API call before module is initialized - Fail request");
3046
3047 return WDI_STATUS_E_NOT_ALLOWED;
3048 }
3049
3050 /*------------------------------------------------------------------------
3051 Fill in Event data and post to the Main FSM
3052 ------------------------------------------------------------------------*/
3053 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3054 wdiEventData.pEventData = pwdiSetTxPowerParams;
3055 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3056 wdiEventData.pCBfnc = wdiReqStatusCb;
3057 wdiEventData.pUserData = pUserData;
3058
3059 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3060}
3061
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003062#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003063WDI_Status
3064WDI_TSMStatsReq
3065(
3066 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3067 WDI_TsmRspCb wdiReqStatusCb,
3068 void* pUserData
3069)
3070{
3071 WDI_EventInfoType wdiEventData;
3072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003073 /*------------------------------------------------------------------------
3074 Sanity Check
3075 ------------------------------------------------------------------------*/
3076 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3077 {
3078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3079 "WDI API call before module is initialized - Fail request");
3080
3081 return WDI_STATUS_E_NOT_ALLOWED;
3082 }
3083
3084 /*------------------------------------------------------------------------
3085 Fill in Event data and post to the Main FSM
3086 ------------------------------------------------------------------------*/
3087 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3088 wdiEventData.pEventData = pwdiTsmReqParams;
3089 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3090 wdiEventData.pCBfnc = wdiReqStatusCb;
3091 wdiEventData.pUserData = pUserData;
3092
3093 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3094
3095}
3096#endif
3097
3098/*========================================================================
3099
3100 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003101
Jeff Johnson295189b2012-06-20 16:38:30 -07003102==========================================================================*/
3103
3104/**
3105 @brief WDI_AddTSReq will be called when the upper MAC to inform
3106 the device of a successful add TSpec negotiation. HW
3107 needs to receive the TSpec Info from the UMAC in order
3108 to configure properly the QoS data traffic. Upon the
3109 call of this API the WLAN DAL will pack and send a HAL
3110 Add TS request message to the lower RIVA sub-system if
3111 DAL is in state STARTED.
3112
3113 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003114 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003115
3116 WDI_PostAssocReq must have been called.
3117
3118 @param wdiAddTsReqParams: the add TS parameters as specified by
3119 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003120
Jeff Johnson295189b2012-06-20 16:38:30 -07003121 wdiAddTsRspCb: callback for passing back the response of
3122 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003123
Jeff Johnson295189b2012-06-20 16:38:30 -07003124 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003125 callback
3126
Jeff Johnson295189b2012-06-20 16:38:30 -07003127 @see WDI_PostAssocReq
3128 @return Result of the function call
3129*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003130WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003131WDI_AddTSReq
3132(
3133 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3134 WDI_AddTsRspCb wdiAddTsRspCb,
3135 void* pUserData
3136)
3137{
3138 WDI_EventInfoType wdiEventData;
3139 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3140
3141 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003142 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003143 ------------------------------------------------------------------------*/
3144 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3145 {
3146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3147 "WDI API call before module is initialized - Fail request");
3148
Jeff Johnsone7245742012-09-05 17:12:55 -07003149 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003150 }
3151
3152 /*------------------------------------------------------------------------
3153 Fill in Event data and post to the Main FSM
3154 ------------------------------------------------------------------------*/
3155 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003156 wdiEventData.pEventData = pwdiAddTsReqParams;
3157 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3158 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003159 wdiEventData.pUserData = pUserData;
3160
3161 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3162
3163}/*WDI_AddTSReq*/
3164
3165
3166
3167/**
3168 @brief WDI_DelTSReq will be called when the upper MAC has ended
3169 admission on a specific AC. This is to inform HW that
3170 QoS traffic parameters must be rest. Upon the call of
3171 this API the WLAN DAL will pack and send a HAL Del TS
3172 request message to the lower RIVA sub-system if DAL is
3173 in state STARTED.
3174
3175 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003176 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003177
3178 WDI_AddTSReq must have been called.
3179
3180 @param wdiDelTsReqParams: the del TS parameters as specified by
3181 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003182
Jeff Johnson295189b2012-06-20 16:38:30 -07003183 wdiDelTsRspCb: callback for passing back the response of
3184 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003185
Jeff Johnson295189b2012-06-20 16:38:30 -07003186 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003187 callback
3188
Jeff Johnson295189b2012-06-20 16:38:30 -07003189 @see WDI_AddTSReq
3190 @return Result of the function call
3191*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003192WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003193WDI_DelTSReq
3194(
3195 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3196 WDI_DelTsRspCb wdiDelTsRspCb,
3197 void* pUserData
3198)
3199{
3200 WDI_EventInfoType wdiEventData;
3201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3202
3203 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003204 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003205 ------------------------------------------------------------------------*/
3206 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3207 {
3208 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3209 "WDI API call before module is initialized - Fail request");
3210
Jeff Johnsone7245742012-09-05 17:12:55 -07003211 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003212 }
3213
3214 /*------------------------------------------------------------------------
3215 Fill in Event data and post to the Main FSM
3216 ------------------------------------------------------------------------*/
3217 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003218 wdiEventData.pEventData = pwdiDelTsReqParams;
3219 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3220 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003221 wdiEventData.pUserData = pUserData;
3222
3223 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3224
3225}/*WDI_DelTSReq*/
3226
3227
3228
3229/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003230 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003231 wishes to update the EDCA parameters used by HW for QoS
3232 data traffic. Upon the call of this API the WLAN DAL
3233 will pack and send a HAL Update EDCA Params request
3234 message to the lower RIVA sub-system if DAL is in state
3235 STARTED.
3236
3237 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003238 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003239
3240 WDI_PostAssocReq must have been called.
3241
Jeff Johnsone7245742012-09-05 17:12:55 -07003242 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003243 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003244
Jeff Johnson295189b2012-06-20 16:38:30 -07003245 wdiUpdateEDCAParamsRspCb: callback for passing back the
3246 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003247
Jeff Johnson295189b2012-06-20 16:38:30 -07003248 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003249 callback
3250
Jeff Johnson295189b2012-06-20 16:38:30 -07003251 @see WDI_PostAssocReq
3252 @return Result of the function call
3253*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003254WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003255WDI_UpdateEDCAParams
3256(
3257 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3258 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3259 void* pUserData
3260)
3261{
3262 WDI_EventInfoType wdiEventData;
3263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3264
3265 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003266 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003267 ------------------------------------------------------------------------*/
3268 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3269 {
3270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3271 "WDI API call before module is initialized - Fail request");
3272
Jeff Johnsone7245742012-09-05 17:12:55 -07003273 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003274 }
3275
3276 /*------------------------------------------------------------------------
3277 Fill in Event data and post to the Main FSM
3278 ------------------------------------------------------------------------*/
3279 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003280 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3281 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3282 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003283 wdiEventData.pUserData = pUserData;
3284
3285 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3286
3287}/*WDI_UpdateEDCAParams*/
3288
3289
3290/**
3291 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3292 successfully a BA session and needs to notify the HW for
3293 the appropriate settings to take place. Upon the call of
3294 this API the WLAN DAL will pack and send a HAL Add BA
3295 request message to the lower RIVA sub-system if DAL is
3296 in state STARTED.
3297
3298 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003299 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003300
3301 WDI_PostAssocReq must have been called.
3302
3303 @param wdiAddBAReqParams: the add BA parameters as specified by
3304 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003305
Jeff Johnson295189b2012-06-20 16:38:30 -07003306 wdiAddBARspCb: callback for passing back the response of
3307 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003308
Jeff Johnson295189b2012-06-20 16:38:30 -07003309 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003310 callback
3311
Jeff Johnson295189b2012-06-20 16:38:30 -07003312 @see WDI_PostAssocReq
3313 @return Result of the function call
3314*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003315WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003316WDI_AddBASessionReq
3317(
3318 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3319 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3320 void* pUserData
3321)
3322{
3323 WDI_EventInfoType wdiEventData;
3324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3325
3326 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003327 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003328 ------------------------------------------------------------------------*/
3329 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3330 {
3331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3332 "WDI API call before module is initialized - Fail request");
3333
Jeff Johnsone7245742012-09-05 17:12:55 -07003334 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003335 }
3336
3337 /*------------------------------------------------------------------------
3338 Fill in Event data and post to the Main FSM
3339 ------------------------------------------------------------------------*/
3340 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003341 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3342 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3343 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003344 wdiEventData.pUserData = pUserData;
3345
3346 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3347
3348}/*WDI_AddBASessionReq*/
3349
3350/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003351 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003352 inform HW that it has deleted a previously created BA
3353 session. Upon the call of this API the WLAN DAL will
3354 pack and send a HAL Del BA request message to the lower
3355 RIVA sub-system if DAL is in state STARTED.
3356
3357 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003358 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003359
3360 WDI_AddBAReq must have been called.
3361
3362 @param wdiDelBAReqParams: the del BA parameters as specified by
3363 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003364
Jeff Johnson295189b2012-06-20 16:38:30 -07003365 wdiDelBARspCb: callback for passing back the response of
3366 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003367
Jeff Johnson295189b2012-06-20 16:38:30 -07003368 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003369 callback
3370
Jeff Johnson295189b2012-06-20 16:38:30 -07003371 @see WDI_AddBAReq
3372 @return Result of the function call
3373*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003374WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003375WDI_DelBAReq
3376(
3377 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3378 WDI_DelBARspCb wdiDelBARspCb,
3379 void* pUserData
3380)
3381{
3382 WDI_EventInfoType wdiEventData;
3383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3384
3385 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003386 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003387 ------------------------------------------------------------------------*/
3388 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3389 {
3390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3391 "WDI API call before module is initialized - Fail request");
3392
Jeff Johnsone7245742012-09-05 17:12:55 -07003393 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003394 }
3395
3396 /*------------------------------------------------------------------------
3397 Fill in Event data and post to the Main FSM
3398 ------------------------------------------------------------------------*/
3399 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003400 wdiEventData.pEventData = pwdiDelBAReqParams;
3401 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3402 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003403 wdiEventData.pUserData = pUserData;
3404
3405 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3406
3407}/*WDI_DelBAReq*/
3408
Jeff Johnsone7245742012-09-05 17:12:55 -07003409/*========================================================================
3410
Jeff Johnson295189b2012-06-20 16:38:30 -07003411 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003412
Jeff Johnson295189b2012-06-20 16:38:30 -07003413==========================================================================*/
3414
3415/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003416 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003417 wants to set the power save related configurations of
3418 the WLAN Device. Upon the call of this API the WLAN DAL
3419 will pack and send a HAL Update CFG request message to
3420 the lower RIVA sub-system if DAL is in state STARTED.
3421
3422 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003423 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003424
3425 WDI_Start must have been called.
3426
Jeff Johnsone7245742012-09-05 17:12:55 -07003427 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003428 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003429
Jeff Johnson295189b2012-06-20 16:38:30 -07003430 wdiSetPwrSaveCfgCb: callback for passing back the
3431 response of the set power save cfg operation received
3432 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003433
Jeff Johnson295189b2012-06-20 16:38:30 -07003434 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003435 callback
3436
Jeff Johnson295189b2012-06-20 16:38:30 -07003437 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003438 @return Result of the function call
3439*/
3440WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003441WDI_SetPwrSaveCfgReq
3442(
3443 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3444 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3445 void* pUserData
3446)
3447{
3448 WDI_EventInfoType wdiEventData;
3449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3450
3451 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003452 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003453 ------------------------------------------------------------------------*/
3454 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3455 {
3456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3457 "WDI API call before module is initialized - Fail request");
3458
Jeff Johnsone7245742012-09-05 17:12:55 -07003459 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003460 }
3461
3462 /*------------------------------------------------------------------------
3463 Fill in Event data and post to the Main FSM
3464 ------------------------------------------------------------------------*/
3465 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003466 wdiEventData.pEventData = pwdiPowerSaveCfg;
3467 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3468 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003469 wdiEventData.pUserData = pUserData;
3470
3471 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3472
3473}/*WDI_SetPwrSaveCfgReq*/
3474
3475/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003476 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003477 request the device to get into IMPS power state. Upon
3478 the call of this API the WLAN DAL will send a HAL Enter
3479 IMPS request message to the lower RIVA sub-system if DAL
3480 is in state STARTED.
3481
3482 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003483 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003484
Jeff Johnsone7245742012-09-05 17:12:55 -07003485
3486 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003487 response of the Enter IMPS operation received from the
3488 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003489
Jeff Johnson295189b2012-06-20 16:38:30 -07003490 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 callback
3492
Jeff Johnson295189b2012-06-20 16:38:30 -07003493 @see WDI_Start
3494 @return Result of the function call
3495*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003496WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003497WDI_EnterImpsReq
3498(
3499 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3500 void* pUserData
3501)
3502{
3503 WDI_EventInfoType wdiEventData;
3504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3505
3506 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003507 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003508 ------------------------------------------------------------------------*/
3509 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3510 {
3511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3512 "WDI API call before module is initialized - Fail request");
3513
Jeff Johnsone7245742012-09-05 17:12:55 -07003514 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003515 }
3516
3517 /*------------------------------------------------------------------------
3518 Fill in Event data and post to the Main FSM
3519 ------------------------------------------------------------------------*/
3520 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003521 wdiEventData.pEventData = NULL;
3522 wdiEventData.uEventDataSize = 0;
3523 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003524 wdiEventData.pUserData = pUserData;
3525
3526 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3527
3528}/*WDI_EnterImpsReq*/
3529
3530/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003531 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003532 request the device to get out of IMPS power state. Upon
3533 the call of this API the WLAN DAL will send a HAL Exit
3534 IMPS request message to the lower RIVA sub-system if DAL
3535 is in state STARTED.
3536
3537 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003538 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003539
Jeff Johnson295189b2012-06-20 16:38:30 -07003540
Jeff Johnsone7245742012-09-05 17:12:55 -07003541
3542 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003543 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003544
Jeff Johnson295189b2012-06-20 16:38:30 -07003545 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003546 callback
3547
Jeff Johnson295189b2012-06-20 16:38:30 -07003548 @see WDI_Start
3549 @return Result of the function call
3550*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003551WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003552WDI_ExitImpsReq
3553(
3554 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3555 void* pUserData
3556)
3557{
3558 WDI_EventInfoType wdiEventData;
3559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3560
3561 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003562 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003563 ------------------------------------------------------------------------*/
3564 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3565 {
3566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3567 "WDI API call before module is initialized - Fail request");
3568
Jeff Johnsone7245742012-09-05 17:12:55 -07003569 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003570 }
3571
3572 /*------------------------------------------------------------------------
3573 Fill in Event data and post to the Main FSM
3574 ------------------------------------------------------------------------*/
3575 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003576 wdiEventData.pEventData = NULL;
3577 wdiEventData.uEventDataSize = 0;
3578 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003579 wdiEventData.pUserData = pUserData;
3580
3581 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3582
3583}/*WDI_ExitImpsReq*/
3584
3585/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003586 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003587 request the device to get into BMPS power state. Upon
3588 the call of this API the WLAN DAL will pack and send a
3589 HAL Enter BMPS request message to the lower RIVA
3590 sub-system if DAL is in state STARTED.
3591
3592 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003593 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003594
3595 WDI_PostAssocReq must have been called.
3596
Jeff Johnsone7245742012-09-05 17:12:55 -07003597 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003598 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003599
Jeff Johnson295189b2012-06-20 16:38:30 -07003600 wdiEnterBmpsRspCb: callback for passing back the
3601 response of the Enter BMPS operation received from the
3602 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003603
Jeff Johnson295189b2012-06-20 16:38:30 -07003604 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003605 callback
3606
Jeff Johnson295189b2012-06-20 16:38:30 -07003607 @see WDI_PostAssocReq
3608 @return Result of the function call
3609*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003610WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003611WDI_EnterBmpsReq
3612(
3613 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3614 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3615 void* pUserData
3616)
3617{
3618 WDI_EventInfoType wdiEventData;
3619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3620
3621 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003622 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003623 ------------------------------------------------------------------------*/
3624 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3625 {
3626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3627 "WDI API call before module is initialized - Fail request");
3628
Jeff Johnsone7245742012-09-05 17:12:55 -07003629 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003630 }
3631
3632 /*------------------------------------------------------------------------
3633 Fill in Event data and post to the Main FSM
3634 ------------------------------------------------------------------------*/
3635 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003636 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3637 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3638 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003639 wdiEventData.pUserData = pUserData;
3640
3641 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3642
3643}/*WDI_EnterBmpsReq*/
3644
3645/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003646 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003647 request the device to get out of BMPS power state. Upon
3648 the call of this API the WLAN DAL will pack and send a
3649 HAL Exit BMPS request message to the lower RIVA
3650 sub-system if DAL is in state STARTED.
3651
3652 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003653 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003654
3655 WDI_PostAssocReq must have been called.
3656
Jeff Johnsone7245742012-09-05 17:12:55 -07003657 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003658 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003659
Jeff Johnson295189b2012-06-20 16:38:30 -07003660 wdiExitBmpsRspCb: callback for passing back the response
3661 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003662
Jeff Johnson295189b2012-06-20 16:38:30 -07003663 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003664 callback
3665
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 @see WDI_PostAssocReq
3667 @return Result of the function call
3668*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003669WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003670WDI_ExitBmpsReq
3671(
3672 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3673 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3674 void* pUserData
3675)
3676{
3677 WDI_EventInfoType wdiEventData;
3678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3679
3680 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003681 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003682 ------------------------------------------------------------------------*/
3683 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3684 {
3685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3686 "WDI API call before module is initialized - Fail request");
3687
Jeff Johnsone7245742012-09-05 17:12:55 -07003688 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003689 }
3690
3691 /*------------------------------------------------------------------------
3692 Fill in Event data and post to the Main FSM
3693 ------------------------------------------------------------------------*/
3694 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003695 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3696 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3697 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003698 wdiEventData.pUserData = pUserData;
3699
3700 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3701
3702}/*WDI_ExitBmpsReq*/
3703
3704/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003705 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003706 request the device to get into UAPSD power state. Upon
3707 the call of this API the WLAN DAL will pack and send a
3708 HAL Enter UAPSD request message to the lower RIVA
3709 sub-system if DAL is in state STARTED.
3710
3711 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003712 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003713
3714 WDI_PostAssocReq must have been called.
3715 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003716
3717 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003718 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003719
Jeff Johnson295189b2012-06-20 16:38:30 -07003720 wdiEnterUapsdRspCb: callback for passing back the
3721 response of the Enter UAPSD operation received from the
3722 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003723
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003725 callback
3726
Jeff Johnson295189b2012-06-20 16:38:30 -07003727 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3728 @return Result of the function call
3729*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003730WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003731WDI_EnterUapsdReq
3732(
3733 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3734 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3735 void* pUserData
3736)
3737{
3738 WDI_EventInfoType wdiEventData;
3739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3740
3741 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003742 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003743 ------------------------------------------------------------------------*/
3744 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3745 {
3746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3747 "WDI API call before module is initialized - Fail request");
3748
Jeff Johnsone7245742012-09-05 17:12:55 -07003749 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003750 }
3751
3752 /*------------------------------------------------------------------------
3753 Fill in Event data and post to the Main FSM
3754 ------------------------------------------------------------------------*/
3755 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003756 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3757 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3758 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 wdiEventData.pUserData = pUserData;
3760
3761 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3762
3763}/*WDI_EnterUapsdReq*/
3764
3765/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003766 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003767 request the device to get out of UAPSD power state. Upon
3768 the call of this API the WLAN DAL will send a HAL Exit
3769 UAPSD request message to the lower RIVA sub-system if
3770 DAL is in state STARTED.
3771
3772 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003773 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003774
3775 WDI_PostAssocReq must have been called.
3776
Jeff Johnsone7245742012-09-05 17:12:55 -07003777 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003778 response of the Exit UAPSD operation received from the
3779 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003780
Jeff Johnson295189b2012-06-20 16:38:30 -07003781 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003782 callback
3783
Jeff Johnson295189b2012-06-20 16:38:30 -07003784 @see WDI_PostAssocReq
3785 @return Result of the function call
3786*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003787WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003788WDI_ExitUapsdReq
3789(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003790 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003791 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3792 void* pUserData
3793)
3794{
3795 WDI_EventInfoType wdiEventData;
3796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3797
3798 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003799 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003800 ------------------------------------------------------------------------*/
3801 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3802 {
3803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3804 "WDI API call before module is initialized - Fail request");
3805
Jeff Johnsone7245742012-09-05 17:12:55 -07003806 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003807 }
3808
3809 /*------------------------------------------------------------------------
3810 Fill in Event data and post to the Main FSM
3811 ------------------------------------------------------------------------*/
3812 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003813 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3814 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003815 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003816 wdiEventData.pUserData = pUserData;
3817
3818 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3819
3820}/*WDI_ExitUapsdReq*/
3821
3822/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003823 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 MAC wants to set the UAPSD related configurations
3825 of an associated STA (while acting as an AP) to the WLAN
3826 Device. Upon the call of this API the WLAN DAL will pack
3827 and send a HAL Update UAPSD params request message to
3828 the lower RIVA sub-system if DAL is in state STARTED.
3829
3830 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003831 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003832
3833 WDI_ConfigBSSReq must have been called.
3834
Jeff Johnsone7245742012-09-05 17:12:55 -07003835 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003836 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003837
Jeff Johnson295189b2012-06-20 16:38:30 -07003838 wdiUpdateUapsdParamsCb: callback for passing back the
3839 response of the update UAPSD params operation received
3840 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003841
Jeff Johnson295189b2012-06-20 16:38:30 -07003842 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003843 callback
3844
Jeff Johnson295189b2012-06-20 16:38:30 -07003845 @see WDI_ConfigBSSReq
3846 @return Result of the function call
3847*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003848WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003849WDI_UpdateUapsdParamsReq
3850(
3851 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3852 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3853 void* pUserData
3854)
3855{
3856 WDI_EventInfoType wdiEventData;
3857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3858
3859 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003860 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003861 ------------------------------------------------------------------------*/
3862 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3863 {
3864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3865 "WDI API call before module is initialized - Fail request");
3866
Jeff Johnsone7245742012-09-05 17:12:55 -07003867 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003868 }
3869
3870 /*------------------------------------------------------------------------
3871 Fill in Event data and post to the Main FSM
3872 ------------------------------------------------------------------------*/
3873 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003874 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003875 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003876 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003877 wdiEventData.pUserData = pUserData;
3878
3879 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3880
3881}/*WDI_UpdateUapsdParamsReq*/
3882
3883/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003884 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003885 MAC wants to set the UAPSD related configurations before
3886 requesting for enter UAPSD power state to the WLAN
3887 Device. Upon the call of this API the WLAN DAL will pack
3888 and send a HAL Set UAPSD params request message to
3889 the lower RIVA sub-system if DAL is in state STARTED.
3890
3891 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003892 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003893
3894 WDI_PostAssocReq must have been called.
3895
3896 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3897 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003898
Jeff Johnson295189b2012-06-20 16:38:30 -07003899 wdiSetUapsdAcParamsCb: callback for passing back the
3900 response of the set UAPSD params operation received from
3901 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003902
Jeff Johnson295189b2012-06-20 16:38:30 -07003903 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003904 callback
3905
Jeff Johnson295189b2012-06-20 16:38:30 -07003906 @see WDI_PostAssocReq
3907 @return Result of the function call
3908*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003909WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003910WDI_SetUapsdAcParamsReq
3911(
3912 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3913 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3914 void* pUserData
3915)
3916{
3917 WDI_EventInfoType wdiEventData;
3918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3919
3920 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003921 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003922 ------------------------------------------------------------------------*/
3923 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3924 {
3925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3926 "WDI API call before module is initialized - Fail request");
3927
Jeff Johnsone7245742012-09-05 17:12:55 -07003928 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003929 }
3930
3931 /*------------------------------------------------------------------------
3932 Fill in Event data and post to the Main FSM
3933 ------------------------------------------------------------------------*/
3934 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003935 wdiEventData.pEventData = pwdiUapsdInfo;
3936 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3937 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003938 wdiEventData.pUserData = pUserData;
3939
3940 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3941
3942}/*WDI_SetUapsdAcParamsReq*/
3943
3944/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003945 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 MAC wants to set/reset the RXP filters for received pkts
3947 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3948 and send a HAL configure RXP filter request message to
3949 the lower RIVA sub-system.
3950
3951 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003952 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003953
Jeff Johnsone7245742012-09-05 17:12:55 -07003954
3955 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003956 filter as specified by the Device
3957 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003958
Jeff Johnson295189b2012-06-20 16:38:30 -07003959 wdiConfigureRxpFilterCb: callback for passing back the
3960 response of the configure RXP filter operation received
3961 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003962
Jeff Johnson295189b2012-06-20 16:38:30 -07003963 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003964 callback
3965
Jeff Johnson295189b2012-06-20 16:38:30 -07003966 @return Result of the function call
3967*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003968WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003969WDI_ConfigureRxpFilterReq
3970(
3971 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3972 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3973 void* pUserData
3974)
3975{
3976 WDI_EventInfoType wdiEventData;
3977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3978
3979 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003980 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003981 ------------------------------------------------------------------------*/
3982 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3983 {
3984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3985 "WDI API call before module is initialized - Fail request");
3986
Jeff Johnsone7245742012-09-05 17:12:55 -07003987 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003988 }
3989
3990 /*------------------------------------------------------------------------
3991 Fill in Event data and post to the Main FSM
3992 ------------------------------------------------------------------------*/
3993 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003994 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3995 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3996 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003997 wdiEventData.pUserData = pUserData;
3998
3999 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4000}/*WDI_ConfigureRxpFilterReq*/
4001
4002/**
4003 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4004 wants to set the beacon filters while in power save.
4005 Upon the call of this API the WLAN DAL will pack and
4006 send a Beacon filter request message to the
4007 lower RIVA sub-system.
4008
4009 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004010 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004011
Jeff Johnsone7245742012-09-05 17:12:55 -07004012
4013 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004014 filter as specified by the Device
4015 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004016
Jeff Johnson295189b2012-06-20 16:38:30 -07004017 wdiBeaconFilterCb: callback for passing back the
4018 response of the set beacon filter operation received
4019 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004020
Jeff Johnson295189b2012-06-20 16:38:30 -07004021 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004022 callback
4023
Jeff Johnson295189b2012-06-20 16:38:30 -07004024 @return Result of the function call
4025*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004026WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004027WDI_SetBeaconFilterReq
4028(
4029 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4030 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4031 void* pUserData
4032)
4033{
4034 WDI_EventInfoType wdiEventData;
4035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4036
4037 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004038 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004039 ------------------------------------------------------------------------*/
4040 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4041 {
4042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4043 "WDI API call before module is initialized - Fail request");
4044
Jeff Johnsone7245742012-09-05 17:12:55 -07004045 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004046 }
4047
4048 /*------------------------------------------------------------------------
4049 Fill in Event data and post to the Main FSM
4050 ------------------------------------------------------------------------*/
4051 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004052 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004053 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004054 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004055 wdiEventData.pUserData = pUserData;
4056
4057 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4058}/*WDI_SetBeaconFilterReq*/
4059
4060/**
4061 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4062 wants to remove the beacon filter for particular IE
4063 while in power save. Upon the call of this API the WLAN
4064 DAL will pack and send a remove Beacon filter request
4065 message to the lower RIVA sub-system.
4066
4067 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004068 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004069
Jeff Johnsone7245742012-09-05 17:12:55 -07004070
4071 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004072 filter as specified by the Device
4073 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004074
Jeff Johnson295189b2012-06-20 16:38:30 -07004075 wdiBeaconFilterCb: callback for passing back the
4076 response of the remove beacon filter operation received
4077 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004078
Jeff Johnson295189b2012-06-20 16:38:30 -07004079 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004080 callback
4081
Jeff Johnson295189b2012-06-20 16:38:30 -07004082 @return Result of the function call
4083*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004084WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004085WDI_RemBeaconFilterReq
4086(
4087 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4088 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4089 void* pUserData
4090)
4091{
4092 WDI_EventInfoType wdiEventData;
4093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4094
4095 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004096 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004097 ------------------------------------------------------------------------*/
4098 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4099 {
4100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4101 "WDI API call before module is initialized - Fail request");
4102
Jeff Johnsone7245742012-09-05 17:12:55 -07004103 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004104 }
4105
4106 /*------------------------------------------------------------------------
4107 Fill in Event data and post to the Main FSM
4108 ------------------------------------------------------------------------*/
4109 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004110 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004111 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004112 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004113 wdiEventData.pUserData = pUserData;
4114
4115 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4116}/*WDI_RemBeaconFilterReq*/
4117
4118/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004119 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 MAC wants to set the RSSI thresholds related
4121 configurations while in power save. Upon the call of
4122 this API the WLAN DAL will pack and send a HAL Set RSSI
4123 thresholds request message to the lower RIVA
4124 sub-system if DAL is in state STARTED.
4125
4126 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004127 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004128
4129 WDI_PostAssocReq must have been called.
4130
4131 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4132 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004133
Jeff Johnson295189b2012-06-20 16:38:30 -07004134 wdiSetUapsdAcParamsCb: callback for passing back the
4135 response of the set UAPSD params operation received from
4136 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004137
Jeff Johnson295189b2012-06-20 16:38:30 -07004138 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004139 callback
4140
Jeff Johnson295189b2012-06-20 16:38:30 -07004141 @see WDI_PostAssocReq
4142 @return Result of the function call
4143*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004144WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004145WDI_SetRSSIThresholdsReq
4146(
4147 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4148 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4149 void* pUserData
4150)
4151{
4152 WDI_EventInfoType wdiEventData;
4153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4154
4155 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004156 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004157 ------------------------------------------------------------------------*/
4158 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4159 {
4160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4161 "WDI API call before module is initialized - Fail request");
4162
Jeff Johnsone7245742012-09-05 17:12:55 -07004163 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004164 }
4165
4166 /*------------------------------------------------------------------------
4167 Fill in Event data and post to the Main FSM
4168 ------------------------------------------------------------------------*/
4169 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004171 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004172 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004173 wdiEventData.pUserData = pUserData;
4174
4175 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4176}/* WDI_SetRSSIThresholdsReq*/
4177
4178/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004179 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 wants to set the filter to minimize unnecessary host
4181 wakeup due to broadcast traffic while in power save.
4182 Upon the call of this API the WLAN DAL will pack and
4183 send a HAL host offload request message to the
4184 lower RIVA sub-system if DAL is in state STARTED.
4185
4186 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004187 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004188
4189 WDI_PostAssocReq must have been called.
4190
Jeff Johnsone7245742012-09-05 17:12:55 -07004191 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004192 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004193
Jeff Johnson295189b2012-06-20 16:38:30 -07004194 wdiHostOffloadCb: callback for passing back the response
4195 of the host offload operation received from the
4196 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004197
Jeff Johnson295189b2012-06-20 16:38:30 -07004198 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004199 callback
4200
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 @see WDI_PostAssocReq
4202 @return Result of the function call
4203*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004204WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004205WDI_HostOffloadReq
4206(
4207 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4208 WDI_HostOffloadCb wdiHostOffloadCb,
4209 void* pUserData
4210)
4211{
4212 WDI_EventInfoType wdiEventData;
4213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4214
4215 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004216 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004217 ------------------------------------------------------------------------*/
4218 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4219 {
4220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4221 "WDI API call before module is initialized - Fail request");
4222
Jeff Johnsone7245742012-09-05 17:12:55 -07004223 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 }
4225
4226 /*------------------------------------------------------------------------
4227 Fill in Event data and post to the Main FSM
4228 ------------------------------------------------------------------------*/
4229 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004230 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004231 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004232 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004233 wdiEventData.pUserData = pUserData;
4234
4235 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4236}/*WDI_HostOffloadReq*/
4237
4238/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004239 @brief WDI_KeepAliveReq will be called when the upper MAC
4240 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004241 and minimize unnecessary host wakeups due to while in power save.
4242 Upon the call of this API the WLAN DAL will pack and
4243 send a HAL Keep Alive request message to the
4244 lower RIVA sub-system if DAL is in state STARTED.
4245
4246 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004247 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004248
4249 WDI_PostAssocReq must have been called.
4250
Jeff Johnsone7245742012-09-05 17:12:55 -07004251 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004252 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004253
Jeff Johnson295189b2012-06-20 16:38:30 -07004254 wdiKeepAliveCb: callback for passing back the response
4255 of the Keep Alive operation received from the
4256 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004257
Jeff Johnson295189b2012-06-20 16:38:30 -07004258 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004259 callback
4260
Jeff Johnson295189b2012-06-20 16:38:30 -07004261 @see WDI_PostAssocReq
4262 @return Result of the function call
4263*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004264WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004265WDI_KeepAliveReq
4266(
4267 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4268 WDI_KeepAliveCb wdiKeepAliveCb,
4269 void* pUserData
4270)
4271{
4272 WDI_EventInfoType wdiEventData;
4273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4274
4275 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004276 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004277 ------------------------------------------------------------------------*/
4278 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4279 {
4280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4281 "WDI_KeepAliveReq: WDI API call before module "
4282 "is initialized - Fail request");
4283
Jeff Johnsone7245742012-09-05 17:12:55 -07004284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004285 }
4286
4287 /*------------------------------------------------------------------------
4288 Fill in Event data and post to the Main FSM
4289 ------------------------------------------------------------------------*/
4290 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004291 wdiEventData.pEventData = pwdiKeepAliveParams;
4292 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4293 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004294 wdiEventData.pUserData = pUserData;
4295
4296 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4297}/*WDI_KeepAliveReq*/
4298
4299/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004300 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 wants to set the Wowl Bcast ptrn to minimize unnecessary
4302 host wakeup due to broadcast traffic while in power
4303 save. Upon the call of this API the WLAN DAL will pack
4304 and send a HAL Wowl Bcast ptrn request message to the
4305 lower RIVA sub-system if DAL is in state STARTED.
4306
4307 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004308 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004309
4310 WDI_PostAssocReq must have been called.
4311
Jeff Johnsone7245742012-09-05 17:12:55 -07004312 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004313 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004314
Jeff Johnson295189b2012-06-20 16:38:30 -07004315 wdiWowlAddBcPtrnCb: callback for passing back the
4316 response of the add Wowl bcast ptrn operation received
4317 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004318
Jeff Johnson295189b2012-06-20 16:38:30 -07004319 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004320 callback
4321
Jeff Johnson295189b2012-06-20 16:38:30 -07004322 @see WDI_PostAssocReq
4323 @return Result of the function call
4324*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004325WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004326WDI_WowlAddBcPtrnReq
4327(
4328 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4329 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4330 void* pUserData
4331)
4332{
4333 WDI_EventInfoType wdiEventData;
4334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4335
4336 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004337 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004338 ------------------------------------------------------------------------*/
4339 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4340 {
4341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4342 "WDI API call before module is initialized - Fail request");
4343
Jeff Johnsone7245742012-09-05 17:12:55 -07004344 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004345 }
4346
4347 /*------------------------------------------------------------------------
4348 Fill in Event data and post to the Main FSM
4349 ------------------------------------------------------------------------*/
4350 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004351 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004352 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004353 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004354 wdiEventData.pUserData = pUserData;
4355
4356 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4357}/*WDI_WowlAddBcPtrnReq*/
4358
4359/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004360 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004361 wants to clear the Wowl Bcast ptrn. Upon the call of
4362 this API the WLAN DAL will pack and send a HAL delete
4363 Wowl Bcast ptrn request message to the lower RIVA
4364 sub-system if DAL is in state STARTED.
4365
4366 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004367 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004368
4369 WDI_WowlAddBcPtrnReq must have been called.
4370
Jeff Johnsone7245742012-09-05 17:12:55 -07004371 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004372 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004373
Jeff Johnson295189b2012-06-20 16:38:30 -07004374 wdiWowlDelBcPtrnCb: callback for passing back the
4375 response of the del Wowl bcast ptrn operation received
4376 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004377
Jeff Johnson295189b2012-06-20 16:38:30 -07004378 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004379 callback
4380
Jeff Johnson295189b2012-06-20 16:38:30 -07004381 @see WDI_WowlAddBcPtrnReq
4382 @return Result of the function call
4383*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004384WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004385WDI_WowlDelBcPtrnReq
4386(
4387 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4388 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4389 void* pUserData
4390)
4391{
4392 WDI_EventInfoType wdiEventData;
4393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4394
4395 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004396 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004397 ------------------------------------------------------------------------*/
4398 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4399 {
4400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4401 "WDI API call before module is initialized - Fail request");
4402
Jeff Johnsone7245742012-09-05 17:12:55 -07004403 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004404 }
4405
4406 /*------------------------------------------------------------------------
4407 Fill in Event data and post to the Main FSM
4408 ------------------------------------------------------------------------*/
4409 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004410 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004411 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004412 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004413 wdiEventData.pUserData = pUserData;
4414
4415 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4416}/*WDI_WowlDelBcPtrnReq*/
4417
4418/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004419 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004420 wants to enter the Wowl state to minimize unnecessary
4421 host wakeup while in power save. Upon the call of this
4422 API the WLAN DAL will pack and send a HAL Wowl enter
4423 request message to the lower RIVA sub-system if DAL is
4424 in state STARTED.
4425
4426 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004427 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004428
4429 WDI_PostAssocReq must have been called.
4430
Jeff Johnsone7245742012-09-05 17:12:55 -07004431 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004432 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004433
Jeff Johnson295189b2012-06-20 16:38:30 -07004434 wdiWowlEnterReqCb: callback for passing back the
4435 response of the enter Wowl operation received from the
4436 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004437
Jeff Johnson295189b2012-06-20 16:38:30 -07004438 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004439 callback
4440
Jeff Johnson295189b2012-06-20 16:38:30 -07004441 @see WDI_PostAssocReq
4442 @return Result of the function call
4443*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004444WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004445WDI_WowlEnterReq
4446(
4447 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4448 WDI_WowlEnterReqCb wdiWowlEnterCb,
4449 void* pUserData
4450)
4451{
4452 WDI_EventInfoType wdiEventData;
4453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4454
4455 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004456 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004457 ------------------------------------------------------------------------*/
4458 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4459 {
4460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4461 "WDI API call before module is initialized - Fail request");
4462
Jeff Johnsone7245742012-09-05 17:12:55 -07004463 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004464 }
4465
4466 /*------------------------------------------------------------------------
4467 Fill in Event data and post to the Main FSM
4468 ------------------------------------------------------------------------*/
4469 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004470 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004471 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004472 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004473 wdiEventData.pUserData = pUserData;
4474
4475 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4476}/*WDI_WowlEnterReq*/
4477
4478/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004479 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004480 wants to exit the Wowl state. Upon the call of this API
4481 the WLAN DAL will pack and send a HAL Wowl exit request
4482 message to the lower RIVA sub-system if DAL is in state
4483 STARTED.
4484
4485 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004486 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004487
4488 WDI_WowlEnterReq must have been called.
4489
Jeff Johnsone7245742012-09-05 17:12:55 -07004490 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004491 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004492
Jeff Johnson295189b2012-06-20 16:38:30 -07004493 wdiWowlExitReqCb: callback for passing back the response
4494 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004495
Jeff Johnson295189b2012-06-20 16:38:30 -07004496 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004497 callback
4498
Jeff Johnson295189b2012-06-20 16:38:30 -07004499 @see WDI_WowlEnterReq
4500 @return Result of the function call
4501*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004502WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004503WDI_WowlExitReq
4504(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004505 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004506 WDI_WowlExitReqCb wdiWowlExitCb,
4507 void* pUserData
4508)
4509{
4510 WDI_EventInfoType wdiEventData;
4511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4512
4513 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004514 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004515 ------------------------------------------------------------------------*/
4516 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4517 {
4518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4519 "WDI API call before module is initialized - Fail request");
4520
Jeff Johnsone7245742012-09-05 17:12:55 -07004521 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004522 }
4523
4524 /*------------------------------------------------------------------------
4525 Fill in Event data and post to the Main FSM
4526 ------------------------------------------------------------------------*/
4527 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004528 wdiEventData.pEventData = pwdiWowlExitParams;
4529 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004530 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004531 wdiEventData.pUserData = pUserData;
4532
4533 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4534}/*WDI_WowlExitReq*/
4535
4536/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004537 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 the upper MAC wants to dynamically adjusts the listen
4539 interval based on the WLAN/MSM activity. Upon the call
4540 of this API the WLAN DAL will pack and send a HAL
4541 configure Apps Cpu Wakeup State request message to the
4542 lower RIVA sub-system.
4543
4544 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004545 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004546
Jeff Johnsone7245742012-09-05 17:12:55 -07004547
4548 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004549 Apps Cpu Wakeup State as specified by the
4550 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004551
Jeff Johnson295189b2012-06-20 16:38:30 -07004552 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4553 back the response of the configure Apps Cpu Wakeup State
4554 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004555
Jeff Johnson295189b2012-06-20 16:38:30 -07004556 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004557 callback
4558
Jeff Johnson295189b2012-06-20 16:38:30 -07004559 @return Result of the function call
4560*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004561WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004562WDI_ConfigureAppsCpuWakeupStateReq
4563(
4564 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4565 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4566 void* pUserData
4567)
4568{
4569 WDI_EventInfoType wdiEventData;
4570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4571
4572 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004573 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004574 ------------------------------------------------------------------------*/
4575 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4576 {
4577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4578 "WDI API call before module is initialized - Fail request");
4579
Jeff Johnsone7245742012-09-05 17:12:55 -07004580 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004581 }
4582
4583 /*------------------------------------------------------------------------
4584 Fill in Event data and post to the Main FSM
4585 ------------------------------------------------------------------------*/
4586 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004587 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4588 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4589 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004590 wdiEventData.pUserData = pUserData;
4591
4592 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4593}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4594/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004595 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004596 to to perform a flush operation on a given AC. Upon the
4597 call of this API the WLAN DAL will pack and send a HAL
4598 Flush AC request message to the lower RIVA sub-system if
4599 DAL is in state STARTED.
4600
4601 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004602 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004603
4604 WDI_AddBAReq must have been called.
4605
Jeff Johnsone7245742012-09-05 17:12:55 -07004606 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004607 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004608
Jeff Johnson295189b2012-06-20 16:38:30 -07004609 wdiFlushAcRspCb: callback for passing back the response
4610 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004611
Jeff Johnson295189b2012-06-20 16:38:30 -07004612 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004613 callback
4614
Jeff Johnson295189b2012-06-20 16:38:30 -07004615 @see WDI_AddBAReq
4616 @return Result of the function call
4617*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004618WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004619WDI_FlushAcReq
4620(
4621 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4622 WDI_FlushAcRspCb wdiFlushAcRspCb,
4623 void* pUserData
4624)
4625{
4626 WDI_EventInfoType wdiEventData;
4627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4628
4629 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004630 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004631 ------------------------------------------------------------------------*/
4632 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4633 {
4634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4635 "WDI API call before module is initialized - Fail request");
4636
Jeff Johnsone7245742012-09-05 17:12:55 -07004637 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 }
4639
4640 /*------------------------------------------------------------------------
4641 Fill in Event data and post to the Main FSM
4642 ------------------------------------------------------------------------*/
4643 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 wdiEventData.pEventData = pwdiFlushAcReqParams;
4645 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4646 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004647 wdiEventData.pUserData = pUserData;
4648
4649 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4650
4651}/*WDI_FlushAcReq*/
4652
4653/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004654 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004655 wants to notify the lower mac on a BT AMP event. This is
4656 to inform BTC-SLM that some BT AMP event occurred. Upon
4657 the call of this API the WLAN DAL will pack and send a
4658 HAL BT AMP event request message to the lower RIVA
4659 sub-system if DAL is in state STARTED.
4660
4661 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004662 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004663
Jeff Johnsone7245742012-09-05 17:12:55 -07004664
4665 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004666 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004667
Jeff Johnson295189b2012-06-20 16:38:30 -07004668 wdiBtAmpEventRspCb: callback for passing back the
4669 response of the BT AMP event operation received from the
4670 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004671
Jeff Johnson295189b2012-06-20 16:38:30 -07004672 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004673 callback
4674
Jeff Johnson295189b2012-06-20 16:38:30 -07004675 @return Result of the function call
4676*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004677WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004678WDI_BtAmpEventReq
4679(
4680 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4681 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4682 void* pUserData
4683)
4684{
4685 WDI_EventInfoType wdiEventData;
4686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4687
4688 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004689 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004690 ------------------------------------------------------------------------*/
4691 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4692 {
4693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4694 "WDI API call before module is initialized - Fail request");
4695
Jeff Johnsone7245742012-09-05 17:12:55 -07004696 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 }
4698
4699 /*------------------------------------------------------------------------
4700 Fill in Event data and post to the Main FSM
4701 ------------------------------------------------------------------------*/
4702 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004703 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4704 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4705 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004706 wdiEventData.pUserData = pUserData;
4707
4708 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4709
4710}/*WDI_BtAmpEventReq*/
4711
Jeff Johnsone7245742012-09-05 17:12:55 -07004712#ifdef FEATURE_OEM_DATA_SUPPORT
4713/**
4714 @brief WDI_Start Oem Data Req will be called when the upper MAC
4715 wants to notify the lower mac on a oem data Req event.Upon
4716 the call of this API the WLAN DAL will pack and send a
4717 HAL OEM Data Req event request message to the lower RIVA
4718 sub-system if DAL is in state STARTED.
4719
4720 In state BUSY this request will be queued. Request won't
4721 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004722
4723
Jeff Johnsone7245742012-09-05 17:12:55 -07004724
4725 @param pwdiOemDataReqParams: the Oem Data Req as
4726 specified by the Device Interface
4727
4728 wdiStartOemDataRspCb: callback for passing back the
4729 response of the Oem Data Req received from the
4730 device
4731
4732 pUserData: user data will be passed back with the
4733 callback
4734
4735 @return Result of the function call
4736*/
4737WDI_Status
4738WDI_StartOemDataReq
4739(
4740 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4741 WDI_oemDataRspCb wdiOemDataRspCb,
4742 void* pUserData
4743)
4744{
4745 WDI_EventInfoType wdiEventData;
4746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4747
4748 /*------------------------------------------------------------------------
4749 Sanity Check
4750 ------------------------------------------------------------------------*/
4751 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4752 {
4753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4754 "WDI API call before module is initialized - Fail request");
4755
4756 return WDI_STATUS_E_NOT_ALLOWED;
4757 }
4758
4759 /*------------------------------------------------------------------------
4760 Fill in Event data and post to the Main FSM
4761 ------------------------------------------------------------------------*/
4762 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4763 wdiEventData.pEventData = pwdiOemDataReqParams;
4764 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4765 wdiEventData.pCBfnc = wdiOemDataRspCb;
4766 wdiEventData.pUserData = pUserData;
4767
4768 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4769
4770
4771}
4772
4773#endif
4774
4775
4776/*========================================================================
4777
Jeff Johnson295189b2012-06-20 16:38:30 -07004778 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004779
Jeff Johnson295189b2012-06-20 16:38:30 -07004780==========================================================================*/
4781/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004782 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004783 the WLAN HW to change the current channel of operation.
4784 Upon the call of this API the WLAN DAL will pack and
4785 send a HAL Start request message to the lower RIVA
4786 sub-system if DAL is in state STARTED.
4787
4788 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004789 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004790
4791 WDI_Start must have been called.
4792
Jeff Johnsone7245742012-09-05 17:12:55 -07004793 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004794 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004795
Jeff Johnson295189b2012-06-20 16:38:30 -07004796 wdiSwitchChRspCb: callback for passing back the response
4797 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004798
Jeff Johnson295189b2012-06-20 16:38:30 -07004799 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004800 callback
4801
Jeff Johnson295189b2012-06-20 16:38:30 -07004802 @see WDI_Start
4803 @return Result of the function call
4804*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004805WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004806WDI_SwitchChReq
4807(
4808 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4809 WDI_SwitchChRspCb wdiSwitchChRspCb,
4810 void* pUserData
4811)
4812{
4813 WDI_EventInfoType wdiEventData;
4814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4815
4816 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004817 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004818 ------------------------------------------------------------------------*/
4819 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4820 {
4821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4822 "WDI API call before module is initialized - Fail request");
4823
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004825 }
4826
4827 /*------------------------------------------------------------------------
4828 Fill in Event data and post to the Main FSM
4829 ------------------------------------------------------------------------*/
4830 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 wdiEventData.pEventData = pwdiSwitchChReqParams;
4832 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4833 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004834 wdiEventData.pUserData = pUserData;
4835
4836 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4837
4838}/*WDI_SwitchChReq*/
4839
4840
4841/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004842 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004843 wishes to add or update a STA in HW. Upon the call of
4844 this API the WLAN DAL will pack and send a HAL Start
4845 message request message to the lower RIVA sub-system if
4846 DAL is in state STARTED.
4847
4848 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004849 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004850
4851 WDI_Start must have been called.
4852
Jeff Johnsone7245742012-09-05 17:12:55 -07004853 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004854 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004855
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 wdiConfigSTARspCb: callback for passing back the
4857 response of the config STA operation received from the
4858 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004859
Jeff Johnson295189b2012-06-20 16:38:30 -07004860 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004861 callback
4862
Jeff Johnson295189b2012-06-20 16:38:30 -07004863 @see WDI_Start
4864 @return Result of the function call
4865*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004866WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004867WDI_ConfigSTAReq
4868(
4869 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4870 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4871 void* pUserData
4872)
4873{
4874 WDI_EventInfoType wdiEventData;
4875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4876
4877 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004878 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004879 ------------------------------------------------------------------------*/
4880 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4881 {
4882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4883 "WDI API call before module is initialized - Fail request");
4884
Jeff Johnsone7245742012-09-05 17:12:55 -07004885 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004886 }
4887
4888 /*------------------------------------------------------------------------
4889 Fill in Event data and post to the Main FSM
4890 ------------------------------------------------------------------------*/
4891 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004892 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4893 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4894 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004895 wdiEventData.pUserData = pUserData;
4896
4897 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4898
4899}/*WDI_ConfigSTAReq*/
4900
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08004901 /**
4902 @brief WDI_UpdateChannelReq will be called when the upper MAC
4903 wants to update the channel list on change in country code.
4904
4905 In state BUSY this request will be queued. Request won't
4906 be allowed in any other state.
4907
4908 WDI_UpdateChannelReq must have been called.
4909
4910 @param wdiUpdateChannelReqParams: the updated channel parameters
4911 as specified by the Device Interface
4912
4913 wdiUpdateChannelRspCb: callback for passing back the
4914 response of the update channel operation received from
4915 the device
4916
4917 pUserData: user data will be passed back with the
4918 callback
4919
4920 @return Result of the function call
4921*/
4922WDI_Status
4923WDI_UpdateChannelReq
4924(
4925 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
4926 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
4927 void* pUserData
4928)
4929{
4930 WDI_EventInfoType wdiEventData = {{0}};
4931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4932
4933 /*------------------------------------------------------------------------
4934 Sanity Check
4935 ------------------------------------------------------------------------*/
4936 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4937 {
4938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4939 "WDI API call before module is initialized - Fail request");
4940
4941 return WDI_STATUS_E_NOT_ALLOWED;
4942 }
4943
4944 /*------------------------------------------------------------------------
4945 Fill in Event data and post to the Main FSM
4946 ------------------------------------------------------------------------*/
4947 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
4948 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
4949 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
4950 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
4951 wdiEventData.pUserData = pUserData;
4952
4953 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4954
4955}/*WDI_UpdateChannelReq*/
4956
Jeff Johnson295189b2012-06-20 16:38:30 -07004957/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004958 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004959 wants to change the state of an ongoing link. Upon the
4960 call of this API the WLAN DAL will pack and send a HAL
4961 Start message request message to the lower RIVA
4962 sub-system if DAL is in state STARTED.
4963
4964 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004965 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004966
4967 WDI_JoinStartReq must have been called.
4968
Jeff Johnsone7245742012-09-05 17:12:55 -07004969 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004970 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004971
Jeff Johnson295189b2012-06-20 16:38:30 -07004972 wdiSetLinkStateRspCb: callback for passing back the
4973 response of the set link state operation received from
4974 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004975
Jeff Johnson295189b2012-06-20 16:38:30 -07004976 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004977 callback
4978
Jeff Johnson295189b2012-06-20 16:38:30 -07004979 @see WDI_JoinStartReq
4980 @return Result of the function call
4981*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004982WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004983WDI_SetLinkStateReq
4984(
4985 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4986 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4987 void* pUserData
4988)
4989{
4990 WDI_EventInfoType wdiEventData;
4991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4992
4993 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004994 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004995 ------------------------------------------------------------------------*/
4996 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4997 {
4998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4999 "WDI API call before module is initialized - Fail request");
5000
Jeff Johnsone7245742012-09-05 17:12:55 -07005001 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005002 }
5003
5004 /*------------------------------------------------------------------------
5005 Fill in Event data and post to the Main FSM
5006 ------------------------------------------------------------------------*/
5007 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005008 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5009 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5010 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005011 wdiEventData.pUserData = pUserData;
5012
5013 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5014
5015}/*WDI_SetLinkStateReq*/
5016
5017
5018/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005019 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005020 to get statistics (MIB counters) from the device. Upon
5021 the call of this API the WLAN DAL will pack and send a
5022 HAL Start request message to the lower RIVA sub-system
5023 if DAL is in state STARTED.
5024
5025 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005026 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005027
5028 WDI_Start must have been called.
5029
Jeff Johnsone7245742012-09-05 17:12:55 -07005030 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005031 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005032
Jeff Johnson295189b2012-06-20 16:38:30 -07005033 wdiGetStatsRspCb: callback for passing back the response
5034 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005035
Jeff Johnson295189b2012-06-20 16:38:30 -07005036 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005037 callback
5038
Jeff Johnson295189b2012-06-20 16:38:30 -07005039 @see WDI_Start
5040 @return Result of the function call
5041*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005042WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005043WDI_GetStatsReq
5044(
5045 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5046 WDI_GetStatsRspCb wdiGetStatsRspCb,
5047 void* pUserData
5048)
5049{
5050 WDI_EventInfoType wdiEventData;
5051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5052
5053 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005054 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005055 ------------------------------------------------------------------------*/
5056 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5057 {
5058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5059 "WDI API call before module is initialized - Fail request");
5060
Jeff Johnsone7245742012-09-05 17:12:55 -07005061 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005062 }
5063
5064 /*------------------------------------------------------------------------
5065 Fill in Event data and post to the Main FSM
5066 ------------------------------------------------------------------------*/
5067 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005068 wdiEventData.pEventData = pwdiGetStatsReqParams;
5069 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5070 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005071 wdiEventData.pUserData = pUserData;
5072
5073 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5074
5075}/*WDI_GetStatsReq*/
5076
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005077#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005078/**
5079 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5080 to get roam rssi from the device. Upon
5081 the call of this API the WLAN DAL will pack and send a
5082 HAL Start request message to the lower RIVA sub-system
5083 if DAL is in state STARTED.
5084
5085 In state BUSY this request will be queued. Request won't
5086 be allowed in any other state.
5087
5088 WDI_Start must have been called.
5089
5090 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5091 specified by the Device Interface
5092
5093 wdiGetRoamRssiRspCb: callback for passing back the response
5094 of the get stats operation received from the device
5095
5096 pUserData: user data will be passed back with the
5097 callback
5098
5099 @see WDI_Start
5100 @return Result of the function call
5101*/
5102WDI_Status
5103WDI_GetRoamRssiReq
5104(
5105 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5106 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5107 void* pUserData
5108)
5109{
5110 WDI_EventInfoType wdiEventData;
5111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5112
5113 /*------------------------------------------------------------------------
5114 Sanity Check
5115 ------------------------------------------------------------------------*/
5116 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5117 {
5118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5119 "WDI API call before module is initialized - Fail request");
5120
5121 return WDI_STATUS_E_NOT_ALLOWED;
5122 }
5123 /*------------------------------------------------------------------------
5124 Fill in Event data and post to the Main FSM
5125 ------------------------------------------------------------------------*/
5126 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5127 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5128 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5129 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5130 wdiEventData.pUserData = pUserData;
5131
5132 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5133
5134}/*WDI_GetRoamRssiReq*/
5135#endif
5136
Jeff Johnson295189b2012-06-20 16:38:30 -07005137
5138/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005139 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005140 it wishes to change the configuration of the WLAN
5141 Device. Upon the call of this API the WLAN DAL will pack
5142 and send a HAL Update CFG request message to the lower
5143 RIVA sub-system if DAL is in state STARTED.
5144
5145 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005146 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005147
5148 WDI_Start must have been called.
5149
Jeff Johnsone7245742012-09-05 17:12:55 -07005150 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005151 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005152
Jeff Johnson295189b2012-06-20 16:38:30 -07005153 wdiUpdateCfgsRspCb: callback for passing back the
5154 response of the update cfg operation received from the
5155 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005156
Jeff Johnson295189b2012-06-20 16:38:30 -07005157 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005158 callback
5159
Jeff Johnson295189b2012-06-20 16:38:30 -07005160 @see WDI_Start
5161 @return Result of the function call
5162*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005163WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005164WDI_UpdateCfgReq
5165(
5166 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5167 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5168 void* pUserData
5169)
5170{
5171 WDI_EventInfoType wdiEventData;
5172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5173
5174 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005175 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005176 ------------------------------------------------------------------------*/
5177 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5178 {
5179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5180 "WDI API call before module is initialized - Fail request");
5181
Jeff Johnsone7245742012-09-05 17:12:55 -07005182 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005183 }
5184
5185 /*------------------------------------------------------------------------
5186 Fill in Event data and post to the Main FSM
5187 ------------------------------------------------------------------------*/
5188 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005189 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5190 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5191 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005192 wdiEventData.pUserData = pUserData;
5193
5194 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5195
5196}/*WDI_UpdateCfgReq*/
5197
5198
5199
5200/**
5201 @brief WDI_AddBAReq will be called when the upper MAC has setup
5202 successfully a BA session and needs to notify the HW for
5203 the appropriate settings to take place. Upon the call of
5204 this API the WLAN DAL will pack and send a HAL Add BA
5205 request message to the lower RIVA sub-system if DAL is
5206 in state STARTED.
5207
5208 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005209 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005210
5211 WDI_PostAssocReq must have been called.
5212
5213 @param wdiAddBAReqParams: the add BA parameters as specified by
5214 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005215
Jeff Johnson295189b2012-06-20 16:38:30 -07005216 wdiAddBARspCb: callback for passing back the response of
5217 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005218
Jeff Johnson295189b2012-06-20 16:38:30 -07005219 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005220 callback
5221
Jeff Johnson295189b2012-06-20 16:38:30 -07005222 @see WDI_PostAssocReq
5223 @return Result of the function call
5224*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005225WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005226WDI_AddBAReq
5227(
5228 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5229 WDI_AddBARspCb wdiAddBARspCb,
5230 void* pUserData
5231)
5232{
5233 WDI_EventInfoType wdiEventData;
5234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5235
5236 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005237 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005238 ------------------------------------------------------------------------*/
5239 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5240 {
5241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5242 "WDI API call before module is initialized - Fail request");
5243
Jeff Johnsone7245742012-09-05 17:12:55 -07005244 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005245 }
5246
5247 /*------------------------------------------------------------------------
5248 Fill in Event data and post to the Main FSM
5249 ------------------------------------------------------------------------*/
5250 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005251 wdiEventData.pEventData = pwdiAddBAReqParams;
5252 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5253 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005254 wdiEventData.pUserData = pUserData;
5255
5256 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5257
5258}/*WDI_AddBAReq*/
5259
5260
5261/**
5262 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5263 successfully a BA session and needs to notify the HW for
5264 the appropriate settings to take place. Upon the call of
5265 this API the WLAN DAL will pack and send a HAL Add BA
5266 request message to the lower RIVA sub-system if DAL is
5267 in state STARTED.
5268
5269 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005270 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005271
5272 WDI_PostAssocReq must have been called.
5273
5274 @param wdiAddBAReqParams: the add BA parameters as specified by
5275 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005276
Jeff Johnson295189b2012-06-20 16:38:30 -07005277 wdiAddBARspCb: callback for passing back the response of
5278 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005279
Jeff Johnson295189b2012-06-20 16:38:30 -07005280 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005281 callback
5282
Jeff Johnson295189b2012-06-20 16:38:30 -07005283 @see WDI_PostAssocReq
5284 @return Result of the function call
5285*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005286WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005287WDI_TriggerBAReq
5288(
5289 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5290 WDI_TriggerBARspCb wdiTriggerBARspCb,
5291 void* pUserData
5292)
5293{
5294 WDI_EventInfoType wdiEventData;
5295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5296
5297 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005298 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005299 ------------------------------------------------------------------------*/
5300 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5301 {
5302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5303 "WDI API call before module is initialized - Fail request");
5304
Jeff Johnsone7245742012-09-05 17:12:55 -07005305 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005306 }
5307
5308 /*------------------------------------------------------------------------
5309 Fill in Event data and post to the Main FSM
5310 ------------------------------------------------------------------------*/
5311 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005312 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5313 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5314 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005315 wdiEventData.pUserData = pUserData;
5316
5317 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5318
5319}/*WDI_AddBAReq*/
5320
5321/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005322 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005323 wishes to update any of the Beacon parameters used by HW.
5324 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5325 message to the lower RIVA sub-system if DAL is in state
5326 STARTED.
5327
5328 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005329 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005330
5331 WDI_PostAssocReq must have been called.
5332
Jeff Johnsone7245742012-09-05 17:12:55 -07005333 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005334 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005335
Jeff Johnson295189b2012-06-20 16:38:30 -07005336 wdiUpdateBeaconParamsRspCb: callback for passing back the
5337 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005338
Jeff Johnson295189b2012-06-20 16:38:30 -07005339 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005340 callback
5341
Jeff Johnson295189b2012-06-20 16:38:30 -07005342 @see WDI_PostAssocReq
5343 @return Result of the function call
5344*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005345WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005346WDI_UpdateBeaconParamsReq
5347(
5348 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5349 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5350 void* pUserData
5351)
5352{
5353 WDI_EventInfoType wdiEventData;
5354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5355
5356 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005357 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005358 ------------------------------------------------------------------------*/
5359 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5360 {
5361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5362 "WDI API call before module is initialized - Fail request");
5363
Jeff Johnsone7245742012-09-05 17:12:55 -07005364 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005365 }
5366
5367 /*------------------------------------------------------------------------
5368 Fill in Event data and post to the Main FSM
5369 ------------------------------------------------------------------------*/
5370 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005371 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5372 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5373 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005374 wdiEventData.pUserData = pUserData;
5375
5376 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5377
5378}/*WDI_UpdateBeaconParamsReq*/
5379
5380/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005381 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005382 wishes to update the Beacon template used by HW.
5383 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5384 message to the lower RIVA sub-system if DAL is in state
5385 STARTED.
5386
5387 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005388 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005389
5390 WDI_PostAssocReq must have been called.
5391
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005393 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005394
Jeff Johnson295189b2012-06-20 16:38:30 -07005395 wdiSendBeaconParamsRspCb: callback for passing back the
5396 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005397
Jeff Johnson295189b2012-06-20 16:38:30 -07005398 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005399 callback
5400
Jeff Johnson295189b2012-06-20 16:38:30 -07005401 @see WDI_PostAssocReq
5402 @return Result of the function call
5403*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005404WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005405WDI_SendBeaconParamsReq
5406(
5407 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5408 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5409 void* pUserData
5410)
5411{
5412 WDI_EventInfoType wdiEventData;
5413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5414
5415 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005416 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005417 ------------------------------------------------------------------------*/
5418 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5419 {
5420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5421 "WDI API call before module is initialized - Fail request");
5422
Jeff Johnsone7245742012-09-05 17:12:55 -07005423 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005424 }
5425
5426 /*------------------------------------------------------------------------
5427 Fill in Event data and post to the Main FSM
5428 ------------------------------------------------------------------------*/
5429 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005430 wdiEventData.pEventData = pwdiSendBeaconParams;
5431 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5432 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005433 wdiEventData.pUserData = pUserData;
5434
5435 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5436
5437}/*WDI_SendBeaconParamsReq*/
5438
5439/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005440 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005441 upper MAC wants to update the probe response template to
5442 be transmitted as Soft AP
5443 Upon the call of this API the WLAN DAL will
5444 pack and send the probe rsp template message to the
5445 lower RIVA sub-system if DAL is in state STARTED.
5446
5447 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005448 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005449
5450
Jeff Johnsone7245742012-09-05 17:12:55 -07005451 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005452 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005453
Jeff Johnson295189b2012-06-20 16:38:30 -07005454 wdiSendBeaconParamsRspCb: callback for passing back the
5455 response of the Send Beacon Params operation received
5456 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005457
Jeff Johnson295189b2012-06-20 16:38:30 -07005458 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005459 callback
5460
Jeff Johnson295189b2012-06-20 16:38:30 -07005461 @see WDI_AddBAReq
5462 @return Result of the function call
5463*/
5464
Jeff Johnsone7245742012-09-05 17:12:55 -07005465WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005466WDI_UpdateProbeRspTemplateReq
5467(
5468 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5469 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5470 void* pUserData
5471)
5472{
5473 WDI_EventInfoType wdiEventData;
5474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5475
5476 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005477 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005478 ------------------------------------------------------------------------*/
5479 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5480 {
5481 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5482 "WDI API call before module is initialized - Fail request");
5483
Jeff Johnsone7245742012-09-05 17:12:55 -07005484 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005485 }
5486
5487 /*------------------------------------------------------------------------
5488 Fill in Event data and post to the Main FSM
5489 ------------------------------------------------------------------------*/
5490 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005491 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5492 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5493 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005494 wdiEventData.pUserData = pUserData;
5495
5496 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5497
5498}/*WDI_UpdateProbeRspTemplateReq*/
5499
5500/**
5501 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5502 to the NV memory.
5503
5504
5505 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5506 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005507
Jeff Johnson295189b2012-06-20 16:38:30 -07005508 wdiNvDownloadRspCb: callback for passing back the response of
5509 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005510
Jeff Johnson295189b2012-06-20 16:38:30 -07005511 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005512 callback
5513
Jeff Johnson295189b2012-06-20 16:38:30 -07005514 @see WDI_PostAssocReq
5515 @return Result of the function call
5516*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005517WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005518WDI_NvDownloadReq
5519(
5520 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5521 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5522 void* pUserData
5523)
5524{
5525 WDI_EventInfoType wdiEventData;
5526
5527 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005528 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005529 ------------------------------------------------------------------------*/
5530 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5531 {
5532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5533 "WDI API call before module is initialized - Fail request");
5534
Jeff Johnsone7245742012-09-05 17:12:55 -07005535 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005536 }
5537
5538 /*------------------------------------------------------------------------
5539 Fill in Event data and post to the Main FSM
5540 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005541 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5542 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5543 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5544 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005545 wdiEventData.pUserData = pUserData;
5546
5547 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5548
5549}/*WDI_NVDownloadReq*/
5550
Jeff Johnson295189b2012-06-20 16:38:30 -07005551/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005552 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005553 upper MAC wants to send Notice of Absence
5554 Upon the call of this API the WLAN DAL will
5555 pack and send the probe rsp template message to the
5556 lower RIVA sub-system if DAL is in state STARTED.
5557
5558 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005559 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005560
5561
Jeff Johnsone7245742012-09-05 17:12:55 -07005562 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005563 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005564
Jeff Johnson295189b2012-06-20 16:38:30 -07005565 wdiSendBeaconParamsRspCb: callback for passing back the
5566 response of the Send Beacon Params operation received
5567 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005568
Jeff Johnson295189b2012-06-20 16:38:30 -07005569 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005570 callback
5571
Jeff Johnson295189b2012-06-20 16:38:30 -07005572 @see WDI_AddBAReq
5573 @return Result of the function call
5574*/
5575WDI_Status
5576WDI_SetP2PGONOAReq
5577(
5578 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5579 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5580 void* pUserData
5581)
5582{
5583 WDI_EventInfoType wdiEventData;
5584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5585
5586 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005587 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005588 ------------------------------------------------------------------------*/
5589 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5590 {
5591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5592 "WDI API call before module is initialized - Fail request");
5593
Jeff Johnsone7245742012-09-05 17:12:55 -07005594 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005595 }
5596
5597 /*------------------------------------------------------------------------
5598 Fill in Event data and post to the Main FSM
5599 ------------------------------------------------------------------------*/
5600 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005601 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5602 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5603 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005604 wdiEventData.pUserData = pUserData;
5605
5606 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5607
5608}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005609
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305610#ifdef FEATURE_WLAN_TDLS
5611/**
5612 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5613 upper MAC wants to send TDLS Link Establish Request Parameters
5614 Upon the call of this API the WLAN DAL will
5615 pack and send the TDLS Link Establish Request message to the
5616 lower RIVA sub-system if DAL is in state STARTED.
5617
5618 In state BUSY this request will be queued. Request won't
5619 be allowed in any other state.
5620
5621
5622 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5623 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5624
5625 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5626 response of the TDLS Link Establish request received
5627 from the device
5628
5629 pUserData: user data will be passed back with the
5630 callback
5631
5632 @see
5633 @return Result of the function call
5634*/
5635WDI_Status
5636WDI_SetTDLSLinkEstablishReq
5637(
5638 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5639 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5640 void* pUserData
5641)
5642{
5643 WDI_EventInfoType wdiEventData;
5644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5645
5646 /*------------------------------------------------------------------------
5647 Sanity Check
5648 ------------------------------------------------------------------------*/
5649 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5650 {
5651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5652 "WDI API call before module is initialized - Fail request");
5653
5654 return WDI_STATUS_E_NOT_ALLOWED;
5655 }
5656
5657 /*------------------------------------------------------------------------
5658 Fill in Event data and post to the Main FSM
5659 ------------------------------------------------------------------------*/
5660 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5661 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5662 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5663 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5664 wdiEventData.pUserData = pUserData;
5665
5666 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5667
5668}/*WDI_SetTDLSLinkEstablishReq*/
5669#endif
5670
Jeff Johnson295189b2012-06-20 16:38:30 -07005671/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005672 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005673 UMAC wanted to add STA self while opening any new session
5674 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005675 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005676
5677
Jeff Johnsone7245742012-09-05 17:12:55 -07005678 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005679 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005680
Jeff Johnson295189b2012-06-20 16:38:30 -07005681 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005682 callback
5683
5684 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 @return Result of the function call
5686*/
5687WDI_Status
5688WDI_AddSTASelfReq
5689(
5690 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5691 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5692 void* pUserData
5693)
5694{
5695 WDI_EventInfoType wdiEventData;
5696 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5697
5698 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005699 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005700 ------------------------------------------------------------------------*/
5701 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5702 {
5703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5704 "WDI API call before module is initialized - Fail request");
5705
Jeff Johnsone7245742012-09-05 17:12:55 -07005706 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005707 }
5708
5709 /*------------------------------------------------------------------------
5710 Fill in Event data and post to the Main FSM
5711 ------------------------------------------------------------------------*/
5712 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005713 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5714 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5715 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005716 wdiEventData.pUserData = pUserData;
5717
5718 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5719
5720}/*WDI_AddSTASelfReq*/
5721
5722
Jeff Johnsone7245742012-09-05 17:12:55 -07005723#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005724/**
5725 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5726 the device of a successful add TSpec negotiation. HW
5727 needs to receive the TSpec Info from the UMAC in order
5728 to configure properly the QoS data traffic. Upon the
5729 call of this API the WLAN DAL will pack and send a HAL
5730 Add TS request message to the lower RIVA sub-system if
5731 DAL is in state STARTED.
5732
5733 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005734 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005735
5736 WDI_PostAssocReq must have been called.
5737
5738 @param wdiAddTsReqParams: the add TS parameters as specified by
5739 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005740
Jeff Johnson295189b2012-06-20 16:38:30 -07005741 wdiAddTsRspCb: callback for passing back the response of
5742 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005743
Jeff Johnson295189b2012-06-20 16:38:30 -07005744 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005745 callback
5746
Jeff Johnson295189b2012-06-20 16:38:30 -07005747 @see WDI_PostAssocReq
5748 @return Result of the function call
5749*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005750WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005751WDI_AggrAddTSReq
5752(
5753 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5754 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5755 void* pUserData
5756)
5757{
5758 WDI_EventInfoType wdiEventData;
5759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5760
5761 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005762 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005763 ------------------------------------------------------------------------*/
5764 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5765 {
5766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5767 "WDI API call before module is initialized - Fail request");
5768
Jeff Johnsone7245742012-09-05 17:12:55 -07005769 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005770 }
5771
5772 /*------------------------------------------------------------------------
5773 Fill in Event data and post to the Main FSM
5774 ------------------------------------------------------------------------*/
5775 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005776 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5777 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5778 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005779 wdiEventData.pUserData = pUserData;
5780
5781 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5782
5783}/*WDI_AggrAddTSReq*/
5784
5785#endif /* WLAN_FEATURE_VOWIFI_11R */
5786
Jeff Johnson295189b2012-06-20 16:38:30 -07005787/**
5788 @brief WDI_FTMCommandReq
5789 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005790
5791 @param ftmCommandReq: FTM Command Body
5792 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005793 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005794
Jeff Johnson295189b2012-06-20 16:38:30 -07005795 @see
5796 @return Result of the function call
5797*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005798WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005799WDI_FTMCommandReq
5800(
5801 WDI_FTMCommandReqType *ftmCommandReq,
5802 WDI_FTMCommandRspCb ftmCommandRspCb,
5803 void *pUserData
5804)
5805{
5806 WDI_EventInfoType wdiEventData;
5807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5808
5809 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005810 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005811 ------------------------------------------------------------------------*/
5812 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5813 {
5814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5815 "WDI API call before module is initialized - Fail request");
5816
Jeff Johnsone7245742012-09-05 17:12:55 -07005817 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005818 }
5819
5820 /*------------------------------------------------------------------------
5821 Fill in Event data and post to the Main FSM
5822 ------------------------------------------------------------------------*/
5823 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5824 wdiEventData.pEventData = (void *)ftmCommandReq;
5825 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5826 wdiEventData.pCBfnc = ftmCommandRspCb;
5827 wdiEventData.pUserData = pUserData;
5828
5829 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5830}
Jeff Johnson295189b2012-06-20 16:38:30 -07005831/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005832 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005833
5834 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005835 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005836
5837
5838 @param pwdiResumeReqParams: as specified by
5839 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005840
Jeff Johnson295189b2012-06-20 16:38:30 -07005841 wdiResumeReqRspCb: callback for passing back the response of
5842 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005843
Jeff Johnson295189b2012-06-20 16:38:30 -07005844 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005845 callback
5846
5847 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005848 @return Result of the function call
5849*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005850WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005851WDI_HostResumeReq
5852(
5853 WDI_ResumeParamsType* pwdiResumeReqParams,
5854 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5855 void* pUserData
5856)
5857{
5858 WDI_EventInfoType wdiEventData;
5859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5860
5861 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005862 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005863 ------------------------------------------------------------------------*/
5864 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5865 {
5866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5867 "WDI API call before module is initialized - Fail request");
5868
Jeff Johnsone7245742012-09-05 17:12:55 -07005869 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005870 }
5871
5872 /*------------------------------------------------------------------------
5873 Fill in Event data and post to the Main FSM
5874 ------------------------------------------------------------------------*/
5875 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005876 wdiEventData.pEventData = pwdiResumeReqParams;
5877 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5878 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005879 wdiEventData.pUserData = pUserData;
5880
5881 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5882
5883}/*WDI_HostResumeReq*/
5884
5885/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005886 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005887
5888 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005889 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005890
5891
5892 @param pwdiDelStaSelfReqParams: as specified by
5893 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005894
Jeff Johnson295189b2012-06-20 16:38:30 -07005895 wdiDelStaSelfRspCb: callback for passing back the response of
5896 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005897
Jeff Johnson295189b2012-06-20 16:38:30 -07005898 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005899 callback
5900
Jeff Johnson295189b2012-06-20 16:38:30 -07005901 @see WDI_PostAssocReq
5902 @return Result of the function call
5903*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005904WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005905WDI_DelSTASelfReq
5906(
5907 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5908 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5909 void* pUserData
5910)
5911{
5912 WDI_EventInfoType wdiEventData;
5913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5914
5915 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005916 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005917 ------------------------------------------------------------------------*/
5918 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5919 {
5920 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5921 "WDI API call before module is initialized - Fail request");
5922
Jeff Johnsone7245742012-09-05 17:12:55 -07005923 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005924 }
5925
5926 /*------------------------------------------------------------------------
5927 Fill in Event data and post to the Main FSM
5928 ------------------------------------------------------------------------*/
5929 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005930 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5931 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5932 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005933 wdiEventData.pUserData = pUserData;
5934
5935 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5936
5937}/*WDI_AggrAddTSReq*/
5938
5939/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005940 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5941 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005942 Upon the call of this API the WLAN DAL will pack
5943 and send a HAL Set Tx Per Tracking request message to the
5944 lower RIVA sub-system if DAL is in state STARTED.
5945
5946 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005947 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005948
Jeff Johnsone7245742012-09-05 17:12:55 -07005949 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005950 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005951
Jeff Johnson295189b2012-06-20 16:38:30 -07005952 pwdiSetTxPerTrackingRspCb: callback for passing back the
5953 response of the set Tx PER Tracking configurations operation received
5954 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005955
Jeff Johnson295189b2012-06-20 16:38:30 -07005956 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005957 callback
5958
Jeff Johnson295189b2012-06-20 16:38:30 -07005959 @return Result of the function call
5960*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005961WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005962WDI_SetTxPerTrackingReq
5963(
5964 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5965 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5966 void* pUserData
5967)
5968{
5969 WDI_EventInfoType wdiEventData;
5970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5971
5972 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005973 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005974 ------------------------------------------------------------------------*/
5975 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5976 {
5977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5978 "WDI API call before module is initialized - Fail request");
5979
Jeff Johnsone7245742012-09-05 17:12:55 -07005980 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005981 }
5982
5983 /*------------------------------------------------------------------------
5984 Fill in Event data and post to the Main FSM
5985 ------------------------------------------------------------------------*/
5986 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005987 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005988 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005989 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005990 wdiEventData.pUserData = pUserData;
5991
5992 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5993
5994}/*WDI_SetTxPerTrackingReq*/
5995
5996/**
5997 @brief WDI_SetTmLevelReq
5998 If HW Thermal condition changed, driver should react based on new
5999 HW thermal condition.
6000
6001 @param pwdiSetTmLevelReq: New thermal condition information
6002
6003 pwdiSetTmLevelRspCb: callback
6004
6005 usrData: user data will be passed back with the
6006 callback
6007
6008 @return Result of the function call
6009*/
6010WDI_Status
6011WDI_SetTmLevelReq
6012(
6013 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6014 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6015 void *usrData
6016)
6017{
6018 WDI_EventInfoType wdiEventData;
6019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6020
6021 /*------------------------------------------------------------------------
6022 Sanity Check
6023 ------------------------------------------------------------------------*/
6024 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6025 {
6026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6027 "WDI API call before module is initialized - Fail request");
6028
6029 return WDI_STATUS_E_NOT_ALLOWED;
6030 }
6031
6032 /*------------------------------------------------------------------------
6033 Fill in Event data and post to the Main FSM
6034 ------------------------------------------------------------------------*/
6035 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6036 wdiEventData.pEventData = pwdiSetTmLevelReq;
6037 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6038 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6039 wdiEventData.pUserData = usrData;
6040
6041 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6042}
6043
6044/**
6045 @brief WDI_HostSuspendInd
6046
6047 Suspend Indication from the upper layer will be sent
6048 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006049
Jeff Johnson295189b2012-06-20 16:38:30 -07006050 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006051
6052 @see
6053
Jeff Johnson295189b2012-06-20 16:38:30 -07006054 @return Status of the request
6055*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006056WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006057WDI_HostSuspendInd
6058(
6059 WDI_SuspendParamsType* pwdiSuspendIndParams
6060)
6061{
6062
6063 WDI_EventInfoType wdiEventData;
6064 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6065
6066 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006067 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006068 ------------------------------------------------------------------------*/
6069 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6070 {
6071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6072 "WDI API call before module is initialized - Fail request");
6073
Jeff Johnsone7245742012-09-05 17:12:55 -07006074 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006075 }
6076
6077 /*------------------------------------------------------------------------
6078 Fill in Event data and post to the Main FSM
6079 ------------------------------------------------------------------------*/
6080 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006081 wdiEventData.pEventData = pwdiSuspendIndParams;
6082 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6083 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006084 wdiEventData.pUserData = NULL;
6085
6086 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6087
6088}/*WDI_HostSuspendInd*/
6089
6090/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006091 @brief WDI_TrafficStatsInd
6092 Traffic Stats from the upper layer will be sent
6093 down to HAL
6094
6095 @param WDI_TrafficStatsIndType
6096
6097 @see
6098
6099 @return Status of the request
6100*/
6101WDI_Status
6102WDI_TrafficStatsInd
6103(
6104 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6105)
6106{
6107
6108 WDI_EventInfoType wdiEventData;
6109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6110
6111 /*------------------------------------------------------------------------
6112 Sanity Check
6113 ------------------------------------------------------------------------*/
6114 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6115 {
6116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6117 "WDI API call before module is initialized - Fail request");
6118
6119 return WDI_STATUS_E_NOT_ALLOWED;
6120 }
6121
6122 /*------------------------------------------------------------------------
6123 Fill in Event data and post to the Main FSM
6124 ------------------------------------------------------------------------*/
6125 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6126 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6127 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6128 wdiEventData.pCBfnc = NULL;
6129 wdiEventData.pUserData = NULL;
6130
6131 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6132
6133}/*WDI_TrafficStatsInd*/
6134
Chet Lanctot186b5732013-03-18 10:26:30 -07006135#ifdef WLAN_FEATURE_11W
6136/**
6137 @brief WDI_ExcludeUnencryptedInd
6138 Register with HAL to receive/drop unencrypted frames
6139
6140 @param WDI_ExcludeUnencryptIndType
6141
6142 @see
6143
6144 @return Status of the request
6145*/
6146WDI_Status
6147WDI_ExcludeUnencryptedInd
6148(
6149 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6150)
6151{
6152
6153 WDI_EventInfoType wdiEventData;
6154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6155
6156 /*------------------------------------------------------------------------
6157 Sanity Check
6158 ------------------------------------------------------------------------*/
6159 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6160 {
6161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6162 "WDI API call before module is initialized - Fail request");
6163
6164 return WDI_STATUS_E_NOT_ALLOWED;
6165 }
6166
6167 /*------------------------------------------------------------------------
6168 Fill in Event data and post to the Main FSM
6169 ------------------------------------------------------------------------*/
6170 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6171 wdiEventData.pEventData = pWdiExcUnencParams;
6172 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6173 wdiEventData.pCBfnc = NULL;
6174 wdiEventData.pUserData = NULL;
6175
6176 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6177
6178}/*WDI_TrafficStatsInd*/
6179#endif
6180
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006181/**
Yue Mab9c86f42013-08-14 15:59:08 -07006182 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6183
6184 @param addPeriodicTxPtrnParams: Add Pattern parameters
6185
6186 @see
6187
6188 @return Status of the request
6189*/
6190WDI_Status
6191WDI_AddPeriodicTxPtrnInd
6192(
6193 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6194)
6195{
6196 WDI_EventInfoType wdiEventData;
6197
6198 /*-------------------------------------------------------------------------
6199 Sanity Check
6200 ------------------------------------------------------------------------*/
6201 if (eWLAN_PAL_FALSE == gWDIInitialized)
6202 {
6203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6204 "WDI API call before module is initialized - Fail request!");
6205
6206 return WDI_STATUS_E_NOT_ALLOWED;
6207 }
6208
6209 /*-------------------------------------------------------------------------
6210 Fill in Event data and post to the Main FSM
6211 ------------------------------------------------------------------------*/
6212 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6213 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6214 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6215 wdiEventData.pCBfnc = NULL;
6216 wdiEventData.pUserData = NULL;
6217
6218 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6219}
6220
6221/**
6222 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6223
6224 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6225
6226 @see
6227
6228 @return Status of the request
6229*/
6230WDI_Status
6231WDI_DelPeriodicTxPtrnInd
6232(
6233 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6234)
6235{
6236 WDI_EventInfoType wdiEventData;
6237
6238 /*-------------------------------------------------------------------------
6239 Sanity Check
6240 ------------------------------------------------------------------------*/
6241 if (eWLAN_PAL_FALSE == gWDIInitialized)
6242 {
6243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6244 "WDI API call before module is initialized - Fail request!");
6245
6246 return WDI_STATUS_E_NOT_ALLOWED;
6247 }
6248
6249 /*-------------------------------------------------------------------------
6250 Fill in Event data and post to the Main FSM
6251 ------------------------------------------------------------------------*/
6252 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6253 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6254 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6255 wdiEventData.pCBfnc = NULL;
6256 wdiEventData.pUserData = NULL;
6257
6258 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6259}
6260
6261/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006262 @brief WDI_HALDumpCmdReq
6263 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006264
6265 @param halDumpCmdReqParams: Hal Dump Command Body
6266 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006267 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006268
Jeff Johnson295189b2012-06-20 16:38:30 -07006269 @see
6270 @return Result of the function call
6271*/
6272WDI_Status WDI_HALDumpCmdReq
6273(
6274 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6275 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6276 void *pUserData
6277)
6278{
6279 WDI_EventInfoType wdiEventData;
6280 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6281
6282 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006283 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006284 ------------------------------------------------------------------------*/
6285 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6286 {
6287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6288 "WDI API call before module is initialized - Fail request");
6289
Jeff Johnsone7245742012-09-05 17:12:55 -07006290 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006291 }
6292
6293 /*------------------------------------------------------------------------
6294 Fill in Event data and post to the Main FSM
6295 ------------------------------------------------------------------------*/
6296 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6297 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6298 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6299 wdiEventData.pCBfnc = halDumpCmdRspCb;
6300 wdiEventData.pUserData = pUserData;
6301
6302 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6303}
6304
Jeff Johnsone7245742012-09-05 17:12:55 -07006305/*============================================================================
6306
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006308
Jeff Johnson295189b2012-06-20 16:38:30 -07006309 ============================================================================*/
6310
6311/**
6312 @brief Main FSM Start function for all states except BUSY
6313
Jeff Johnsone7245742012-09-05 17:12:55 -07006314
6315 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006316 wdiEV: event posted to the main DAL FSM
6317 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006318 structure
6319
Jeff Johnson295189b2012-06-20 16:38:30 -07006320 @see
6321 @return Result of the function call
6322*/
6323WDI_Status
6324WDI_PostMainEvent
6325(
Jeff Johnsone7245742012-09-05 17:12:55 -07006326 WDI_ControlBlockType* pWDICtx,
6327 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006328 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006329
Jeff Johnson295189b2012-06-20 16:38:30 -07006330)
6331{
Jeff Johnsone7245742012-09-05 17:12:55 -07006332 WDI_Status wdiStatus;
6333 WDI_MainFuncType pfnWDIMainEvHdlr;
6334 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6336
6337 /*-------------------------------------------------------------------------
6338 Sanity check
6339 -------------------------------------------------------------------------*/
6340 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6341 ( wdiEV >= WDI_MAX_EVENT ))
6342 {
6343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6344 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6345 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006346 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006347 }
6348
6349 /*Access to the global state must be locked */
6350 wpalMutexAcquire(&pWDICtx->wptMutex);
6351
6352 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006353 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006354
6355 wdiOldState = pWDICtx->uGlobalState;
6356
6357 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006358 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6359 response comes from CCPU for the request sent by host:
6360 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 -07006361 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 -07006362 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006363 CCPU:
6364 don't change the state */
6365 if ( WDI_RESPONSE_EVENT != wdiEV)
6366 {
6367 /*Transition to BUSY State - the request is now being processed by the FSM,
6368 if the request fails we shall transition back to the old state, if not
6369 the request will manage its own state transition*/
6370 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6371 }
6372 /* If the state function associated with the EV is NULL it means that this
6373 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006374 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006375 {
6376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006377 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006378 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006379 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006380 }
6381 else
6382 {
6383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006384 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006385 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006386 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006387 }
6388
6389 /* If a request handles itself well it will end up in a success or in a
6390 pending
6391 Success - means that the request was processed and the proper state
6392 transition already occurred or will occur when the resp is received
6393 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006394
Jeff Johnson295189b2012-06-20 16:38:30 -07006395 Pending - means the request could not be processed at this moment in time
6396 because the FSM was already busy so no state transition or dequeueing
6397 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006398
Jeff Johnson295189b2012-06-20 16:38:30 -07006399 Success for synchronous case means that the transition may occur and
6400 processing of pending requests may continue - so it should go through
6401 and restores the state and continue processing queued requests*/
6402 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6403 ( WDI_STATUS_PENDING != wdiStatus ))
6404 {
6405 if ( WDI_RESPONSE_EVENT != wdiEV)
6406 {
6407 /*The request has failed or could not be processed - transition back to
6408 the old state - check to see if anything was queued and try to execute
6409 The dequeue logic should post a message to a thread and return - no
6410 actual processing can occur */
6411 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6412 }
6413 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006414
Jeff Johnson295189b2012-06-20 16:38:30 -07006415 }
6416
6417 /* we have completed processing the event */
6418 wpalMutexRelease(&pWDICtx->wptMutex);
6419
Jeff Johnsone7245742012-09-05 17:12:55 -07006420 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006421
6422}/*WDI_PostMainEvent*/
6423
6424
6425/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006426 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006427--------------------------------------------------------------------------*/
6428/**
6429 @brief Main FSM Start function for all states except BUSY
6430
Jeff Johnsone7245742012-09-05 17:12:55 -07006431
6432 @param pWDICtx: pointer to the WLAN DAL context
6433 pEventData: pointer to the event information structure
6434
Jeff Johnson295189b2012-06-20 16:38:30 -07006435 @see
6436 @return Result of the function call
6437*/
6438WDI_Status
6439WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006440(
Jeff Johnson295189b2012-06-20 16:38:30 -07006441 WDI_ControlBlockType* pWDICtx,
6442 WDI_EventInfoType* pEventData
6443)
6444{
6445
6446 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006447 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006448 ----------------------------------------------------------------------*/
6449 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6450 {
6451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006452 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006453 pWDICtx, pEventData);
6454 return WDI_STATUS_E_FAILURE;
6455 }
6456
6457 wpalMutexAcquire(&pWDICtx->wptMutex);
6458
6459 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006460 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006461 ----------------------------------------------------------------------*/
6462 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6463 {
6464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6465 "Control Transport not yet Open - queueing the request");
6466
6467 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006468 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006469
6470 wpalMutexRelease(&pWDICtx->wptMutex);
6471 return WDI_STATUS_PENDING;
6472 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006473
Jeff Johnson295189b2012-06-20 16:38:30 -07006474 wpalMutexRelease(&pWDICtx->wptMutex);
6475
6476 /*Return Success*/
6477 return WDI_ProcessRequest( pWDICtx, pEventData );
6478
6479}/*WDI_MainStart*/
6480
6481/**
6482 @brief Main FSM Response function for state INIT
6483
Jeff Johnsone7245742012-09-05 17:12:55 -07006484
6485 @param pWDICtx: pointer to the WLAN DAL context
6486 pEventData: pointer to the event information structure
6487
Jeff Johnson295189b2012-06-20 16:38:30 -07006488 @see
6489 @return Result of the function call
6490*/
6491WDI_Status
6492WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006493(
Jeff Johnson295189b2012-06-20 16:38:30 -07006494 WDI_ControlBlockType* pWDICtx,
6495 WDI_EventInfoType* pEventData
6496)
6497{
6498 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006499 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006500 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006501 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006502
6503 /*Return Success*/
6504 return WDI_STATUS_E_NOT_ALLOWED;
6505}/* WDI_MainRspInit */
6506
6507/**
6508 @brief Main FSM Close function for all states except BUSY
6509
Jeff Johnsone7245742012-09-05 17:12:55 -07006510
6511 @param pWDICtx: pointer to the WLAN DAL context
6512 pEventData: pointer to the event information structure
6513
Jeff Johnson295189b2012-06-20 16:38:30 -07006514 @see
6515 @return Result of the function call
6516*/
6517WDI_Status
6518WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006519(
Jeff Johnson295189b2012-06-20 16:38:30 -07006520 WDI_ControlBlockType* pWDICtx,
6521 WDI_EventInfoType* pEventData
6522)
6523{
6524
6525 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006526 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006527 ----------------------------------------------------------------------*/
6528 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6529 {
6530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006531 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006532 pWDICtx, pEventData);
6533 return WDI_STATUS_E_FAILURE;
6534 }
6535
6536 /*Return Success*/
6537 return WDI_ProcessRequest( pWDICtx, pEventData );
6538
6539}/*WDI_MainClose*/
6540/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006541 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006542--------------------------------------------------------------------------*/
6543/**
6544 @brief Main FSM Start function for state STARTED
6545
Jeff Johnsone7245742012-09-05 17:12:55 -07006546
6547 @param pWDICtx: pointer to the WLAN DAL context
6548 pEventData: pointer to the event information structure
6549
Jeff Johnson295189b2012-06-20 16:38:30 -07006550 @see
6551 @return Result of the function call
6552*/
6553WDI_Status
6554WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006555(
Jeff Johnson295189b2012-06-20 16:38:30 -07006556 WDI_ControlBlockType* pWDICtx,
6557 WDI_EventInfoType* pEventData
6558)
6559{
6560 WDI_StartRspCb wdiStartRspCb = NULL;
6561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6562
6563 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006564 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006565 ----------------------------------------------------------------------*/
6566 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6567 {
6568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006569 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006570 pWDICtx, pEventData);
6571 return WDI_STATUS_E_FAILURE;
6572 }
6573
6574 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006575 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006576 ----------------------------------------------------------------------*/
6577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006578 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006579
6580 wpalMutexAcquire(&pWDICtx->wptMutex);
6581
6582 /*Transition back to started because the post function transitioned us to
6583 busy*/
6584 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6585
6586 /*Check to see if any request is pending*/
6587 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006588
Jeff Johnson295189b2012-06-20 16:38:30 -07006589 wpalMutexRelease(&pWDICtx->wptMutex);
6590
6591 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006592 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6593
Jeff Johnson295189b2012-06-20 16:38:30 -07006594 /*Notify UMAC*/
6595 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6596
6597 /*Return Success*/
6598 return WDI_STATUS_SUCCESS;
6599
6600}/*WDI_MainStartStarted*/
6601
6602/**
6603 @brief Main FSM Stop function for state STARTED
6604
Jeff Johnsone7245742012-09-05 17:12:55 -07006605
6606 @param pWDICtx: pointer to the WLAN DAL context
6607 pEventData: pointer to the event information structure
6608
Jeff Johnson295189b2012-06-20 16:38:30 -07006609 @see
6610 @return Result of the function call
6611*/
6612WDI_Status
6613WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006614(
Jeff Johnson295189b2012-06-20 16:38:30 -07006615 WDI_ControlBlockType* pWDICtx,
6616 WDI_EventInfoType* pEventData
6617)
6618{
6619 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006620 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006621 ----------------------------------------------------------------------*/
6622 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6623 {
6624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006625 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006626 pWDICtx, pEventData);
6627 return WDI_STATUS_E_FAILURE;
6628 }
6629
6630 /*State at this point is BUSY - because we enter this state before posting
6631 an event to the FSM in order to prevent potential race conditions*/
6632
6633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6634 "Processing stop request in FSM");
6635
6636 /*Return Success*/
6637 return WDI_ProcessRequest( pWDICtx, pEventData );
6638
6639}/*WDI_MainStopStarted*/
6640/**
6641 @brief Main FSM Request function for state started
6642
Jeff Johnsone7245742012-09-05 17:12:55 -07006643
6644 @param pWDICtx: pointer to the WLAN DAL context
6645 pEventData: pointer to the event information structure
6646
Jeff Johnson295189b2012-06-20 16:38:30 -07006647 @see
6648 @return Result of the function call
6649*/
6650WDI_Status
6651WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006652(
Jeff Johnson295189b2012-06-20 16:38:30 -07006653 WDI_ControlBlockType* pWDICtx,
6654 WDI_EventInfoType* pEventData
6655)
6656{
6657
6658 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006659 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006660 ----------------------------------------------------------------------*/
6661 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6662 {
6663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006664 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006665 pWDICtx, pEventData);
6666 return WDI_STATUS_E_FAILURE;
6667 }
6668
6669 /*State at this point is BUSY - because we enter this state before posting
6670 an event to the FSM in order to prevent potential race conditions*/
6671
6672 /*Return Success*/
6673 return WDI_ProcessRequest( pWDICtx, pEventData );
6674
6675}/*WDI_MainReqStarted*/
6676
6677/**
6678 @brief Main FSM Response function for all states except INIT
6679
Jeff Johnsone7245742012-09-05 17:12:55 -07006680
6681 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006682 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006683
Jeff Johnson295189b2012-06-20 16:38:30 -07006684 @see
6685 @return Result of the function call
6686*/
6687WDI_Status
6688WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006689(
Jeff Johnson295189b2012-06-20 16:38:30 -07006690 WDI_ControlBlockType* pWDICtx,
6691 WDI_EventInfoType* pEventData
6692)
6693{
Jeff Johnsone7245742012-09-05 17:12:55 -07006694 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006695 wpt_boolean expectedResponse;
6696
6697 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006698 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006699 ----------------------------------------------------------------------*/
6700 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6701 {
6702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006703 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006704 pWDICtx, pEventData);
6705 return WDI_STATUS_E_FAILURE;
6706 }
6707
6708 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6709 {
6710 /* we received an expected response */
6711 expectedResponse = eWLAN_PAL_TRUE;
6712
6713 /*We expect that we will transition to started after this processing*/
6714 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6715
6716 /* we are no longer expecting a response */
6717 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6718 }
6719 else
6720 {
6721 /* we received an indication or unexpected response */
6722 expectedResponse = eWLAN_PAL_FALSE;
6723 /* for indications no need to update state from what it is right
6724 now, unless it explicitly does it in the indication handler (say
6725 for device failure ind) */
6726 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6727 }
6728
6729 /*Process the response and indication */
6730 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6731
6732 /*Lock the CB as we are about to do a state transition*/
6733 wpalMutexAcquire(&pWDICtx->wptMutex);
6734
6735 /*Transition to the expected state after the response processing
6736 - this should always be started state with the following exceptions:
6737 1. processing of a failed start response
6738 2. device failure detected while processing response
6739 3. stop response received*/
6740 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006741
Jeff Johnson295189b2012-06-20 16:38:30 -07006742 /*Dequeue request that may have been queued while we were waiting for the
6743 response */
6744 if ( expectedResponse )
6745 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006746 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006747 }
6748
6749 wpalMutexRelease(&pWDICtx->wptMutex);
6750
6751 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006752 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006753
6754}/*WDI_MainRsp*/
6755
6756/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006757 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006758--------------------------------------------------------------------------*/
6759/**
6760 @brief Main FSM Stop function for state STOPPED
6761
Jeff Johnsone7245742012-09-05 17:12:55 -07006762
6763 @param pWDICtx: pointer to the WLAN DAL context
6764 pEventData: pointer to the event information structure
6765
Jeff Johnson295189b2012-06-20 16:38:30 -07006766 @see
6767 @return Result of the function call
6768*/
6769WDI_Status
6770WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006771(
Jeff Johnson295189b2012-06-20 16:38:30 -07006772 WDI_ControlBlockType* pWDICtx,
6773 WDI_EventInfoType* pEventData
6774)
6775{
6776 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006777 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006778 ----------------------------------------------------------------------*/
6779 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6780 {
6781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006782 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006783 pWDICtx, pEventData);
6784 return WDI_STATUS_E_FAILURE;
6785 }
6786
6787 /*We should normally not get a STOP request if we are already stopped
6788 since we should normally be stopped by the UMAC. However in some
6789 error situations we put ourselves in the stopped state without the
6790 UMAC knowing, so when we get a STOP request in this state we still
6791 process it since we need to clean up the underlying state */
6792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6793 "Processing stop request while stopped in FSM");
6794
6795 /*Return Success*/
6796 return WDI_ProcessRequest( pWDICtx, pEventData );
6797
6798}/*WDI_MainStopStopped*/
6799
6800/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006801 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006802--------------------------------------------------------------------------*/
6803/**
6804 @brief Main FSM Start function for state BUSY
6805
Jeff Johnsone7245742012-09-05 17:12:55 -07006806
6807 @param pWDICtx: pointer to the WLAN DAL context
6808 pEventData: pointer to the event information structure
6809
Jeff Johnson295189b2012-06-20 16:38:30 -07006810 @see
6811 @return Result of the function call
6812*/
6813WDI_Status
6814WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006815(
Jeff Johnson295189b2012-06-20 16:38:30 -07006816 WDI_ControlBlockType* pWDICtx,
6817 WDI_EventInfoType* pEventData
6818)
6819{
6820 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006821 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006822 ----------------------------------------------------------------------*/
6823 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6824 {
6825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006826 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006827 pWDICtx, pEventData);
6828 return WDI_STATUS_E_FAILURE;
6829 }
6830
6831 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006832 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006833 ----------------------------------------------------------------------*/
6834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6835 "WDI Busy state - queue start request");
6836
6837 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006838 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006839
6840 /*Return Success*/
6841 return WDI_STATUS_PENDING;
6842}/*WDI_MainStartBusy*/
6843
6844/**
6845 @brief Main FSM Stop function for state BUSY
6846
Jeff Johnsone7245742012-09-05 17:12:55 -07006847
6848 @param pWDICtx: pointer to the WLAN DAL context
6849 pEventData: pointer to the event information structure
6850
Jeff Johnson295189b2012-06-20 16:38:30 -07006851 @see
6852 @return Result of the function call
6853*/
6854WDI_Status
6855WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006856(
Jeff Johnson295189b2012-06-20 16:38:30 -07006857 WDI_ControlBlockType* pWDICtx,
6858 WDI_EventInfoType* pEventData
6859)
6860{
6861 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006862 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006863 ----------------------------------------------------------------------*/
6864 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6865 {
6866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006867 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006868 pWDICtx, pEventData);
6869 return WDI_STATUS_E_FAILURE;
6870 }
6871
6872 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006873 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006874 ----------------------------------------------------------------------*/
6875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6876 "WDI Busy state - queue stop request");
6877
Jeff Johnsone7245742012-09-05 17:12:55 -07006878 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006880
Jeff Johnson295189b2012-06-20 16:38:30 -07006881}/*WDI_MainStopBusy*/
6882
6883/**
6884 @brief Main FSM Request function for state BUSY
6885
Jeff Johnsone7245742012-09-05 17:12:55 -07006886
6887 @param pWDICtx: pointer to the WLAN DAL context
6888 pEventData: pointer to the event information structure
6889
Jeff Johnson295189b2012-06-20 16:38:30 -07006890 @see
6891 @return Result of the function call
6892*/
6893WDI_Status
6894WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006895(
Jeff Johnson295189b2012-06-20 16:38:30 -07006896 WDI_ControlBlockType* pWDICtx,
6897 WDI_EventInfoType* pEventData
6898)
6899{
6900 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006901 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006902 ----------------------------------------------------------------------*/
6903 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6904 {
6905 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006906 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006907 pWDICtx, pEventData);
6908 return WDI_STATUS_E_FAILURE;
6909 }
6910
6911 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006912 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006913 ----------------------------------------------------------------------*/
6914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6915 "WDI Busy state - queue request %d because waiting for response %d",
6916 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6917
Jeff Johnsone7245742012-09-05 17:12:55 -07006918 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006919 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006920
Jeff Johnson295189b2012-06-20 16:38:30 -07006921}/*WDI_MainReqBusy*/
6922/**
6923 @brief Main FSM Close function for state BUSY
6924
Jeff Johnsone7245742012-09-05 17:12:55 -07006925
6926 @param pWDICtx: pointer to the WLAN DAL context
6927 pEventData: pointer to the event information structure
6928
Jeff Johnson295189b2012-06-20 16:38:30 -07006929 @see
6930 @return Result of the function call
6931*/
6932WDI_Status
6933WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006934(
Jeff Johnson295189b2012-06-20 16:38:30 -07006935 WDI_ControlBlockType* pWDICtx,
6936 WDI_EventInfoType* pEventData
6937)
6938{
6939 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006940 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006941 ----------------------------------------------------------------------*/
6942 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6943 {
6944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006945 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006946 pWDICtx, pEventData);
6947 return WDI_STATUS_E_FAILURE;
6948 }
6949
6950 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006951 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006952 ----------------------------------------------------------------------*/
6953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6954 "WDI Busy state - queue close request");
6955
Jeff Johnsone7245742012-09-05 17:12:55 -07006956 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006957 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006958
Jeff Johnson295189b2012-06-20 16:38:30 -07006959}/*WDI_MainCloseBusy*/
6960
6961/**
6962 @brief Main FSM Shutdown function for INIT & STARTED states
6963
6964
6965 @param pWDICtx: pointer to the WLAN DAL context
6966 pEventData: pointer to the event information structure
6967
6968 @see
6969 @return Result of the function call
6970*/
6971WDI_Status
6972WDI_MainShutdown
6973(
6974 WDI_ControlBlockType* pWDICtx,
6975 WDI_EventInfoType* pEventData
6976)
6977{
6978 /*--------------------------------------------------------------------
6979 Sanity Check
6980 ----------------------------------------------------------------------*/
6981 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6982 {
6983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006984 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006985 pWDICtx, pEventData);
6986 return WDI_STATUS_E_FAILURE;
6987 }
6988
6989 /*State at this point is BUSY - because we enter this state before posting
6990 an event to the FSM in order to prevent potential race conditions*/
6991
6992 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6993 "Processing shutdown request in FSM");
6994
6995 /*Return Success*/
6996 return WDI_ProcessRequest( pWDICtx, pEventData );
6997
6998}/*WDI_MainShutdown*/
6999
7000/**
7001 @brief Main FSM Shutdown function for BUSY state
7002
7003
7004 @param pWDICtx: pointer to the WLAN DAL context
7005 pEventData: pointer to the event information structure
7006
7007 @see
7008 @return Result of the function call
7009*/
7010WDI_Status
7011WDI_MainShutdownBusy
7012(
7013 WDI_ControlBlockType* pWDICtx,
7014 WDI_EventInfoType* pEventData
7015)
7016{
7017 /*--------------------------------------------------------------------
7018 Sanity Check
7019 ----------------------------------------------------------------------*/
7020 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7021 {
7022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007023 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007024 pWDICtx, pEventData);
7025 return WDI_STATUS_E_FAILURE;
7026 }
7027
7028 /* If you are waiting for a HAL response at this stage, you are not
7029 * going to get it. Riva is already shutdown/crashed.
7030 */
7031 wpalTimerStop(&gWDICb.wptResponseTimer);
7032
7033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7034 "Processing shutdown request in FSM: Busy state ");
7035
7036 return WDI_ProcessRequest( pWDICtx, pEventData );
7037
7038}/*WDI_MainShutdownBusy*/
7039
7040
Jeff Johnsone7245742012-09-05 17:12:55 -07007041/*=======================================================================
7042
Jeff Johnson295189b2012-06-20 16:38:30 -07007043 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007044
Jeff Johnson295189b2012-06-20 16:38:30 -07007045*=======================================================================*/
7046
7047/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007048 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007049========================================================================*/
7050/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007051 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007052 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007053
7054 @param pWDICtx: pointer to the WLAN DAL context
7055 pEventData: pointer to the event information structure
7056
Jeff Johnson295189b2012-06-20 16:38:30 -07007057 @see
7058 @return Result of the function call
7059*/
7060WDI_Status
7061WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007062(
Jeff Johnson295189b2012-06-20 16:38:30 -07007063 WDI_ControlBlockType* pWDICtx,
7064 WDI_EventInfoType* pEventData
7065)
7066{
7067 WDI_StartReqParamsType* pwdiStartParams = NULL;
7068 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007069 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007070 wpt_uint16 usDataOffset = 0;
7071 wpt_uint16 usSendSize = 0;
7072
Jeff Johnsone7245742012-09-05 17:12:55 -07007073 tHalMacStartReqMsg halStartReq;
7074 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7076
7077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007078 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007079 -------------------------------------------------------------------------*/
7080 if (( NULL == pEventData ) ||
7081 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7082 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7083 {
7084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007088 }
7089
7090 /*-----------------------------------------------------------------------
7091 Get message buffer
7092 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007093 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007094 pwdiStartParams->usConfigBufferLen;
7095
Jeff Johnsone7245742012-09-05 17:12:55 -07007096 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 usLen,
7098 &pSendBuffer, &usDataOffset, &usSendSize))||
7099 ( usSendSize < (usDataOffset + usLen )))
7100 {
7101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007102 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007103 pEventData, pwdiStartParams, wdiStartRspCb);
7104 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007106 }
7107
7108 /*-----------------------------------------------------------------------
7109 Fill in the message
7110 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007111 halStartReq.startReqParams.driverType =
7112 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007113
Jeff Johnsone7245742012-09-05 17:12:55 -07007114 halStartReq.startReqParams.uConfigBufferLen =
7115 pwdiStartParams->usConfigBufferLen;
7116 wpalMemoryCopy( pSendBuffer+usDataOffset,
7117 &halStartReq.startReqParams,
7118 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007119
Jeff Johnsone7245742012-09-05 17:12:55 -07007120 usDataOffset += sizeof(halStartReq.startReqParams);
7121 wpalMemoryCopy( pSendBuffer+usDataOffset,
7122 pwdiStartParams->pConfigBuffer,
7123 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007124
7125 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007126 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007127
7128 /*Save Low Level Ind CB and associated user data - it will be used further
7129 on when an indication is coming from the lower MAC*/
7130 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007131 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007132
Jeff Johnsone7245742012-09-05 17:12:55 -07007133 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007135 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007136 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007137 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007138 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7139
Jeff Johnsone7245742012-09-05 17:12:55 -07007140
Jeff Johnson295189b2012-06-20 16:38:30 -07007141}/*WDI_ProcessStartReq*/
7142
7143/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007144 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007145 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007146
7147 @param pWDICtx: pointer to the WLAN DAL context
7148 pEventData: pointer to the event information structure
7149
Jeff Johnson295189b2012-06-20 16:38:30 -07007150 @see
7151 @return Result of the function call
7152*/
7153WDI_Status
7154WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007155(
Jeff Johnson295189b2012-06-20 16:38:30 -07007156 WDI_ControlBlockType* pWDICtx,
7157 WDI_EventInfoType* pEventData
7158)
7159{
7160 WDI_StopReqParamsType* pwdiStopParams = NULL;
7161 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007162 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007163 wpt_uint16 usDataOffset = 0;
7164 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007165 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007166 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7168
7169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007170 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007171 -------------------------------------------------------------------------*/
7172 if (( NULL == pEventData ) ||
7173 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7174 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7175 {
7176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007178 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007179 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007180 }
7181
7182 /*-----------------------------------------------------------------------
7183 Get message buffer
7184 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007185 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007186 sizeof(halStopReq.stopReqParams),
7187 &pSendBuffer, &usDataOffset, &usSendSize))||
7188 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7189 {
7190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007191 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007192 pEventData, pwdiStopParams, wdiStopRspCb);
7193 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007194 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007195 }
7196
7197 /*-----------------------------------------------------------------------
7198 Fill in the message
7199 -----------------------------------------------------------------------*/
7200 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7201 pwdiStopParams->wdiStopReason);
7202
Jeff Johnsone7245742012-09-05 17:12:55 -07007203 wpalMemoryCopy( pSendBuffer+usDataOffset,
7204 &halStopReq.stopReqParams,
7205 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007206
7207 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007208 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007209
7210 /*! TO DO: stop the data services */
7211 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7212 {
7213 /*Stop the STA Table !UT- check this logic again
7214 It is safer to do it here than on the response - because a stop is imminent*/
7215 WDI_STATableStop(pWDICtx);
7216
7217 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007218 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7219 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007220 {
7221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7222 "WDI Init failed to reset power state event");
7223
Jeff Johnsone7245742012-09-05 17:12:55 -07007224 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007225 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007226 }
7227 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007228 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7229 if( eWLAN_PAL_STATUS_SUCCESS != status )
7230 {
7231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007232 "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 -08007233 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007234 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007235 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007236 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007237 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007238 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007239 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7240 WDI_SET_POWER_STATE_TIMEOUT);
7241 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007242 {
7243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7244 "WDI Init failed to wait on an event");
7245
Jeff Johnsone7245742012-09-05 17:12:55 -07007246 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007247 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007248 }
7249 }
7250
7251 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007252 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007253 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007254 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7256
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007257fail:
7258 // Release the message buffer so we don't leak
7259 wpalMemoryFree(pSendBuffer);
7260
7261failRequest:
7262 //WDA should have failure check to avoid the memory leak
7263 return WDI_STATUS_E_FAILURE;
7264
Jeff Johnson295189b2012-06-20 16:38:30 -07007265}/*WDI_ProcessStopReq*/
7266
7267/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007268 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007269 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007270
7271 @param pWDICtx: pointer to the WLAN DAL context
7272 pEventData: pointer to the event information structure
7273
Jeff Johnson295189b2012-06-20 16:38:30 -07007274 @see
7275 @return Result of the function call
7276*/
7277WDI_Status
7278WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007279(
Jeff Johnson295189b2012-06-20 16:38:30 -07007280 WDI_ControlBlockType* pWDICtx,
7281 WDI_EventInfoType* pEventData
7282)
7283{
Jeff Johnsone7245742012-09-05 17:12:55 -07007284 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7286
7287 /*Lock control block for cleanup*/
7288 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007289
Jeff Johnson295189b2012-06-20 16:38:30 -07007290 /*Clear all pending request*/
7291 WDI_ClearPendingRequests(pWDICtx);
7292
7293 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007294 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007295
7296 /* Close Data transport*/
7297 /* FTM mode does not open Data Path */
7298 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7299 {
7300 WDTS_Close(pWDICtx);
7301 }
7302
7303 /*Close the STA Table !UT- check this logic again*/
7304 WDI_STATableClose(pWDICtx);
7305
7306 /*close the PAL */
7307 wptStatus = wpalClose(pWDICtx->pPALContext);
7308 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7309 {
7310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7311 "Failed to wpal Close %d", wptStatus);
7312 WDI_ASSERT(0);
7313 }
7314
7315 /*Transition back to init state*/
7316 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7317
7318 wpalMutexRelease(&pWDICtx->wptMutex);
7319
7320 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007321 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007322
Jeff Johnsone7245742012-09-05 17:12:55 -07007323 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007324}/*WDI_ProcessCloseReq*/
7325
7326
7327/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007328 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007329===========================================================================*/
7330
7331/**
7332 @brief Process Init Scan Request function (called when Main FSM
7333 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007334
7335 @param pWDICtx: pointer to the WLAN DAL context
7336 pEventData: pointer to the event information structure
7337
Jeff Johnson295189b2012-06-20 16:38:30 -07007338 @see
7339 @return Result of the function call
7340*/
7341WDI_Status
7342WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007343(
Jeff Johnson295189b2012-06-20 16:38:30 -07007344 WDI_ControlBlockType* pWDICtx,
7345 WDI_EventInfoType* pEventData
7346)
7347{
7348 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7349 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007350 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007351 wpt_uint16 usDataOffset = 0;
7352 wpt_uint16 usSendSize = 0;
7353 wpt_uint8 i = 0;
7354
7355 tHalInitScanReqMsg halInitScanReqMsg;
7356
Jeff Johnsone7245742012-09-05 17:12:55 -07007357 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007358 * It shold be removed once host and riva changes are in sync*/
7359 tHalInitScanConReqMsg halInitScanConReqMsg;
7360
7361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7362
7363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007364 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007365 -------------------------------------------------------------------------*/
7366 if (( NULL == pEventData ) ||
7367 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7368 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7369 {
7370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007374 }
7375
7376#if 0
7377 wpalMutexAcquire(&pWDICtx->wptMutex);
7378 /*-----------------------------------------------------------------------
7379 Check to see if SCAN is already in progress - if so reject the req
7380 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007381 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007382 -----------------------------------------------------------------------*/
7383 if ( pWDICtx->bScanInProgress )
7384 {
7385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7386 "Scan is already in progress - subsequent scan is not allowed"
7387 " until the first scan completes");
7388
7389 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007390 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007391 }
7392
Jeff Johnsone7245742012-09-05 17:12:55 -07007393 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7394 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007395
7396 wpalMutexRelease(&pWDICtx->wptMutex);
7397#endif
Viral Modid86bde22012-12-10 13:09:21 -08007398 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007399 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007400 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007401 * It shold be removed once host and riva changes are in sync*/
7402 /*-----------------------------------------------------------------------
7403 Get message buffer
7404 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007405 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007406 sizeof(halInitScanConReqMsg.initScanParams),
7407 &pSendBuffer, &usDataOffset, &usSendSize))||
7408 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7409 {
7410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007411 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7413 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007414 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007415 }
7416
7417
7418 /*-----------------------------------------------------------------------
7419 Fill in the message
7420 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007421 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007422 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7423
7424 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7425 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7426
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007429 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007430 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007431 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007432 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7433
7434 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7435 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7436
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7438 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007439
Jeff Johnsone7245742012-09-05 17:12:55 -07007440 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007441 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7442
7443 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7444 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007445 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007446 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7447 }
7448
Jeff Johnsone7245742012-09-05 17:12:55 -07007449 wpalMemoryCopy( pSendBuffer+usDataOffset,
7450 &halInitScanConReqMsg.initScanParams,
7451 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007452 }
7453 else
7454 {
7455 /*-----------------------------------------------------------------------
7456 Get message buffer
7457 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007458 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007459 sizeof(halInitScanReqMsg.initScanParams),
7460 &pSendBuffer, &usDataOffset, &usSendSize))||
7461 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7462 {
7463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007464 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007465 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 }
7469
7470
7471 /*-----------------------------------------------------------------------
7472 Fill in the message
7473 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007474 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007475 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7476
7477 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7478 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7479
Jeff Johnsone7245742012-09-05 17:12:55 -07007480 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007482 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007483 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007484 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007485 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7486
7487 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7488 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7489
Jeff Johnsone7245742012-09-05 17:12:55 -07007490 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007491 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7492
7493 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7494 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007495 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007496 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7497 }
7498
Jeff Johnsone7245742012-09-05 17:12:55 -07007499 wpalMemoryCopy( pSendBuffer+usDataOffset,
7500 &halInitScanReqMsg.initScanParams,
7501 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007502 }
7503
7504 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007505 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007506
7507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007508 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007509 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007510 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7512
7513}/*WDI_ProcessInitScanReq*/
7514
7515/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007516 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007518
7519 @param pWDICtx: pointer to the WLAN DAL context
7520 pEventData: pointer to the event information structure
7521
Jeff Johnson295189b2012-06-20 16:38:30 -07007522 @see
7523 @return Result of the function call
7524*/
7525WDI_Status
7526WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007527(
Jeff Johnson295189b2012-06-20 16:38:30 -07007528 WDI_ControlBlockType* pWDICtx,
7529 WDI_EventInfoType* pEventData
7530)
7531{
7532 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7533 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007534 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007535 wpt_uint16 usDataOffset = 0;
7536 wpt_uint16 usSendSize = 0;
7537
Jeff Johnsone7245742012-09-05 17:12:55 -07007538 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7540
7541 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007542 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007543 -------------------------------------------------------------------------*/
7544 if (( NULL == pEventData ) ||
7545 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7546 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7547 {
7548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007549 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007550 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007552 }
7553
7554#if 0
7555 wpalMutexAcquire(&pWDICtx->wptMutex);
7556 /*-----------------------------------------------------------------------
7557 Check to see if SCAN is already in progress - start scan is only
7558 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007559 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007560 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007561 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007562 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7563 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7564 {
7565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7566 "Scan start not allowed in this state %d %d",
7567 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007568
Jeff Johnson295189b2012-06-20 16:38:30 -07007569 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007570 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007571 }
7572
Jeff Johnsone7245742012-09-05 17:12:55 -07007573 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007574
7575 wpalMutexRelease(&pWDICtx->wptMutex);
7576#endif
7577
7578 /*-----------------------------------------------------------------------
7579 Get message buffer
7580 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007581 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007582 sizeof(halStartScanReqMsg.startScanParams),
7583 &pSendBuffer, &usDataOffset, &usSendSize))||
7584 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7585 {
7586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007587 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007588 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007591 }
7592
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007595 wpalMemoryCopy( pSendBuffer+usDataOffset,
7596 &halStartScanReqMsg.startScanParams,
7597 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007598
7599 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007600 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007601
7602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007603 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007604 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007605 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007606 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7607}/*WDI_ProcessStartScanReq*/
7608
7609
7610/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007611 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007612 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007613
7614 @param pWDICtx: pointer to the WLAN DAL context
7615 pEventData: pointer to the event information structure
7616
Jeff Johnson295189b2012-06-20 16:38:30 -07007617 @see
7618 @return Result of the function call
7619*/
7620WDI_Status
7621WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007622(
Jeff Johnson295189b2012-06-20 16:38:30 -07007623 WDI_ControlBlockType* pWDICtx,
7624 WDI_EventInfoType* pEventData
7625)
7626{
7627 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7628 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007629 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007630 wpt_uint16 usDataOffset = 0;
7631 wpt_uint16 usSendSize = 0;
7632
Jeff Johnsone7245742012-09-05 17:12:55 -07007633 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7635
7636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 -------------------------------------------------------------------------*/
7639 if (( NULL == pEventData ) ||
7640 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7641 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7642 {
7643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007647 }
7648
Jeff Johnsone7245742012-09-05 17:12:55 -07007649 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7650 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007651 * forwarded to HAL and result in hang*/
7652#if 0
7653 wpalMutexAcquire(&pWDICtx->wptMutex);
7654 /*-----------------------------------------------------------------------
7655 Check to see if SCAN is already in progress - end scan is only
7656 allowed when a scan is ongoing and the state of the scan procedure
7657 is started
7658 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007659 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7661 {
7662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7663 "End start not allowed in this state %d %d",
7664 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007665
Jeff Johnson295189b2012-06-20 16:38:30 -07007666 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007667 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 }
7669
Jeff Johnsone7245742012-09-05 17:12:55 -07007670 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007671
7672 wpalMutexRelease(&pWDICtx->wptMutex);
7673#endif
7674
7675 /*-----------------------------------------------------------------------
7676 Get message buffer
7677 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007678 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007679 sizeof(halEndScanReqMsg.endScanParams),
7680 &pSendBuffer, &usDataOffset, &usSendSize))||
7681 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7682 {
7683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007684 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007685 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007688 }
7689
7690 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7691
Jeff Johnsone7245742012-09-05 17:12:55 -07007692 wpalMemoryCopy( pSendBuffer+usDataOffset,
7693 &halEndScanReqMsg.endScanParams,
7694 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007695
7696 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007697 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007698
7699 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007700 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007701 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007702 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007703 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7704}/*WDI_ProcessEndScanReq*/
7705
7706
7707/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007708 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007709 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007710
7711 @param pWDICtx: pointer to the WLAN DAL context
7712 pEventData: pointer to the event information structure
7713
Jeff Johnson295189b2012-06-20 16:38:30 -07007714 @see
7715 @return Result of the function call
7716*/
7717WDI_Status
7718WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007719(
Jeff Johnson295189b2012-06-20 16:38:30 -07007720 WDI_ControlBlockType* pWDICtx,
7721 WDI_EventInfoType* pEventData
7722)
7723{
7724 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7725 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007726 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 wpt_uint16 usDataOffset = 0;
7728 wpt_uint16 usSendSize = 0;
7729 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08007730 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007731 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7733
7734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007736 -------------------------------------------------------------------------*/
7737 if (( NULL == pEventData ) ||
7738 ( NULL == pEventData->pEventData) ||
7739 ( NULL == pEventData->pCBfnc))
7740 {
7741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007745 }
7746
7747 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7748 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007749 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7750 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 * forwarded to HAL and result in hang*/
7752#if 0
7753 wpalMutexAcquire(&pWDICtx->wptMutex);
7754 /*-----------------------------------------------------------------------
7755 Check to see if SCAN is already in progress
7756 Finish scan gets invoked any scan states. ie. abort scan
7757 It should be allowed in any states.
7758 -----------------------------------------------------------------------*/
7759 if ( !pWDICtx->bScanInProgress )
7760 {
7761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7762 "Finish start not allowed in this state %d",
7763 pWDICtx->bScanInProgress );
7764
7765 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08007766 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007767 }
7768
7769 /*-----------------------------------------------------------------------
7770 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007771 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007772 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7774 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007775 wpalMutexRelease(&pWDICtx->wptMutex);
7776#endif
7777
7778 if ( pWDICtx->bInBmps )
7779 {
7780 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08007781 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7782 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7783 {
7784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007785 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08007786 WDI_ASSERT(0);
7787 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007788 }
7789
7790 /*-----------------------------------------------------------------------
7791 Get message buffer
7792 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007793 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007794 sizeof(halFinishScanReqMsg.finishScanParams),
7795 &pSendBuffer, &usDataOffset, &usSendSize))||
7796 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7797 {
7798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007799 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007800 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7801 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 }
7804
Jeff Johnsone7245742012-09-05 17:12:55 -07007805 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007806 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7807
Jeff Johnsone7245742012-09-05 17:12:55 -07007808 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007809 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7810
Jeff Johnsone7245742012-09-05 17:12:55 -07007811 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007812 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7813
7814 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7815 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7816
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007819 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007820 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007821 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7823
Jeff Johnsone7245742012-09-05 17:12:55 -07007824 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007825 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7826
7827 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7828 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007829 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007830 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7831 }
7832
7833 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7834 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7835
Jeff Johnsone7245742012-09-05 17:12:55 -07007836 wpalMemoryCopy( pSendBuffer+usDataOffset,
7837 &halFinishScanReqMsg.finishScanParams,
7838 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007839
7840 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007841 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007842
7843 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007844 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007845 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007846 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007847 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7848}/*WDI_ProcessFinishScanReq*/
7849
7850
7851/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007852 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007853==========================================================================*/
7854/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007855 @brief Process BSS Join for a given Session
7856
7857 @param pWDICtx: pointer to the WLAN DAL context
7858 pEventData: pointer to the event information structure
7859
Jeff Johnson295189b2012-06-20 16:38:30 -07007860 @see
7861 @return Result of the function call
7862*/
7863WDI_Status
7864WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007865(
Jeff Johnson295189b2012-06-20 16:38:30 -07007866 WDI_ControlBlockType* pWDICtx,
7867 WDI_JoinReqParamsType* pwdiJoinParams,
7868 WDI_JoinRspCb wdiJoinRspCb,
7869 void* pUserData
7870)
7871{
7872 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007873 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007874 wpt_uint16 usDataOffset = 0;
7875 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007876 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007877
Jeff Johnsone7245742012-09-05 17:12:55 -07007878 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7880
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007881 wpalMutexAcquire(&pWDICtx->wptMutex);
7882
Jeff Johnson295189b2012-06-20 16:38:30 -07007883 /*------------------------------------------------------------------------
7884 Check to see if we have any session with this BSSID already stored, we
7885 should not
7886 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007887 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7888 pwdiJoinParams->wdiReqInfo.macBSSID,
7889 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007890
7891 if ( NULL != pBSSSes )
7892 {
7893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007894 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7895 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007896
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007897 /*reset the bAssociationInProgress otherwise the next
7898 *join request will be queued*/
7899 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7900 wpalMutexRelease(&pWDICtx->wptMutex);
7901 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007902 }
7903
Jeff Johnson295189b2012-06-20 16:38:30 -07007904 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007908 if ( NULL == pBSSSes )
7909 {
7910
7911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7912 "DAL has no free sessions - cannot run another join");
7913
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007914 /*reset the bAssociationInProgress otherwise the next
7915 *join request will be queued*/
7916 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007917 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007918 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007919 }
7920
7921 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7923 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007924 WDI_MAC_ADDR_LEN);
7925
7926 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007927 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007928 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007929
Jeff Johnson295189b2012-06-20 16:38:30 -07007930 wpalMutexRelease(&pWDICtx->wptMutex);
7931
7932 /*-----------------------------------------------------------------------
7933 Get message buffer
7934 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007936 sizeof(halJoinReqMsg.joinReqParams),
7937 &pSendBuffer, &usDataOffset, &usSendSize))||
7938 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7939 {
7940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007941 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007942 pUserData, pwdiJoinParams, wdiJoinRspCb);
7943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007945 }
7946
7947 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007948 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007949
7950 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007951 pwdiJoinParams->wdiReqInfo.macSTASelf,
7952 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007953
Jeff Johnsone7245742012-09-05 17:12:55 -07007954 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007955 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7956
7957 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7958
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007959#ifdef WLAN_FEATURE_VOWIFI
7960 halJoinReqMsg.joinReqParams.maxTxPower =
7961 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7962#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007963 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007964 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7965#endif
7966
Jeff Johnsone7245742012-09-05 17:12:55 -07007967 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007968 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7969 wdiSecondaryChannelOffset);
7970
Jeff Johnsone7245742012-09-05 17:12:55 -07007971 wpalMemoryCopy( pSendBuffer+usDataOffset,
7972 &halJoinReqMsg.joinReqParams,
7973 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007974
7975 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007976 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007977
7978 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007979 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007981 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7982 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007983
7984}/*WDI_ProcessBSSSessionJoinReq*/
7985
7986/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007987 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007988 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007989
7990 @param pWDICtx: pointer to the WLAN DAL context
7991 pEventData: pointer to the event information structure
7992
Jeff Johnson295189b2012-06-20 16:38:30 -07007993 @see
7994 @return Result of the function call
7995*/
7996WDI_Status
7997WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007998(
Jeff Johnson295189b2012-06-20 16:38:30 -07007999 WDI_ControlBlockType* pWDICtx,
8000 WDI_EventInfoType* pEventData
8001)
8002{
8003 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8004 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8005 WDI_JoinRspCb wdiJoinRspCb = NULL;
8006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8007
8008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008010 -------------------------------------------------------------------------*/
8011 if (( NULL == pEventData ) ||
8012 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8013 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8014 {
8015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008016 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008019 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008020
Jeff Johnson295189b2012-06-20 16:38:30 -07008021 /*-------------------------------------------------------------------------
8022 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008023 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 -------------------------------------------------------------------------*/
8025 wpalMutexAcquire(&pWDICtx->wptMutex);
8026
8027 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8028 {
8029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8030 "Association is currently in progress, queueing new join req");
8031
8032 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008033 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008034 pwdiJoinParams->wdiReqInfo.macBSSID);
8035
8036 wpalMutexRelease(&pWDICtx->wptMutex);
8037
Jeff Johnsone7245742012-09-05 17:12:55 -07008038 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008039 }
8040
8041 /*Starting a new association */
8042 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8043 wpalMutexRelease(&pWDICtx->wptMutex);
8044
8045 /*Process the Join Request*/
8046 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8047 wdiJoinRspCb,pEventData->pUserData);
8048
8049}/*WDI_ProcessJoinReq*/
8050
8051
8052/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008053 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008054 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008055
8056 @param pWDICtx: pointer to the WLAN DAL context
8057 pEventData: pointer to the event information structure
8058
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 @see
8060 @return Result of the function call
8061*/
8062WDI_Status
8063WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008064(
Jeff Johnson295189b2012-06-20 16:38:30 -07008065 WDI_ControlBlockType* pWDICtx,
8066 WDI_EventInfoType* pEventData
8067)
8068{
8069 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8070 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008071 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008072 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008073 wpt_uint16 uMsgSize = 0;
8074 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008075 wpt_uint16 usDataOffset = 0;
8076 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008077 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008078
Jeff Johnsone7245742012-09-05 17:12:55 -07008079 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8081
8082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008084 -------------------------------------------------------------------------*/
8085 if (( NULL == pEventData ) ||
8086 ( NULL == pEventData->pEventData ) ||
8087 ( NULL == pEventData->pCBfnc ))
8088 {
8089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008090 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 }
8094
8095 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8096 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8097 /*-------------------------------------------------------------------------
8098 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008099 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008100 -------------------------------------------------------------------------*/
8101 wpalMutexAcquire(&pWDICtx->wptMutex);
8102
8103 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008105 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008106 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8107 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8108 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008109
Jeff Johnsone7245742012-09-05 17:12:55 -07008110 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008111 {
8112#ifdef WLAN_FEATURE_VOWIFI_11R
8113 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008114 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008115 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008116 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008117 if ( NULL == pBSSSes )
8118 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008119
Jeff Johnson295189b2012-06-20 16:38:30 -07008120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8121 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008122
Jeff Johnson295189b2012-06-20 16:38:30 -07008123 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008126
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008128 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8129 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008130 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008131
Jeff Johnson295189b2012-06-20 16:38:30 -07008132 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008133 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8135#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008136 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008137 * Request in case of IBSS*/
8138 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8139 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8140 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8141 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8142 {
8143 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008144 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008145 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 if ( NULL == pBSSSes )
8148 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008149
Jeff Johnson295189b2012-06-20 16:38:30 -07008150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8151 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008152
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008154 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008155 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008156
Jeff Johnson295189b2012-06-20 16:38:30 -07008157 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008158 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8159 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008161
Jeff Johnson295189b2012-06-20 16:38:30 -07008162 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008163 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008164 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8165 }
8166 else
8167 {
8168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008169 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8170 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8171 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8172
Jeff Johnson295189b2012-06-20 16:38:30 -07008173 /* for IBSS testing */
8174 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008175 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008176 }
8177#endif
8178 }
8179
8180 /*------------------------------------------------------------------------
8181 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008182 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008183 ------------------------------------------------------------------------*/
8184 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8185 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8187 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8188 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8189 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008190
Jeff Johnsone7245742012-09-05 17:12:55 -07008191 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008192
8193 wpalMutexRelease(&pWDICtx->wptMutex);
8194
Jeff Johnsone7245742012-09-05 17:12:55 -07008195 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008196 }
8197
8198 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8200 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008201 sizeof(pWDICtx->wdiCachedConfigBssReq));
8202
8203 wpalMutexRelease(&pWDICtx->wptMutex);
8204
Jeff Johnsone7245742012-09-05 17:12:55 -07008205 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8206#ifdef WLAN_FEATURE_11AC
8207 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008208 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008209 else
8210#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008211 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008212
8213 /*-----------------------------------------------------------------------
8214 Get message buffer
8215 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008216 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008217 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8218 ( usSendSize < (usDataOffset + uMsgSize )))
8219 {
8220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008221 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008222 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8223 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 }
8226
8227 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008228#ifdef WLAN_FEATURE_11AC
8229 if (WDI_getFwWlanFeatCaps(DOT11AC))
8230 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8231 &pwdiConfigBSSParams->wdiReqInfo);
8232 else
8233#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008235 &pwdiConfigBSSParams->wdiReqInfo);
8236
8237 /* Need to fill in the STA Index to invalid, since at this point we have not
8238 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008239 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008240
8241 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8243
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008244#ifdef WLAN_FEATURE_11AC
8245 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8246 wpalMemoryCopy( pSendBuffer+usDataOffset,
8247 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8248 uMsgSize);
8249 }else
8250#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008251 {
8252 if ( uMsgSize <= sizeof(tConfigBssParams) )
8253 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008254 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008255 &halConfigBssReqMsg.uBssParams.configBssParams,
8256 uMsgSize);
8257 }
8258 else
8259 {
8260 return WDI_STATUS_E_FAILURE;
8261 }
8262 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008263
8264 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008266
8267 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008268 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008269 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008270 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8271 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008272 WDI_CONFIG_BSS_RESP);
8273
8274}/*WDI_ProcessConfigBSSReq*/
8275
8276
8277/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008278 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008279 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008280
8281 @param pWDICtx: pointer to the WLAN DAL context
8282 pEventData: pointer to the event information structure
8283
Jeff Johnson295189b2012-06-20 16:38:30 -07008284 @see
8285 @return Result of the function call
8286*/
8287WDI_Status
8288WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008289(
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 WDI_ControlBlockType* pWDICtx,
8291 WDI_EventInfoType* pEventData
8292)
8293{
8294 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8295 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008298 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008299 wpt_uint16 usDataOffset = 0;
8300 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008301 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008302
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8305
8306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008307 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 -------------------------------------------------------------------------*/
8309 if (( NULL == pEventData ) ||
8310 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8311 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8312 {
8313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008314 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 }
8318
8319 /*-------------------------------------------------------------------------
8320 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008321 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008322 -------------------------------------------------------------------------*/
8323 wpalMutexAcquire(&pWDICtx->wptMutex);
8324
8325 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008327 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8329 pwdiDelBSSParams->ucBssIdx,
8330 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008331
Jeff Johnsone7245742012-09-05 17:12:55 -07008332 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008333 {
8334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008335 "%s: BSS does not yet exist. ucBssIdx %d",
8336 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008337
8338 wpalMutexRelease(&pWDICtx->wptMutex);
8339
8340 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008342
8343 /*------------------------------------------------------------------------
8344 Check if this BSS is being currently processed or queued,
8345 if queued - queue the new request as well
8346 ------------------------------------------------------------------------*/
8347 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8350 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8351 __func__, pwdiDelBSSParams->ucBssIdx);
8352
8353 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8354
8355 wpalMutexRelease(&pWDICtx->wptMutex);
8356
8357 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008358 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008359
Jeff Johnson295189b2012-06-20 16:38:30 -07008360 /*-----------------------------------------------------------------------
8361 If we receive a Del BSS request for an association that is already in
8362 progress, it indicates that the assoc has failed => we no longer have
8363 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008364 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 -----------------------------------------------------------------------*/
8366 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8367 {
8368 /*We can switch to false here because even if a subsequent Join comes in
8369 it will only be processed when DAL transitions out of BUSY state which
8370 happens when the Del BSS request comes */
8371 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8372
8373 /*Former association is complete - prepare next pending assoc for
8374 processing */
8375 WDI_DequeueAssocRequest(pWDICtx);
8376 }
8377
8378 wpalMutexRelease(&pWDICtx->wptMutex);
8379 /*-----------------------------------------------------------------------
8380 Get message buffer
8381 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008382 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 sizeof(halBssReqMsg.deleteBssParams),
8384 &pSendBuffer, &usDataOffset, &usSendSize))||
8385 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8386 {
8387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008388 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008389 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008392 }
8393
8394 /*Fill in the message request structure*/
8395
8396 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008397 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008398
Jeff Johnsone7245742012-09-05 17:12:55 -07008399 wpalMemoryCopy( pSendBuffer+usDataOffset,
8400 &halBssReqMsg.deleteBssParams,
8401 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008402
8403 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008404 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008405
Jeff Johnsone7245742012-09-05 17:12:55 -07008406
Jeff Johnson295189b2012-06-20 16:38:30 -07008407 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008408 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008409 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008411 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8412
Jeff Johnsone7245742012-09-05 17:12:55 -07008413
Jeff Johnson295189b2012-06-20 16:38:30 -07008414}/*WDI_ProcessDelBSSReq*/
8415
8416/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008418 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008419
8420 @param pWDICtx: pointer to the WLAN DAL context
8421 pEventData: pointer to the event information structure
8422
Jeff Johnson295189b2012-06-20 16:38:30 -07008423 @see
8424 @return Result of the function call
8425*/
8426WDI_Status
8427WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008428(
Jeff Johnson295189b2012-06-20 16:38:30 -07008429 WDI_ControlBlockType* pWDICtx,
8430 WDI_EventInfoType* pEventData
8431)
8432{
8433 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8434 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008435 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008436 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 wpt_uint16 usDataOffset = 0;
8439 wpt_uint16 usSendSize = 0;
8440 wpt_uint16 uMsgSize = 0;
8441 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008442 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008443
Jeff Johnsone7245742012-09-05 17:12:55 -07008444 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8446
8447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008448 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 -------------------------------------------------------------------------*/
8450 if (( NULL == pEventData ) ||
8451 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8452 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8453 {
8454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008458 }
8459
8460 /*-------------------------------------------------------------------------
8461 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008463 -------------------------------------------------------------------------*/
8464 wpalMutexAcquire(&pWDICtx->wptMutex);
8465
8466 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008467 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008468 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008469 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8470 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8471 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008472
8473 if ( NULL == pBSSSes )
8474 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8476 "%s: Association sequence for this BSS does not yet exist - "
8477 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8478 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008479
8480 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008481 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008482 }
8483
8484 /*------------------------------------------------------------------------
8485 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008486 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008487 ------------------------------------------------------------------------*/
8488 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8489 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8491 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8492 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008493
Jeff Johnsone7245742012-09-05 17:12:55 -07008494 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008495
8496 wpalMutexRelease(&pWDICtx->wptMutex);
8497
Jeff Johnsone7245742012-09-05 17:12:55 -07008498 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008499 }
8500
8501 /*-----------------------------------------------------------------------
8502 If Post Assoc was not yet received - the current association must
8503 be in progress
8504 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008506 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8507 {
8508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8509 "Association sequence for this BSS association no longer in "
8510 "progress - not allowed");
8511
8512 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008513 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008514 }
8515
8516 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008518 -----------------------------------------------------------------------*/
8519 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8520 {
8521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8522 "Post Assoc not allowed before JOIN - failing request");
8523
8524 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008526 }
8527
8528 wpalMutexRelease(&pWDICtx->wptMutex);
8529
8530 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8531 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8532 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008533 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008535 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008536 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8537 ( usSendSize < (usDataOffset + uMsgSize )))
8538 {
8539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008540 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008541 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008544 }
8545
8546 /*Copy the STA parameters */
8547 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8548 &pwdiPostAssocParams->wdiSTAParams );
8549
8550 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008552 WDI_STATableFindStaidByAddr(pWDICtx,
8553 pwdiPostAssocParams->wdiSTAParams.macSTA,
8554 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8555 {
8556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008557 MAC_ADDRESS_STR
8558 ": This station does not exist in the WDI Station Table",
8559 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008561 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008563 }
8564
8565 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008566 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008567 pBSSSes->ucBSSIdx;
8568
8569 /*Copy the BSS parameters */
8570 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8571 &pwdiPostAssocParams->wdiBSSParams);
8572
8573 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008574 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008575 WDI_STATableFindStaidByAddr(pWDICtx,
8576 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008577 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008578 {
8579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008580 MAC_ADDRESS_STR
8581 ": This station does not exist in the WDI Station Table",
8582 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008584 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008586 }
8587
8588 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008589 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008590 pBSSSes->ucBSSIdx;
8591
Jeff Johnsone7245742012-09-05 17:12:55 -07008592
8593 wpalMemoryCopy( pSendBuffer+usDataOffset,
8594 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8595 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008596
8597 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8598
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8600 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8601 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008602
Jeff Johnsone7245742012-09-05 17:12:55 -07008603
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008606
Jeff Johnsone7245742012-09-05 17:12:55 -07008607
8608 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008609 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008610 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008611
8612 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008613 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008614 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008615 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008616 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8617
Jeff Johnsone7245742012-09-05 17:12:55 -07008618
Jeff Johnson295189b2012-06-20 16:38:30 -07008619}/*WDI_ProcessPostAssocReq*/
8620
8621/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008622 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008623 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008624
8625 @param pWDICtx: pointer to the WLAN DAL context
8626 pEventData: pointer to the event information structure
8627
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 @see
8629 @return Result of the function call
8630*/
8631WDI_Status
8632WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008633(
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 WDI_ControlBlockType* pWDICtx,
8635 WDI_EventInfoType* pEventData
8636)
8637{
8638 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8639 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008640 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008641 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 wpt_uint16 usDataOffset = 0;
8644 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8647
Jeff Johnsone7245742012-09-05 17:12:55 -07008648 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8650
8651 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008652 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008653 -------------------------------------------------------------------------*/
8654 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8655 ( NULL == pEventData->pCBfnc ))
8656 {
8657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008661 }
8662
8663 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8664 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8665 /*-------------------------------------------------------------------------
8666 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008667 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008668 -------------------------------------------------------------------------*/
8669 wpalMutexAcquire(&pWDICtx->wptMutex);
8670
8671 /*------------------------------------------------------------------------
8672 Find the BSS for which the request is made and identify WDI session
8673 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008674 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8675 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008676 &macBSSID))
8677 {
8678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008679 "This station does not exist in the WDI Station Table %d",
8680 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 }
8684
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8686 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008687 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8689 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8690 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008691
8692 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 }
8695
8696 /*------------------------------------------------------------------------
8697 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008698 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008699 ------------------------------------------------------------------------*/
8700 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8701 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8703 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8704 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008705
Jeff Johnsone7245742012-09-05 17:12:55 -07008706 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008707 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008708 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008709 }
8710
8711 wpalMutexRelease(&pWDICtx->wptMutex);
8712 /*-----------------------------------------------------------------------
8713 Get message buffer
8714 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008715 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008716 sizeof(halDelStaReqMsg.delStaParams),
8717 &pSendBuffer, &usDataOffset, &usSendSize))||
8718 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8719 {
8720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008721 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008722 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008725 }
8726
Jeff Johnsone7245742012-09-05 17:12:55 -07008727 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8728 wpalMemoryCopy( pSendBuffer+usDataOffset,
8729 &halDelStaReqMsg.delStaParams,
8730 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008731
8732 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008734
8735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008737 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008738 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8740
8741}/*WDI_ProcessDelSTAReq*/
8742
8743
8744/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008745 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008746==========================================================================*/
8747/**
8748 @brief Process Set BSS Key Request function (called when Main FSM
8749 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008750
8751 @param pWDICtx: pointer to the WLAN DAL context
8752 pEventData: pointer to the event information structure
8753
Jeff Johnson295189b2012-06-20 16:38:30 -07008754 @see
8755 @return Result of the function call
8756*/
8757WDI_Status
8758WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008759(
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 WDI_ControlBlockType* pWDICtx,
8761 WDI_EventInfoType* pEventData
8762)
8763{
8764 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8765 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008766 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008768 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008769 wpt_uint16 usDataOffset = 0;
8770 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008772 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8773 wpt_uint8 keyIndex = 0;
8774
8775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8776
8777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008778 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008779 -------------------------------------------------------------------------*/
8780 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8781 ( NULL == pEventData->pCBfnc ))
8782 {
8783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008784 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008786 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008787 }
8788
8789 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8790 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8791 /*-------------------------------------------------------------------------
8792 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008793 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 -------------------------------------------------------------------------*/
8795 wpalMutexAcquire(&pWDICtx->wptMutex);
8796
8797 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008798 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008799 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008800 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8801 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8802 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008803
Jeff Johnsone7245742012-09-05 17:12:55 -07008804 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008805 {
8806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8808 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008809
8810 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008811 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008812 }
8813
8814 /*------------------------------------------------------------------------
8815 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 ------------------------------------------------------------------------*/
8818 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8819 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8821 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8822 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008823
Jeff Johnsone7245742012-09-05 17:12:55 -07008824 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008825 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008826 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008827 }
8828
8829
8830 wpalMutexRelease(&pWDICtx->wptMutex);
8831 /*-----------------------------------------------------------------------
8832 Get message buffer
8833 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8836 &pSendBuffer, &usDataOffset, &usSendSize))||
8837 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8838 {
8839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008840 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8842 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008844 }
8845
8846 /*-----------------------------------------------------------------------
8847 Copy the Key parameters into the HAL message
8848 -----------------------------------------------------------------------*/
8849
Jeff Johnsone7245742012-09-05 17:12:55 -07008850 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008851
Jeff Johnsone7245742012-09-05 17:12:55 -07008852 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008853 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8854
Jeff Johnsone7245742012-09-05 17:12:55 -07008855 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8857
8858 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8859 keyIndex++)
8860 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008861 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008862 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8863 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8864 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8865 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8866 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8867 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008868 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008869 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008870 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008871 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008873 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8874 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008875 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008876 WDI_MAX_KEY_LENGTH);
8877 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008878
8879 wpalMemoryCopy( pSendBuffer+usDataOffset,
8880 &halSetBssKeyReqMsg.setBssKeyParams,
8881 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008882
8883 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008885
8886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008887 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008888 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008889 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8890 wdiSetBSSKeyRspCb, pEventData->pUserData,
8891 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008892
8893}/*WDI_ProcessSetBssKeyReq*/
8894
8895/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008896 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008897 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008898
8899 @param pWDICtx: pointer to the WLAN DAL context
8900 pEventData: pointer to the event information structure
8901
Jeff Johnson295189b2012-06-20 16:38:30 -07008902 @see
8903 @return Result of the function call
8904*/
8905WDI_Status
8906WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008907(
Jeff Johnson295189b2012-06-20 16:38:30 -07008908 WDI_ControlBlockType* pWDICtx,
8909 WDI_EventInfoType* pEventData
8910)
8911{
8912 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8913 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008914 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008916 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008917 wpt_uint16 usDataOffset = 0;
8918 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008919 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8922
8923 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008924 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008925 -------------------------------------------------------------------------*/
8926 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8927 ( NULL == pEventData->pCBfnc ))
8928 {
8929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008930 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008931 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008932 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008933 }
8934
8935 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8936 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8937 /*-------------------------------------------------------------------------
8938 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008940 -------------------------------------------------------------------------*/
8941 wpalMutexAcquire(&pWDICtx->wptMutex);
8942
8943 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008944 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008946 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8947 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8948 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008949
Jeff Johnsone7245742012-09-05 17:12:55 -07008950 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008951 {
8952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008953 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8954 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008955
8956 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 }
8959
8960 /*------------------------------------------------------------------------
8961 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008962 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008963 ------------------------------------------------------------------------*/
8964 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8965 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8967 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8968 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008969
Jeff Johnsone7245742012-09-05 17:12:55 -07008970 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008971 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008972 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 }
8974
8975
8976 wpalMutexRelease(&pWDICtx->wptMutex);
8977
8978 /*-----------------------------------------------------------------------
8979 Get message buffer
8980 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008982 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8983 &pSendBuffer, &usDataOffset, &usSendSize))||
8984 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8985 {
8986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008987 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008988 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 }
8992 /*-----------------------------------------------------------------------
8993 Copy the Key parameters into the HAL message
8994 -----------------------------------------------------------------------*/
8995 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8996
Jeff Johnsone7245742012-09-05 17:12:55 -07008997 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008998 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8999
9000 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9001
Jeff Johnsone7245742012-09-05 17:12:55 -07009002 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009003 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9004
Jeff Johnsone7245742012-09-05 17:12:55 -07009005 wpalMemoryCopy( pSendBuffer+usDataOffset,
9006 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9007 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009008
9009 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009010 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009011
9012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009013 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009014 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009016 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009017 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009018}/*WDI_ProcessRemoveBssKeyReq*/
9019
9020/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009023
9024 @param pWDICtx: pointer to the WLAN DAL context
9025 pEventData: pointer to the event information structure
9026
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 @see
9028 @return Result of the function call
9029*/
9030WDI_Status
9031WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009032(
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 WDI_ControlBlockType* pWDICtx,
9034 WDI_EventInfoType* pEventData
9035)
9036{
9037 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9038 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9039 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009040 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009041 wpt_uint16 usDataOffset = 0;
9042 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009044 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009046 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9047 wpt_uint8 keyIndex = 0;
9048
9049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9050
9051 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 -------------------------------------------------------------------------*/
9054 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9055 ( NULL == pEventData->pCBfnc ))
9056 {
9057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009058 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009059 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009061 }
9062
9063 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9064 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9065 /*-------------------------------------------------------------------------
9066 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009067 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 -------------------------------------------------------------------------*/
9069 wpalMutexAcquire(&pWDICtx->wptMutex);
9070
9071 /*------------------------------------------------------------------------
9072 Find the BSS for which the request is made and identify WDI session
9073 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9075 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 &macBSSID))
9077 {
9078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009079 "This station does not exist in the WDI Station Table %d",
9080 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009081 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009083 }
9084
Jeff Johnsone7245742012-09-05 17:12:55 -07009085 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9086 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9089 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9090 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009091
9092 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009093 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009094 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009095
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 /*------------------------------------------------------------------------
9097 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 ------------------------------------------------------------------------*/
9100 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9101 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9103 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9104 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009105
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009109 }
9110
9111
9112 wpalMutexRelease(&pWDICtx->wptMutex);
9113 /*-----------------------------------------------------------------------
9114 Get message buffer
9115 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009116 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009117 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9118 &pSendBuffer, &usDataOffset, &usSendSize))||
9119 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9120 {
9121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009122 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009123 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9124 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009126 }
9127 /*-----------------------------------------------------------------------
9128 Copy the STA Key parameters into the HAL message
9129 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009130 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009131 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9132
Jeff Johnsone7245742012-09-05 17:12:55 -07009133 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009134 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9135
9136 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9137
9138 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9139
9140 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9141
Jeff Johnson295189b2012-06-20 16:38:30 -07009142 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9143 keyIndex++)
9144 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009145 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009146 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9147 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9148 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9149 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9150 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9151 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009152 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009153 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009155 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009156 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009157 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9158 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009159 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009160 WDI_MAX_KEY_LENGTH);
9161 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009162
Jeff Johnsone7245742012-09-05 17:12:55 -07009163 wpalMemoryCopy( pSendBuffer+usDataOffset,
9164 &halSetStaKeyReqMsg.setStaKeyParams,
9165 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009166
9167 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009168 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009169
9170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9174 wdiSetSTAKeyRspCb, pEventData->pUserData,
9175 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009176
9177}/*WDI_ProcessSetSTAKeyReq*/
9178
9179/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009182
9183 @param pWDICtx: pointer to the WLAN DAL context
9184 pEventData: pointer to the event information structure
9185
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 @see
9187 @return Result of the function call
9188*/
9189WDI_Status
9190WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009191(
Jeff Johnson295189b2012-06-20 16:38:30 -07009192 WDI_ControlBlockType* pWDICtx,
9193 WDI_EventInfoType* pEventData
9194)
9195{
9196 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9197 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9198 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009200 wpt_uint16 usDataOffset = 0;
9201 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009202 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009203 wpt_macAddr macBSSID;
9204 wpt_uint8 ucCurrentBSSSesIdx;
9205 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9207
9208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 -------------------------------------------------------------------------*/
9211 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9212 ( NULL == pEventData->pCBfnc ))
9213 {
9214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009215 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009218 }
9219
9220 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9221 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9222 /*-------------------------------------------------------------------------
9223 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009224 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009225 -------------------------------------------------------------------------*/
9226 wpalMutexAcquire(&pWDICtx->wptMutex);
9227
9228 /*------------------------------------------------------------------------
9229 Find the BSS for which the request is made and identify WDI session
9230 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9232 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009233 &macBSSID))
9234 {
9235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009236 "This station does not exist in the WDI Station Table %d",
9237 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009238 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009240 }
9241
Jeff Johnsone7245742012-09-05 17:12:55 -07009242 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9243 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009244 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9246 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9247 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009248
9249 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009252
Jeff Johnson295189b2012-06-20 16:38:30 -07009253 /*------------------------------------------------------------------------
9254 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009256 ------------------------------------------------------------------------*/
9257 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9258 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9260 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9261 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009262
Jeff Johnsone7245742012-09-05 17:12:55 -07009263 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009264 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009265 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009266 }
9267
9268
9269
9270 wpalMutexRelease(&pWDICtx->wptMutex);
9271 /*-----------------------------------------------------------------------
9272 Get message buffer
9273 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009274 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9276 &pSendBuffer, &usDataOffset, &usSendSize))||
9277 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9278 {
9279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009280 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009281 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9282 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009284 }
9285
9286 /*-----------------------------------------------------------------------
9287 Copy the Key parameters into the HAL message
9288 -----------------------------------------------------------------------*/
9289
Jeff Johnsone7245742012-09-05 17:12:55 -07009290 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009291 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9292
Jeff Johnsone7245742012-09-05 17:12:55 -07009293 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009294 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9295
Jeff Johnsone7245742012-09-05 17:12:55 -07009296 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009297 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9298
Jeff Johnsone7245742012-09-05 17:12:55 -07009299 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009300 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9301
Jeff Johnsone7245742012-09-05 17:12:55 -07009302 wpalMemoryCopy( pSendBuffer+usDataOffset,
9303 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9304 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009305
9306 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009307 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009308
9309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009310 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009311 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009314 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009315
9316}/*WDI_ProcessRemoveSTAKeyReq*/
9317
9318/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009321
9322 @param pWDICtx: pointer to the WLAN DAL context
9323 pEventData: pointer to the event information structure
9324
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 @see
9326 @return Result of the function call
9327*/
9328WDI_Status
9329WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009330(
Jeff Johnson295189b2012-06-20 16:38:30 -07009331 WDI_ControlBlockType* pWDICtx,
9332 WDI_EventInfoType* pEventData
9333)
9334{
9335 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9336 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9337 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009338 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009339 wpt_uint16 usDataOffset = 0;
9340 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009341 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009342 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9345 wpt_uint8 keyIndex = 0;
9346
9347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9348
9349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009350 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 -------------------------------------------------------------------------*/
9352 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9353 ( NULL == pEventData->pCBfnc ))
9354 {
9355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009359 }
9360
9361 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9362 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9363 /*-------------------------------------------------------------------------
9364 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009365 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 -------------------------------------------------------------------------*/
9367 wpalMutexAcquire(&pWDICtx->wptMutex);
9368
9369 /*------------------------------------------------------------------------
9370 Find the BSS for which the request is made and identify WDI session
9371 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9373 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009374 &macBSSID))
9375 {
9376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009377 "This station does not exist in the WDI Station Table %d",
9378 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009379 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009381 }
9382
Jeff Johnsone7245742012-09-05 17:12:55 -07009383 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9384 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 {
9386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009387 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009388 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009389
9390 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009391 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009392 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009393
Jeff Johnson295189b2012-06-20 16:38:30 -07009394 /*------------------------------------------------------------------------
9395 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009396 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009397 ------------------------------------------------------------------------*/
9398 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9399 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9401 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9402 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009403
Jeff Johnsone7245742012-09-05 17:12:55 -07009404 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009405 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009406 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009407 }
9408
9409
9410 wpalMutexRelease(&pWDICtx->wptMutex);
9411 /*-----------------------------------------------------------------------
9412 Get message buffer
9413 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009414 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009415 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9416 &pSendBuffer, &usDataOffset, &usSendSize))||
9417 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9418 {
9419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009420 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009421 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9422 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009423 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009424 }
9425 /*-----------------------------------------------------------------------
9426 Copy the STA Key parameters into the HAL message
9427 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009428 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009429 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9430
Jeff Johnsone7245742012-09-05 17:12:55 -07009431 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009432 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9433
9434 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9435
9436 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9437
9438 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9439
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9441 keyIndex++)
9442 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009443 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009444 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9445 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9446 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9447 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9448 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9449 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009453 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009454 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009455 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9456 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009457 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009458 WDI_MAX_KEY_LENGTH);
9459 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009460
Jeff Johnsone7245742012-09-05 17:12:55 -07009461 wpalMemoryCopy( pSendBuffer+usDataOffset,
9462 &halSetStaKeyReqMsg.setStaKeyParams,
9463 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009464
9465 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009467
9468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009470 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9472 wdiSetSTAKeyRspCb, pEventData->pUserData,
9473 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009474
9475}/*WDI_ProcessSetSTABcastKeyReq*/
9476
9477/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009480
9481 @param pWDICtx: pointer to the WLAN DAL context
9482 pEventData: pointer to the event information structure
9483
Jeff Johnson295189b2012-06-20 16:38:30 -07009484 @see
9485 @return Result of the function call
9486*/
9487WDI_Status
9488WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009489(
Jeff Johnson295189b2012-06-20 16:38:30 -07009490 WDI_ControlBlockType* pWDICtx,
9491 WDI_EventInfoType* pEventData
9492)
9493{
9494 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9495 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9496 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 wpt_uint16 usDataOffset = 0;
9499 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009500 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009501 wpt_macAddr macBSSID;
9502 wpt_uint8 ucCurrentBSSSesIdx;
9503 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9505
9506 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 -------------------------------------------------------------------------*/
9509 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9510 ( NULL == pEventData->pCBfnc ))
9511 {
9512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009513 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009514 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009516 }
9517
9518 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9519 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9520 /*-------------------------------------------------------------------------
9521 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009522 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 -------------------------------------------------------------------------*/
9524 wpalMutexAcquire(&pWDICtx->wptMutex);
9525
9526 /*------------------------------------------------------------------------
9527 Find the BSS for which the request is made and identify WDI session
9528 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9530 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009531 &macBSSID))
9532 {
9533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009534 "This station does not exist in the WDI Station Table %d",
9535 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009536 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009538 }
9539
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9541 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009542 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9544 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9545 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009546
9547 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009548 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009549 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009550
Jeff Johnson295189b2012-06-20 16:38:30 -07009551 /*------------------------------------------------------------------------
9552 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 ------------------------------------------------------------------------*/
9555 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9556 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9558 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9559 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009560
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 }
9565
9566
9567
9568 wpalMutexRelease(&pWDICtx->wptMutex);
9569 /*-----------------------------------------------------------------------
9570 Get message buffer
9571 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9574 &pSendBuffer, &usDataOffset, &usSendSize))||
9575 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9576 {
9577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009578 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 }
9583
9584 /*-----------------------------------------------------------------------
9585 Copy the Key parameters into the HAL message
9586 -----------------------------------------------------------------------*/
9587
Jeff Johnsone7245742012-09-05 17:12:55 -07009588 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9590
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9593
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009595 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9596
Jeff Johnsone7245742012-09-05 17:12:55 -07009597 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009598 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9599
Jeff Johnsone7245742012-09-05 17:12:55 -07009600 wpalMemoryCopy( pSendBuffer+usDataOffset,
9601 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9602 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009603
9604 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009605 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009606
9607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009609 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009610 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009611 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009613
9614}/*WDI_ProcessRemoveSTABcastKeyReq*/
9615
9616/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009618==========================================================================*/
9619/**
9620 @brief Process Add TSpec Request function (called when Main FSM
9621 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009622
9623 @param pWDICtx: pointer to the WLAN DAL context
9624 pEventData: pointer to the event information structure
9625
Jeff Johnson295189b2012-06-20 16:38:30 -07009626 @see
9627 @return Result of the function call
9628*/
9629WDI_Status
9630WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009631(
Jeff Johnson295189b2012-06-20 16:38:30 -07009632 WDI_ControlBlockType* pWDICtx,
9633 WDI_EventInfoType* pEventData
9634)
9635{
9636 WDI_AddTSReqParamsType* pwdiAddTSParams;
9637 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009638 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009639 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009641 wpt_uint16 usDataOffset = 0;
9642 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009643 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009644 wpt_macAddr macBSSID;
9645 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009646
Jeff Johnson295189b2012-06-20 16:38:30 -07009647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9648
9649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 -------------------------------------------------------------------------*/
9652 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9653 ( NULL == pEventData->pCBfnc ))
9654 {
9655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009659 }
9660
9661 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9662 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9663 /*-------------------------------------------------------------------------
9664 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009666 -------------------------------------------------------------------------*/
9667 wpalMutexAcquire(&pWDICtx->wptMutex);
9668
9669 /*------------------------------------------------------------------------
9670 Find the BSS for which the request is made and identify WDI session
9671 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9673 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009674 &macBSSID))
9675 {
9676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009677 "This station does not exist in the WDI Station Table %d",
9678 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009681 }
9682
Jeff Johnsone7245742012-09-05 17:12:55 -07009683 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9684 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9687 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9688 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009689
9690 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009691 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009692 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009693
Jeff Johnson295189b2012-06-20 16:38:30 -07009694 /*------------------------------------------------------------------------
9695 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009696 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009697 ------------------------------------------------------------------------*/
9698 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9699 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9701 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9702 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009703
Jeff Johnsone7245742012-09-05 17:12:55 -07009704 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009705 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009706 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009707 }
9708
9709 wpalMutexRelease(&pWDICtx->wptMutex);
9710 /*-----------------------------------------------------------------------
9711 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009714 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9715 sizeof(halAddTsParams),
9716 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009717 &usSendSize))||
9718 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9719 {
9720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009721 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009722 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009725 }
9726
9727 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9728 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9729
9730 //TSPEC IE
9731 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9732 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009733 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009734 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009735 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009736 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009737 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009738 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009739 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009740 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009741 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009742 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009743 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009744 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009745 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009746 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009747 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009748 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009749 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009751 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009752 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009753 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009754 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009756 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009758 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009759 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009760 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009761 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009762 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9763
9764 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009767 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009768 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009769 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009770 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009771 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009773 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009777 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009778 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9779
9780 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009781 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009782 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009784 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9785
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 wpalMemoryCopy( pSendBuffer+usDataOffset,
9787 &halAddTsParams,
9788 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009789
9790 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009791 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009792
9793 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009794 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009795 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009796 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009797 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009798 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009799}/*WDI_ProcessAddTSpecReq*/
9800
9801
9802/**
9803 @brief Process Del TSpec Request function (called when Main FSM
9804 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009805
9806 @param pWDICtx: pointer to the WLAN DAL context
9807 pEventData: pointer to the event information structure
9808
Jeff Johnson295189b2012-06-20 16:38:30 -07009809 @see
9810 @return Result of the function call
9811*/
9812WDI_Status
9813WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009814(
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 WDI_ControlBlockType* pWDICtx,
9816 WDI_EventInfoType* pEventData
9817)
9818{
9819 WDI_DelTSReqParamsType* pwdiDelTSParams;
9820 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009824 wpt_uint16 usDataOffset = 0;
9825 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9828
9829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009830 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009831 -------------------------------------------------------------------------*/
9832 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9833 ( NULL == pEventData->pCBfnc ))
9834 {
9835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009836 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 }
9840
9841 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9842 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9843
9844 /*-------------------------------------------------------------------------
9845 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009847 -------------------------------------------------------------------------*/
9848 wpalMutexAcquire(&pWDICtx->wptMutex);
9849
9850 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009851 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009852 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009853 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9854 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9855 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009856
Jeff Johnsone7245742012-09-05 17:12:55 -07009857 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009858 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9860 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9861 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9862
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009864 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 }
9866
9867 /*------------------------------------------------------------------------
9868 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009869 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 ------------------------------------------------------------------------*/
9871 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9872 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9874 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9875 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009876
Jeff Johnsone7245742012-09-05 17:12:55 -07009877 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009878 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009879 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009880 }
9881
9882
9883 wpalMutexRelease(&pWDICtx->wptMutex);
9884 /*-----------------------------------------------------------------------
9885 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009886 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009887 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009888 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009889 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9890 &pSendBuffer, &usDataOffset, &usSendSize))||
9891 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9892 {
9893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009894 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009895 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009898 }
9899
Jeff Johnsone7245742012-09-05 17:12:55 -07009900 wpalMemoryCopy( pSendBuffer+usDataOffset,
9901 &pwdiDelTSParams->wdiDelTSInfo,
9902 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009903
9904 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009905 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009906
9907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009909 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009910 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9911 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009912}/*WDI_ProcessDelTSpecReq*/
9913
9914/**
9915 @brief Process Update EDCA Params Request function (called when
9916 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009917
9918 @param pWDICtx: pointer to the WLAN DAL context
9919 pEventData: pointer to the event information structure
9920
Jeff Johnson295189b2012-06-20 16:38:30 -07009921 @see
9922 @return Result of the function call
9923*/
9924WDI_Status
9925WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009926(
Jeff Johnson295189b2012-06-20 16:38:30 -07009927 WDI_ControlBlockType* pWDICtx,
9928 WDI_EventInfoType* pEventData
9929)
9930{
9931 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9932 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009933 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009934 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009935 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009936 wpt_uint16 usDataOffset = 0;
9937 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009938 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9940
9941 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009943 -------------------------------------------------------------------------*/
9944 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9945 ( NULL == pEventData->pCBfnc ))
9946 {
9947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009948 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009950 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009951 }
9952
9953 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9954 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9955 /*-------------------------------------------------------------------------
9956 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009958 -------------------------------------------------------------------------*/
9959 wpalMutexAcquire(&pWDICtx->wptMutex);
9960
9961 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009962 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009963 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009964 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9965 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9966 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009967
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009969 {
9970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9972 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009973
9974 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009975 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009976 }
9977
9978 /*------------------------------------------------------------------------
9979 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009980 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009981 ------------------------------------------------------------------------*/
9982 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9983 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9985 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9986 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009987
Jeff Johnsone7245742012-09-05 17:12:55 -07009988 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009989 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009990 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009991 }
9992
9993
9994 wpalMutexRelease(&pWDICtx->wptMutex);
9995 /*-----------------------------------------------------------------------
9996 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009997 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009998 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009999 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010000 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10001 &pSendBuffer, &usDataOffset, &usSendSize))||
10002 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10003 {
10004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010005 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10007 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010009 }
10010
Jeff Johnsone7245742012-09-05 17:12:55 -070010011 wpalMemoryCopy( pSendBuffer+usDataOffset,
10012 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10013 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010014
10015 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010016 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010017
10018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010019 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010020 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10022 wdiUpdateEDCARspCb, pEventData->pUserData,
10023 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010024}/*WDI_ProcessUpdateEDCAParamsReq*/
10025
10026/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010027 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010028 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010029
10030 @param pWDICtx: pointer to the WLAN DAL context
10031 pEventData: pointer to the event information structure
10032
Jeff Johnson295189b2012-06-20 16:38:30 -070010033 @see
10034 @return Result of the function call
10035*/
10036WDI_Status
10037WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010038(
Jeff Johnson295189b2012-06-20 16:38:30 -070010039 WDI_ControlBlockType* pWDICtx,
10040 WDI_EventInfoType* pEventData
10041)
10042{
10043 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10044 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010045 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010046 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010047 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010048 wpt_uint16 usDataOffset = 0;
10049 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010051 wpt_macAddr macBSSID;
10052
10053 tAddBASessionReqMsg halAddBASessionReq;
10054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10055
10056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010058 -------------------------------------------------------------------------*/
10059 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10060 ( NULL == pEventData->pCBfnc ))
10061 {
10062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010066 }
10067
Jeff Johnsone7245742012-09-05 17:12:55 -070010068 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010069 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010070 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010071 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10072 /*-------------------------------------------------------------------------
10073 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010074 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 -------------------------------------------------------------------------*/
10076 wpalMutexAcquire(&pWDICtx->wptMutex);
10077
10078 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010079 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010080 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010081 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10082 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010083 &macBSSID))
10084 {
10085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010086 "This station does not exist in the WDI Station Table %d",
10087 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010088 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010090 }
10091
10092
Jeff Johnsone7245742012-09-05 17:12:55 -070010093 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010094
Jeff Johnsone7245742012-09-05 17:12:55 -070010095 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010096 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10098 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10099 __func__, MAC_ADDR_ARRAY(macBSSID));
10100
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010102 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010103 }
10104
10105 /*------------------------------------------------------------------------
10106 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010107 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010108 ------------------------------------------------------------------------*/
10109 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10110 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10112 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10113 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010114
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010116 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010117 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010118 }
10119
10120
10121 wpalMutexRelease(&pWDICtx->wptMutex);
10122 /*-----------------------------------------------------------------------
10123 Get message buffer
10124 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010125 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10126 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010127 sizeof(halAddBASessionReq.addBASessionParams),
10128 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010129 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010130 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10131 {
10132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010133 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010134 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010137 }
10138
10139 halAddBASessionReq.addBASessionParams.staIdx =
10140 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10141 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10142 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10143 WDI_MAC_ADDR_LEN);
10144 halAddBASessionReq.addBASessionParams.baTID =
10145 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10146 halAddBASessionReq.addBASessionParams.baPolicy =
10147 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10148 halAddBASessionReq.addBASessionParams.baBufferSize =
10149 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10150 halAddBASessionReq.addBASessionParams.baTimeout =
10151 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10152 halAddBASessionReq.addBASessionParams.baSSN =
10153 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10154 halAddBASessionReq.addBASessionParams.baDirection =
10155 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10156
Jeff Johnsone7245742012-09-05 17:12:55 -070010157 wpalMemoryCopy( pSendBuffer+usDataOffset,
10158 &halAddBASessionReq.addBASessionParams,
10159 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010160
10161 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010162 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010163
10164 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010166 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010167 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10168 wdiAddBASessionRspCb, pEventData->pUserData,
10169 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010170}/*WDI_ProcessAddBASessionReq*/
10171
10172/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010175
10176 @param pWDICtx: pointer to the WLAN DAL context
10177 pEventData: pointer to the event information structure
10178
Jeff Johnson295189b2012-06-20 16:38:30 -070010179 @see
10180 @return Result of the function call
10181*/
10182WDI_Status
10183WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010184(
Jeff Johnson295189b2012-06-20 16:38:30 -070010185 WDI_ControlBlockType* pWDICtx,
10186 WDI_EventInfoType* pEventData
10187)
10188{
10189 WDI_DelBAReqParamsType* pwdiDelBAParams;
10190 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010192 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010193 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010194 wpt_uint16 usDataOffset = 0;
10195 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010196 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010197 wpt_macAddr macBSSID;
10198 tDelBAParams halDelBAparam;
10199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10200
10201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 -------------------------------------------------------------------------*/
10204 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10205 ( NULL == pEventData->pCBfnc ))
10206 {
10207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010208 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010211 }
10212
10213 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10214 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10215 /*-------------------------------------------------------------------------
10216 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010217 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010218 -------------------------------------------------------------------------*/
10219 wpalMutexAcquire(&pWDICtx->wptMutex);
10220
10221 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010222 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010223 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010224 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10225 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010226 &macBSSID))
10227 {
10228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010229 "This station does not exist in the WDI Station Table %d",
10230 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010231 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010233 }
10234
Jeff Johnsone7245742012-09-05 17:12:55 -070010235 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010236
Jeff Johnsone7245742012-09-05 17:12:55 -070010237 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010238 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10240 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10241 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010242
10243 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010244 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010245 }
10246
10247 /*------------------------------------------------------------------------
10248 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010249 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010250 ------------------------------------------------------------------------*/
10251 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10252 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10254 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10255 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010256
Jeff Johnsone7245742012-09-05 17:12:55 -070010257 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010258 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 }
10261
10262 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010263 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010264 sizeof(halDelBAparam),
10265 &pSendBuffer, &usDataOffset, &usSendSize))||
10266 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10267 {
10268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010269 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010270 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010273 }
10274
10275 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10276 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10277 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10278
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 wpalMemoryCopy( pSendBuffer+usDataOffset,
10280 &halDelBAparam,
10281 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010282
10283 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010284 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010285
10286 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010287 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010288 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010289 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10290 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010291}/*WDI_ProcessDelBAReq*/
10292
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010293#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010294
10295WDI_Status
10296WDI_ProcessTSMStatsReq
10297(
10298 WDI_ControlBlockType* pWDICtx,
10299 WDI_EventInfoType* pEventData
10300)
10301{
10302 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10303 WDI_TsmRspCb wdiTSMRspCb;
10304 wpt_uint8 ucCurrentBSSSesIdx = 0;
10305 WDI_BSSSessionType* pBSSSes = NULL;
10306 wpt_uint8* pSendBuffer = NULL;
10307 wpt_uint16 usDataOffset = 0;
10308 wpt_uint16 usSendSize = 0;
10309 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10310 tTsmStatsParams halTsmStatsReqParams = {0};
10311
10312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10313
10314 /*-------------------------------------------------------------------------
10315 Sanity check
10316 -------------------------------------------------------------------------*/
10317 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10318 ( NULL == pEventData->pCBfnc ))
10319 {
10320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010321 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010322 WDI_ASSERT(0);
10323 return WDI_STATUS_E_FAILURE;
10324 }
10325
10326 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10327 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10328 /*-------------------------------------------------------------------------
10329 Check to see if we are in the middle of an association, if so queue, if
10330 not it means it is free to process request
10331 -------------------------------------------------------------------------*/
10332 wpalMutexAcquire(&pWDICtx->wptMutex);
10333
10334 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10335 if ( NULL == pBSSSes )
10336 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10338 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10339 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010340
10341 wpalMutexRelease(&pWDICtx->wptMutex);
10342 return WDI_STATUS_E_NOT_ALLOWED;
10343 }
10344
10345 /*------------------------------------------------------------------------
10346 Check if this BSS is being currently processed or queued,
10347 if queued - queue the new request as well
10348 ------------------------------------------------------------------------*/
10349 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10350 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010352 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010354
10355 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10356 wpalMutexRelease(&pWDICtx->wptMutex);
10357 return wdiStatus;
10358 }
10359
10360 wpalMutexRelease(&pWDICtx->wptMutex);
10361 /*-----------------------------------------------------------------------
10362 Get message buffer
10363 ! TO DO : proper conversion into the HAL Message Request Format
10364 -----------------------------------------------------------------------*/
10365 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10366 sizeof(halTsmStatsReqParams),
10367 &pSendBuffer, &usDataOffset, &usSendSize))||
10368 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10369 {
10370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010371 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010372 pEventData, pwdiTSMParams, wdiTSMRspCb);
10373 WDI_ASSERT(0);
10374 return WDI_STATUS_E_FAILURE;
10375 }
10376
10377 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10378 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10379 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10380 WDI_MAC_ADDR_LEN);
10381 wpalMemoryCopy( pSendBuffer+usDataOffset,
10382 &halTsmStatsReqParams,
10383 sizeof(halTsmStatsReqParams));
10384
10385 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10386 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10387
10388 /*-------------------------------------------------------------------------
10389 Send TSM Stats Request to HAL
10390 -------------------------------------------------------------------------*/
10391 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10392 wdiTSMRspCb, pEventData->pUserData,
10393 WDI_TSM_STATS_RESP);
10394}/*WDI_ProcessTSMStatsReq*/
10395
10396#endif
10397
10398
10399/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010400 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010401 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010402
10403 @param pWDICtx: pointer to the WLAN DAL context
10404 pEventData: pointer to the event information structure
10405
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 @see
10407 @return Result of the function call
10408*/
10409WDI_Status
10410WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010411(
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 WDI_ControlBlockType* pWDICtx,
10413 WDI_EventInfoType* pEventData
10414)
10415{
10416 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10417 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010418 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010419 wpt_uint16 usDataOffset = 0;
10420 wpt_uint16 usSendSize = 0;
10421 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10422
10423 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010424 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010425 -------------------------------------------------------------------------*/
10426 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10427 ( NULL == pEventData->pCBfnc ))
10428 {
10429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010430 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010431 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010433 }
10434
10435 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10436 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10437 /*-----------------------------------------------------------------------
10438 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010439 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010440 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010441 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010442 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10443 &pSendBuffer, &usDataOffset, &usSendSize))||
10444 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10445 {
10446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010447 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010448 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 }
10452
Jeff Johnsone7245742012-09-05 17:12:55 -070010453 wpalMemoryCopy( pSendBuffer+usDataOffset,
10454 &pwdiFlushAcParams->wdiFlushAcInfo,
10455 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010456
10457 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010459
10460 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010461 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010462 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010463 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10464 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010465}/*WDI_ProcessFlushAcReq*/
10466
10467/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010468 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010469 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010470
10471 @param pWDICtx: pointer to the WLAN DAL context
10472 pEventData: pointer to the event information structure
10473
Jeff Johnson295189b2012-06-20 16:38:30 -070010474 @see
10475 @return Result of the function call
10476*/
10477WDI_Status
10478WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010479(
Jeff Johnson295189b2012-06-20 16:38:30 -070010480 WDI_ControlBlockType* pWDICtx,
10481 WDI_EventInfoType* pEventData
10482)
10483{
10484 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10485 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 wpt_uint16 usDataOffset = 0;
10488 wpt_uint16 usSendSize = 0;
10489
10490 tBtAmpEventMsg haltBtAmpEventMsg;
10491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10492
10493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010494 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010495 -------------------------------------------------------------------------*/
10496 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10497 ( NULL == pEventData->pCBfnc ))
10498 {
10499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010500 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010503 }
10504
10505 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10506 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10507 /*-----------------------------------------------------------------------
10508 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010509 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010510 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010511 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010512 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10513 &pSendBuffer, &usDataOffset, &usSendSize))||
10514 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10515 {
10516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010517 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010521 }
10522
Jeff Johnsone7245742012-09-05 17:12:55 -070010523 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010525 wpalMemoryCopy( pSendBuffer+usDataOffset,
10526 &haltBtAmpEventMsg.btAmpEventParams,
10527 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010528
10529 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010530 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010531
10532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010533 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010534 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10536 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010537}/*WDI_ProcessBtAmpEventReq*/
10538
10539/**
10540 @brief Process Add STA self Request function (called when Main FSM
10541 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010542
10543 @param pWDICtx: pointer to the WLAN DAL context
10544 pEventData: pointer to the event information structure
10545
Jeff Johnson295189b2012-06-20 16:38:30 -070010546 @see
10547 @return Result of the function call
10548*/
10549WDI_Status
10550WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010551(
Jeff Johnson295189b2012-06-20 16:38:30 -070010552 WDI_ControlBlockType* pWDICtx,
10553 WDI_EventInfoType* pEventData
10554)
10555{
10556 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10557 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010558 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010559 wpt_uint16 usDataOffset = 0;
10560 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010561 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10563
10564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010565 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010566 -------------------------------------------------------------------------*/
10567 if (( NULL == pEventData ) ||
10568 ( NULL == pEventData->pEventData) ||
10569 ( NULL == pEventData->pCBfnc))
10570 {
10571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010572 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010575 }
10576
Jeff Johnsone7245742012-09-05 17:12:55 -070010577 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010578 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010579 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010580 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10581 /*-----------------------------------------------------------------------
10582 Get message buffer
10583 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010584 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10585 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010586 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010588 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010589 {
10590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010591 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010592 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 }
10596
10597 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010598 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010599 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10600
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010602 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10603 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10604 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10605 {
10606 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10607 }
10608 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10609 VOS_P2P_CLIENT_MODE) ||
10610 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10611 VOS_P2P_DEVICE))
10612 {
10613 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10614 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010615 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010616 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010617
10618 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010619 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010620
10621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010623 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010624 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10625 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10626 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010627}/*WDI_ProcessAddSTASelfReq*/
10628
10629
10630
10631/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010632 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010634
10635 @param pWDICtx: pointer to the WLAN DAL context
10636 pEventData: pointer to the event information structure
10637
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 @see
10639 @return Result of the function call
10640*/
10641WDI_Status
10642WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010643(
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 WDI_ControlBlockType* pWDICtx,
10645 WDI_EventInfoType* pEventData
10646)
10647{
10648 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10649 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010650 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010651 wpt_uint16 usDataOffset = 0;
10652 wpt_uint16 usSendSize = 0;
10653 tDelStaSelfParams halSetDelSelfSTAParams;
10654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10655
10656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010657 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010658 -------------------------------------------------------------------------*/
10659 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10660 ( NULL == pEventData->pCBfnc ))
10661 {
10662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010663 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010666 }
10667
Jeff Johnsone7245742012-09-05 17:12:55 -070010668 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010669 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10670 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10671
10672 /*-----------------------------------------------------------------------
10673 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010674 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010675 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010676 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010677 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10678 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010679 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010680 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10681 {
10682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010683 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010684 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010687 }
10688
Jeff Johnsone7245742012-09-05 17:12:55 -070010689 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010690 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10691
Jeff Johnsone7245742012-09-05 17:12:55 -070010692 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10693 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010694
10695 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010696 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010697
10698 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010699 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010700 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010701 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10702 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010703 WDI_DEL_STA_SELF_RESP);
10704
10705}
10706
Jeff Johnsone7245742012-09-05 17:12:55 -070010707#ifdef FEATURE_OEM_DATA_SUPPORT
10708/**
10709 @brief Process Start Oem Data Request function (called when Main
10710 FSM allows it)
10711
10712 @param pWDICtx: pointer to the WLAN DAL context
10713 pEventData: pointer to the event information structure
10714
10715 @see
10716 @return Result of the function call
10717*/
10718WDI_Status
10719WDI_ProcessStartOemDataReq
10720(
10721 WDI_ControlBlockType* pWDICtx,
10722 WDI_EventInfoType* pEventData
10723)
10724{
10725 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10726 WDI_oemDataRspCb wdiOemDataRspCb;
10727 wpt_uint8* pSendBuffer = NULL;
10728 wpt_uint16 usDataOffset = 0;
10729 wpt_uint16 usSendSize = 0;
10730 wpt_uint16 reqLen;
10731 tStartOemDataReqParams* halStartOemDataReqParams;
10732
10733 /*-------------------------------------------------------------------------
10734 Sanity check
10735 -------------------------------------------------------------------------*/
10736 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10737 ( NULL == pEventData->pCBfnc ))
10738 {
10739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010740 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010741 WDI_ASSERT(0);
10742 return WDI_STATUS_E_FAILURE;
10743 }
10744
10745 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10746 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10747
10748 /*-----------------------------------------------------------------------
10749 Get message buffer
10750 -----------------------------------------------------------------------*/
10751
10752 reqLen = sizeof(tStartOemDataReqParams);
10753
10754 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10755 WDI_START_OEM_DATA_REQ, reqLen,
10756 &pSendBuffer, &usDataOffset, &usSendSize))||
10757 (usSendSize < (usDataOffset + reqLen)))
10758 {
10759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010760 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010761 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10762 WDI_ASSERT(0);
10763 return WDI_STATUS_E_FAILURE;
10764 }
10765
10766 //copying WDI OEM DATA REQ PARAMS to shared memory
10767 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10768
10769 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10770 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10771
10772 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10773 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10774
10775 /*-------------------------------------------------------------------------
10776 Send Start Request to HAL
10777 -------------------------------------------------------------------------*/
10778 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10779 wdiOemDataRspCb, pEventData->pUserData,
10780 WDI_START_OEM_DATA_RESP);
10781}/*WDI_ProcessStartOemDataReq*/
10782#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010783
10784/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010785 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010786 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010787
10788 @param pWDICtx: pointer to the WLAN DAL context
10789 pEventData: pointer to the event information structure
10790
Jeff Johnson295189b2012-06-20 16:38:30 -070010791 @see
10792 @return Result of the function call
10793*/
10794WDI_Status
10795WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010796(
Jeff Johnson295189b2012-06-20 16:38:30 -070010797 WDI_ControlBlockType* pWDICtx,
10798 WDI_EventInfoType* pEventData
10799)
10800{
10801 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10802 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010803 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010804 wpt_uint16 usDataOffset = 0;
10805 wpt_uint16 usSendSize = 0;
10806 tHalWlanHostResumeReqParam halResumeReqParams;
10807
10808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10809
10810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010811 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010812 -------------------------------------------------------------------------*/
10813 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10814 ( NULL == pEventData->pCBfnc ))
10815 {
10816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010817 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 }
10821
10822 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10823 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10824
10825 /*-----------------------------------------------------------------------
10826 Get message buffer
10827 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10830 &pSendBuffer, &usDataOffset, &usSendSize))||
10831 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10832 {
10833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010834 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010838 }
10839
Jeff Johnsone7245742012-09-05 17:12:55 -070010840 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010841 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010842
10843 wpalMemoryCopy( pSendBuffer+usDataOffset,
10844 &halResumeReqParams,
10845 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010846
10847 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010848 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010849
10850 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010851 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010852 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10854 wdiHostResumeRspCb, pEventData->pUserData,
10855 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010856}/*WDI_ProcessHostResumeReq*/
10857
10858/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010860 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010861
10862 @param pWDICtx: pointer to the WLAN DAL context
10863 pEventData: pointer to the event information structure
10864
Jeff Johnson295189b2012-06-20 16:38:30 -070010865 @see
10866 @return Result of the function call
10867*/
10868WDI_Status
10869WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010870(
Jeff Johnson295189b2012-06-20 16:38:30 -070010871 WDI_ControlBlockType* pWDICtx,
10872 WDI_EventInfoType* pEventData
10873)
10874{
10875 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10876 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010877 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010878 wpt_uint16 usDataOffset = 0;
10879 wpt_uint16 usSendSize = 0;
10880 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10882
10883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010884 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010885 -------------------------------------------------------------------------*/
10886 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10887 ( NULL == pEventData->pCBfnc ))
10888 {
10889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010890 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010891 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010892 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010893 }
10894
10895 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10896 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010897
Jeff Johnson295189b2012-06-20 16:38:30 -070010898 /*-----------------------------------------------------------------------
10899 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010900 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010901 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010902 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010903 sizeof(halTxPerTrackingReqParam),
10904 &pSendBuffer, &usDataOffset, &usSendSize))||
10905 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10906 {
10907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010908 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010909 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010911 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010913
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10915 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10916 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10917 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010918
10919 wpalMemoryCopy( pSendBuffer+usDataOffset,
10920 &halTxPerTrackingReqParam,
10921 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010922
10923 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010924 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010925
10926 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010928 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010929 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10930 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010931}/*WDI_ProcessSetTxPerTrackingReq*/
10932
10933/*=========================================================================
10934 Indications
10935=========================================================================*/
10936
10937/**
10938 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010939
10940 @param pWDICtx: pointer to the WLAN DAL context
10941 pEventData: pointer to the event information structure
10942
Jeff Johnson295189b2012-06-20 16:38:30 -070010943 @see
10944 @return Result of the function call
10945*/
10946WDI_Status
10947WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010948(
Jeff Johnson295189b2012-06-20 16:38:30 -070010949 WDI_ControlBlockType* pWDICtx,
10950 WDI_EventInfoType* pEventData
10951)
10952{
10953 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010954 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010955 wpt_uint16 usDataOffset = 0;
10956 wpt_uint16 usSendSize = 0;
10957 WDI_Status wdiStatus;
10958 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10960
10961 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010962 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010963 -------------------------------------------------------------------------*/
10964 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10965 {
10966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010967 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010968 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010969 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010970 }
10971
10972 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10973
10974 /*-----------------------------------------------------------------------
10975 Get message buffer
10976 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010977 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10978 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010979 sizeof(halWlanSuspendIndparams),
10980 &pSendBuffer, &usDataOffset, &usSendSize))||
10981 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10982 {
10983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10984 "Unable to get send buffer in Suspend Ind ");
10985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010987 }
10988
10989 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10990 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10991
Jeff Johnsone7245742012-09-05 17:12:55 -070010992 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070010993 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010994
Jeff Johnsone7245742012-09-05 17:12:55 -070010995 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10996 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010997
10998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010999 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011000 -------------------------------------------------------------------------*/
11001 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011002 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011003
Jeff Johnsone7245742012-09-05 17:12:55 -070011004 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011005 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11006}/*WDI_ProcessHostSuspendInd*/
11007
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011008
11009
11010/**
11011 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11012
11013 @param pWDICtx: pointer to the WLAN DAL context
11014 pEventData: pointer to the event information structure
11015
11016 @see
11017 @return Result of the function call
11018*/
11019WDI_Status
11020WDI_ProcessTrafficStatsInd
11021(
11022 WDI_ControlBlockType* pWDICtx,
11023 WDI_EventInfoType* pEventData
11024)
11025{
11026 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11027 wpt_uint8* pSendBuffer = NULL;
11028 wpt_uint16 usDataOffset = 0;
11029 wpt_uint16 usSendSize = 0;
11030 WDI_Status wdiStatus;
11031 tStatsClassBIndParams* pStatsClassBIndParams;
11032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11033
11034 /*-------------------------------------------------------------------------
11035 Sanity check
11036 -------------------------------------------------------------------------*/
11037 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11038 {
11039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11040 "%s: Invalid parameters in Traffic Stats ind",__func__);
11041 WDI_ASSERT(0);
11042 return WDI_STATUS_E_FAILURE;
11043 }
11044
11045 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11046
11047 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11048 {
11049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11050 "%s: Invalid parameters in Traffic Stats ind",__func__);
11051 WDI_ASSERT(0);
11052 return WDI_STATUS_E_FAILURE;
11053 }
11054
11055 /*-----------------------------------------------------------------------
11056 Get message buffer
11057 -----------------------------------------------------------------------*/
11058 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11059 WDI_TRAFFIC_STATS_IND,
11060 sizeof(tStatsClassBIndParams),
11061 &pSendBuffer, &usDataOffset, &usSendSize))||
11062 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11063 {
11064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11065 "Unable to get send buffer in Traffic Stats Ind ");
11066 WDI_ASSERT(0);
11067 return WDI_STATUS_E_FAILURE;
11068 }
11069
11070 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11071
11072 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11073
11074 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11075 pTrafficStatsIndParams->pTrafficStats,
11076 pTrafficStatsIndParams->length);
11077
11078 /*-------------------------------------------------------------------------
11079 Send Suspend Request to HAL
11080 -------------------------------------------------------------------------*/
11081 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11082 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11083
11084 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11085 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11086}/*WDI_ProcessTrafficStatsInd*/
11087
Chet Lanctot186b5732013-03-18 10:26:30 -070011088#ifdef WLAN_FEATURE_11W
11089/**
11090 @brief Process Exclude Unencrypted Indications function (called
11091 when Main FSM allows it)
11092
11093 @param pWDICtx: pointer to the WLAN DAL context
11094 pEventData: pointer to the event information structure
11095
11096 @see
11097 @return Result of the function call
11098*/
11099WDI_Status
11100WDI_ProcessExcludeUnencryptInd
11101(
11102 WDI_ControlBlockType* pWDICtx,
11103 WDI_EventInfoType* pEventData
11104)
11105{
11106 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11107 wpt_uint8* pSendBuffer = NULL;
11108 wpt_uint16 usDataOffset = 0;
11109 wpt_uint16 usSendSize = 0;
11110 WDI_Status wdiStatus;
11111 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11113
11114 /*-------------------------------------------------------------------------
11115 Sanity check
11116 -------------------------------------------------------------------------*/
11117 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11118 {
11119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11120 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11121 WDI_ASSERT(0);
11122 return WDI_STATUS_E_FAILURE;
11123 }
11124
11125 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11126
11127 /*-----------------------------------------------------------------------
11128 Get message buffer
11129 -----------------------------------------------------------------------*/
11130 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11131 WDI_EXCLUDE_UNENCRYPTED_IND,
11132 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11133 &pSendBuffer, &usDataOffset, &usSendSize))||
11134 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11135 {
11136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11137 "Unable to get send buffer in Exclude Unencrypted Ind ");
11138 WDI_ASSERT(0);
11139 return WDI_STATUS_E_FAILURE;
11140 }
11141
11142 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11143
11144 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11145
11146 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11147 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11148
11149 /*-------------------------------------------------------------------------
11150 Send Suspend Request to HAL
11151 -------------------------------------------------------------------------*/
11152 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11153 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11154
11155 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11156 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11157}/*WDI_ProcessExcludeUnencryptInd*/
11158#endif
11159
Yue Mab9c86f42013-08-14 15:59:08 -070011160/**
11161 @brief Process Add Periodic Tx Pattern Indication function (called when
11162 Main FSM allows it)
11163
11164 @param pWDICtx: pointer to the WLAN DAL context
11165 pEventData: pointer to the event information structure
11166
11167 @see
11168 @return Result of the function call
11169*/
11170WDI_Status
11171WDI_ProcessAddPeriodicTxPtrnInd
11172(
11173 WDI_ControlBlockType* pWDICtx,
11174 WDI_EventInfoType* pEventData
11175)
11176{
11177 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11178 wpt_uint8* pSendBuffer = NULL;
11179 wpt_uint16 usDataOffset = 0;
11180 wpt_uint16 usSendSize = 0;
11181 WDI_Status wdiStatus;
11182 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11183 wpt_uint8 selfStaIdx = 0;
11184
11185 /*-------------------------------------------------------------------------
11186 Sanity check
11187 -------------------------------------------------------------------------*/
11188 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11189 {
11190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11191 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11192 WDI_ASSERT(0);
11193 return WDI_STATUS_E_FAILURE;
11194 }
11195
11196 pAddPeriodicTxPtrnParams =
11197 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11198
11199 /*------------------------------------------------------------------------
11200 Get message buffer
11201 ------------------------------------------------------------------------*/
11202 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11203 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11204 &pSendBuffer, &usDataOffset, &usSendSize))||
11205 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11206 {
11207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11208 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11209 __func__);
11210 WDI_ASSERT(0);
11211 return WDI_STATUS_E_FAILURE;
11212 }
11213
11214 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11215
11216 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11217 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11218 &selfStaIdx))
11219 {
11220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11221 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011222 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011223
11224 return WDI_STATUS_E_FAILURE;
11225 }
11226
11227 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11228 halAddPeriodicTxPtrn->ucPtrnId =
11229 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11230 halAddPeriodicTxPtrn->usPtrnSize =
11231 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11232 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11233 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11234
11235 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11236 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11237 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11238
11239 /*-------------------------------------------------------------------------
11240 Send Indication to HAL
11241 -------------------------------------------------------------------------*/
11242 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11243 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11244
11245 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11246
11247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11248 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11249
11250 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11251} /* WDI_ProcessAddPeriodicTxPtrnInd */
11252
11253/**
11254 @brief Process Delete Periodic Tx Pattern Indication function (called when
11255 Main FSM allows it)
11256
11257 @param pWDICtx: pointer to the WLAN DAL context
11258 pEventData: pointer to the event information structure
11259
11260 @see
11261 @return Result of the function call
11262*/
11263WDI_Status
11264WDI_ProcessDelPeriodicTxPtrnInd
11265(
11266 WDI_ControlBlockType* pWDICtx,
11267 WDI_EventInfoType* pEventData
11268)
11269{
11270 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11271 wpt_uint8* pSendBuffer = NULL;
11272 wpt_uint16 usDataOffset = 0;
11273 wpt_uint16 usSendSize = 0;
11274 WDI_Status wdiStatus;
11275 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11276 wpt_uint8 selfStaIdx = 0;
11277
11278 /*-------------------------------------------------------------------------
11279 Sanity check
11280 -------------------------------------------------------------------------*/
11281 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11282 {
11283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11284 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11285 WDI_ASSERT(0);
11286 return WDI_STATUS_E_FAILURE;
11287 }
11288
11289 pDelPeriodicTxPtrnParams =
11290 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11291
11292 /*------------------------------------------------------------------------
11293 Get message buffer
11294 ------------------------------------------------------------------------*/
11295 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11296 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11297 &pSendBuffer, &usDataOffset, &usSendSize))||
11298 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11299 {
11300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11301 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11302 __func__);
11303 WDI_ASSERT(0);
11304 return WDI_STATUS_E_FAILURE;
11305 }
11306
11307 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11308
11309 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11310 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11311 &selfStaIdx))
11312 {
11313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11314 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011315 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011316
11317 return WDI_STATUS_E_FAILURE;
11318 }
11319
11320 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11321 halDelPeriodicTxPtrn->uPatternIdBitmap =
11322 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11323
11324 /*-------------------------------------------------------------------------
11325 Send Indication to HAL
11326 -------------------------------------------------------------------------*/
11327 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11328 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11329
11330 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11331
11332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11333 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11334
11335 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11336} /* WDI_ProcessDelPeriodicTxPtrnInd */
11337
Jeff Johnson295189b2012-06-20 16:38:30 -070011338/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011339 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011340==========================================================================*/
11341/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011342 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011343 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011344
11345 @param pWDICtx: pointer to the WLAN DAL context
11346 pEventData: pointer to the event information structure
11347
Jeff Johnson295189b2012-06-20 16:38:30 -070011348 @see
11349 @return Result of the function call
11350*/
11351WDI_Status
11352WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011353(
Jeff Johnson295189b2012-06-20 16:38:30 -070011354 WDI_ControlBlockType* pWDICtx,
11355 WDI_EventInfoType* pEventData
11356)
11357{
11358 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11359 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011361 wpt_uint16 usDataOffset = 0;
11362 wpt_uint16 usSendSize = 0;
11363 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11365
11366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011368 -------------------------------------------------------------------------*/
11369 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11370 ( NULL == pEventData->pCBfnc ))
11371 {
11372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011376 }
11377
11378 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11379 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11380 /*-----------------------------------------------------------------------
11381 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011382 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011383 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011384 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011385 sizeof(halSwitchChannelReq.switchChannelParams),
11386 &pSendBuffer, &usDataOffset, &usSendSize))||
11387 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11388 {
11389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011390 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011391 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011394 }
11395
Jeff Johnsone7245742012-09-05 17:12:55 -070011396 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011397 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011398#ifndef WLAN_FEATURE_VOWIFI
11399 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011400 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11401#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011402 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011403 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11404
11405#ifdef WLAN_FEATURE_VOWIFI
11406 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011407 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011408 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11409 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11410 WDI_MAC_ADDR_LEN);
11411 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11412 pwdiSwitchChParams->wdiChInfo.macBSSId,
11413 WDI_MAC_ADDR_LEN);
11414#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011415 wpalMemoryCopy( pSendBuffer+usDataOffset,
11416 &halSwitchChannelReq.switchChannelParams,
11417 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011418
11419 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011420 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011421
11422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011423 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011424 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11426 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011427}/*WDI_ProcessChannelSwitchReq*/
11428
11429/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011430 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011431 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011432
11433 @param pWDICtx: pointer to the WLAN DAL context
11434 pEventData: pointer to the event information structure
11435
Jeff Johnson295189b2012-06-20 16:38:30 -070011436 @see
11437 @return Result of the function call
11438*/
11439WDI_Status
11440WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011441(
Jeff Johnson295189b2012-06-20 16:38:30 -070011442 WDI_ControlBlockType* pWDICtx,
11443 WDI_EventInfoType* pEventData
11444)
11445{
11446 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11447 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011448 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011449 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011450 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011451 wpt_uint16 usDataOffset = 0;
11452 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011453 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011454
Jeff Johnsone7245742012-09-05 17:12:55 -070011455 tConfigStaReqMsg halConfigStaReqMsg;
11456 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11458
11459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011460 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011461 -------------------------------------------------------------------------*/
11462 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11463 ( NULL == pEventData->pCBfnc ))
11464 {
11465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011469 }
11470
11471 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11472 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11473 /*-------------------------------------------------------------------------
11474 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011475 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011476 -------------------------------------------------------------------------*/
11477 wpalMutexAcquire(&pWDICtx->wptMutex);
11478
11479 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011480 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011481 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011482 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11483 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11484 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011485
Jeff Johnsone7245742012-09-05 17:12:55 -070011486 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011487 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11489 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11490 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011491
11492 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011493 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011494 }
11495
11496 /*------------------------------------------------------------------------
11497 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011498 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011499 ------------------------------------------------------------------------*/
11500 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11501 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11503 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11504 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011505
Jeff Johnsone7245742012-09-05 17:12:55 -070011506 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011507 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011509 }
11510
11511 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011512
11513 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11514#ifdef WLAN_FEATURE_11AC
11515 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011516 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011517 else
11518#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011519 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011520
Jeff Johnson295189b2012-06-20 16:38:30 -070011521 /*-----------------------------------------------------------------------
11522 Get message buffer
11523 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011524 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11525 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011526 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011527 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011528 {
11529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011530 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011531 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11532 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011533 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011534 }
11535
11536 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011537 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011538 &pwdiConfigSTAParams->wdiReqInfo);
11539
11540 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11541 {
11542 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011543 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011544 WDI_STATableFindStaidByAddr(pWDICtx,
11545 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 {
11548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011549 MAC_ADDRESS_STR
11550 ": This station does not exist in the WDI Station Table",
11551 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011552 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011553 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011555 }
11556 }
11557 else
11558 {
11559 /* Need to fill in the STA Index to invalid, since at this point we have not
11560 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070011561 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 }
11563
11564 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011565 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011566
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 wpalMemoryCopy( pSendBuffer+usDataOffset,
11568 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011569 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011570
11571 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011572 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011573
Jeff Johnsone7245742012-09-05 17:12:55 -070011574 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11575 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011576 sizeof(pWDICtx->wdiCachedConfigStaReq));
11577
11578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011581 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11582 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011583}/*WDI_ProcessConfigStaReq*/
11584
11585
11586/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011587 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011588 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011589
11590 @param pWDICtx: pointer to the WLAN DAL context
11591 pEventData: pointer to the event information structure
11592
Jeff Johnson295189b2012-06-20 16:38:30 -070011593 @see
11594 @return Result of the function call
11595*/
11596WDI_Status
11597WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011598(
Jeff Johnson295189b2012-06-20 16:38:30 -070011599 WDI_ControlBlockType* pWDICtx,
11600 WDI_EventInfoType* pEventData
11601)
11602{
11603 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11604 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011605 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011608 wpt_uint16 usDataOffset = 0;
11609 wpt_uint16 usSendSize = 0;
11610 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011611 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11613
11614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011615 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011616 -------------------------------------------------------------------------*/
11617 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11618 ( NULL == pEventData->pCBfnc ))
11619 {
11620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011621 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011622 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011624 }
11625
11626 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11627 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11628 /*-------------------------------------------------------------------------
11629 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011631 -------------------------------------------------------------------------*/
11632 wpalMutexAcquire(&pWDICtx->wptMutex);
11633
11634 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011635 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011636 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011637 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11638 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11639 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011640
Jeff Johnsone7245742012-09-05 17:12:55 -070011641 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011642 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011644 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11645 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011646 }
11647 else
11648 {
11649 /*------------------------------------------------------------------------
11650 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011651 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011652 ------------------------------------------------------------------------*/
11653 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11654 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11656 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11657 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11658
11659 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011660 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011661 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011662 }
11663 }
11664 /* If the link is set to enter IDLE - the Session allocated for this BSS
11665 will be deleted on the Set Link State response coming from HAL
11666 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011667 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011668 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11669
11670 wpalMutexRelease(&pWDICtx->wptMutex);
11671 /*-----------------------------------------------------------------------
11672 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011673 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011674 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011675
11676 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011677 sizeof(halLinkStateReqMsg),
11678 &pSendBuffer, &usDataOffset, &usSendSize))||
11679 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11680 {
11681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011682 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011683 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011686 }
11687
11688 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11689 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11690
11691 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11692 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11693
Jeff Johnsone7245742012-09-05 17:12:55 -070011694 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011695 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11696
Jeff Johnsone7245742012-09-05 17:12:55 -070011697 wpalMemoryCopy( pSendBuffer+usDataOffset,
11698 &halLinkStateReqMsg,
11699 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011700
11701 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011702 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011703
11704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011705 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011706 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011707 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11708 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011709}/*WDI_ProcessSetLinkStateReq*/
11710
11711
11712/**
11713 @brief Process Get Stats Request function (called when Main FSM
11714 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011715
11716 @param pWDICtx: pointer to the WLAN DAL context
11717 pEventData: pointer to the event information structure
11718
Jeff Johnson295189b2012-06-20 16:38:30 -070011719 @see
11720 @return Result of the function call
11721*/
11722WDI_Status
11723WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011724(
Jeff Johnson295189b2012-06-20 16:38:30 -070011725 WDI_ControlBlockType* pWDICtx,
11726 WDI_EventInfoType* pEventData
11727)
11728{
11729 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11730 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011731 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011732 wpt_uint16 usDataOffset = 0;
11733 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011734 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011735 WDI_BSSSessionType* pBSSSes = NULL;
11736 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011737 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011738 tHalStatsReqMsg halStatsReqMsg;
11739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11740
11741 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011742 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011743 -------------------------------------------------------------------------*/
11744 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11745 ( NULL == pEventData->pCBfnc ) )
11746 {
11747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011748 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011751 }
11752
11753 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11754 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11755
11756 /*-------------------------------------------------------------------------
11757 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011758 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011759 -------------------------------------------------------------------------*/
11760 wpalMutexAcquire(&pWDICtx->wptMutex);
11761
11762 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011763 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011764 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011765 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11766 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011767 &macBSSID))
11768 {
11769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011770 "This station does not exist in the WDI Station Table %d",
11771 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011772 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011774 }
11775
Jeff Johnsone7245742012-09-05 17:12:55 -070011776 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11777 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011778 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11780 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11781 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011782
11783 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011784 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011785 }
11786
11787 /*------------------------------------------------------------------------
11788 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011789 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011790 ------------------------------------------------------------------------*/
11791 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11792 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11794 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11795 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011796
Jeff Johnsone7245742012-09-05 17:12:55 -070011797 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011798 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011799 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011800 }
11801
11802
11803 wpalMutexRelease(&pWDICtx->wptMutex);
11804
11805 /*-----------------------------------------------------------------------
11806 Get message buffer
11807 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011808 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011809 sizeof(halStatsReqMsg.statsReqParams),
11810 &pSendBuffer, &usDataOffset, &usSendSize))||
11811 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11812 {
11813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011814 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011815 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011818 }
11819
Jeff Johnsone7245742012-09-05 17:12:55 -070011820 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011821 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011822 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011823 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011824 wpalMemoryCopy( pSendBuffer+usDataOffset,
11825 &halStatsReqMsg.statsReqParams,
11826 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011827
11828 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011829 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011830
11831 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011832 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011833 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011834 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11835 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011836}/*WDI_ProcessGetStatsReq*/
11837
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080011838#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011839/**
11840 @brief Process Get Roam Rssi Request function (called when Main FSM
11841 allows it)
11842
11843 @param pWDICtx: pointer to the WLAN DAL context
11844 pEventData: pointer to the event information structure
11845
11846 @see
11847 @return Result of the function call
11848*/
11849WDI_Status
11850WDI_ProcessGetRoamRssiReq
11851(
11852 WDI_ControlBlockType* pWDICtx,
11853 WDI_EventInfoType* pEventData
11854)
11855{
11856 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11857 WDI_GetStatsRspCb wdiGetStatsRspCb;
11858 wpt_uint8* pSendBuffer = NULL;
11859 wpt_uint16 usDataOffset = 0;
11860 wpt_uint16 usSendSize = 0;
11861 wpt_uint8 ucCurrentBSSSesIdx = 0;
11862 WDI_BSSSessionType* pBSSSes = NULL;
11863 wpt_macAddr macBSSID;
11864 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11865 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11867 /*-------------------------------------------------------------------------
11868 Sanity check
11869 -------------------------------------------------------------------------*/
11870 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11871 ( NULL == pEventData->pCBfnc ) )
11872 {
11873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11874 "%s: Invalid parameters", __func__);
11875 WDI_ASSERT(0);
11876 return WDI_STATUS_E_FAILURE;
11877 }
11878
11879 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11880 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11881
11882 /*-------------------------------------------------------------------------
11883 Check to see if we are in the middle of an association, if so queue, if
11884 not it means it is free to process request
11885 -------------------------------------------------------------------------*/
11886 wpalMutexAcquire(&pWDICtx->wptMutex);
11887
11888 /*------------------------------------------------------------------------
11889 Find the BSS for which the request is made
11890 ------------------------------------------------------------------------*/
11891 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11892 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11893 &macBSSID))
11894 {
11895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011896 "This station does not exist in the WDI Station Table %d",
11897 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011898 wpalMutexRelease(&pWDICtx->wptMutex);
11899 return WDI_STATUS_E_FAILURE;
11900 }
11901
11902 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11903 if ( NULL == pBSSSes )
11904 {
11905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11906 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11907 __func__, MAC_ADDR_ARRAY(macBSSID));
11908
11909 wpalMutexRelease(&pWDICtx->wptMutex);
11910 return WDI_STATUS_E_NOT_ALLOWED;
11911 }
11912
11913 /*------------------------------------------------------------------------
11914 Check if this BSS is being currently processed or queued,
11915 if queued - queue the new request as well
11916 ------------------------------------------------------------------------*/
11917 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11918 {
11919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11920 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11921 __func__, MAC_ADDR_ARRAY(macBSSID));
11922
11923 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11924 wpalMutexRelease(&pWDICtx->wptMutex);
11925 return wdiStatus;
11926 }
11927
11928 wpalMutexRelease(&pWDICtx->wptMutex);
11929
11930 /*-----------------------------------------------------------------------
11931 Get message buffer
11932 -----------------------------------------------------------------------*/
11933 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11934 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11935 &pSendBuffer, &usDataOffset, &usSendSize))||
11936 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11937 {
11938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011939 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011940 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11941 WDI_ASSERT(0);
11942 return WDI_STATUS_E_FAILURE;
11943 }
11944
11945 halRssiRoamReqMsg.roamRssiReqParams.staId =
11946 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11947 wpalMemoryCopy( pSendBuffer+usDataOffset,
11948 &halRssiRoamReqMsg.roamRssiReqParams,
11949 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11950
11951 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11952 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11953
11954 /*-------------------------------------------------------------------------
11955 Send Get STA Request to HAL
11956 -------------------------------------------------------------------------*/
11957 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11958 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11959}/*WDI_ProcessGetRoamRssiReq*/
11960#endif
11961
Jeff Johnson295189b2012-06-20 16:38:30 -070011962/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011963 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011964 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011965
11966 @param pWDICtx: pointer to the WLAN DAL context
11967 pEventData: pointer to the event information structure
11968
Jeff Johnson295189b2012-06-20 16:38:30 -070011969 @see
11970 @return Result of the function call
11971*/
11972WDI_Status
11973WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011974(
Jeff Johnson295189b2012-06-20 16:38:30 -070011975 WDI_ControlBlockType* pWDICtx,
11976 WDI_EventInfoType* pEventData
11977)
11978{
11979 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11980 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11981
Jeff Johnsone7245742012-09-05 17:12:55 -070011982 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011983 wpt_uint16 usDataOffset = 0;
11984 wpt_uint16 usSendSize = 0;
11985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11986
11987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011988 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011989 -------------------------------------------------------------------------*/
11990 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11991 ( NULL == pEventData->pCBfnc))
11992 {
11993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011997 }
11998
11999 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12000 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12001
12002 /*-----------------------------------------------------------------------
12003 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012004 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 -----------------------------------------------------------------------*/
12006
Jeff Johnsone7245742012-09-05 17:12:55 -070012007 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012008 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12009 &pSendBuffer, &usDataOffset, &usSendSize))||
12010 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12011 {
12012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012013 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012014 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012017 }
12018
Jeff Johnsone7245742012-09-05 17:12:55 -070012019 wpalMemoryCopy( pSendBuffer+usDataOffset,
12020 &pwdiUpdateCfgParams->uConfigBufferLen,
12021 sizeof(wpt_uint32));
12022 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12023 pwdiUpdateCfgParams->pConfigBuffer,
12024 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012025
12026 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012027 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012028
12029 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012030 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012031 -------------------------------------------------------------------------*/
12032
Jeff Johnsone7245742012-09-05 17:12:55 -070012033 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12034 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012035
12036}/*WDI_ProcessUpdateCfgReq*/
12037
12038
12039/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012042
12043 @param pWDICtx: pointer to the WLAN DAL context
12044 pEventData: pointer to the event information structure
12045
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 @see
12047 @return Result of the function call
12048*/
12049WDI_Status
12050WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012051(
Jeff Johnson295189b2012-06-20 16:38:30 -070012052 WDI_ControlBlockType* pWDICtx,
12053 WDI_EventInfoType* pEventData
12054)
12055{
12056 WDI_AddBAReqParamsType* pwdiAddBAParams;
12057 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012058 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012059 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012060 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012061 wpt_uint16 usDataOffset = 0;
12062 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012063 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012064 wpt_macAddr macBSSID;
12065
12066 tAddBAReqMsg halAddBAReq;
12067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12068
12069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012070 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012071 -------------------------------------------------------------------------*/
12072 if (( NULL == pEventData ) ||
12073 ( NULL == pEventData->pEventData) ||
12074 ( NULL == pEventData->pCBfnc ))
12075 {
12076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012077 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012080 }
12081
12082 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12083 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12084
12085 /*-------------------------------------------------------------------------
12086 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012087 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012088 -------------------------------------------------------------------------*/
12089 wpalMutexAcquire(&pWDICtx->wptMutex);
12090
12091 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012092 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012093 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012094 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12095 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012096 &macBSSID))
12097 {
12098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012099 "This station does not exist in the WDI Station Table %d",
12100 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012101 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012103 }
12104
Jeff Johnsone7245742012-09-05 17:12:55 -070012105 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12106 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012107 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12109 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12110 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012111
12112 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012113 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012114 }
12115
12116 /*------------------------------------------------------------------------
12117 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012118 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012119 ------------------------------------------------------------------------*/
12120 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12121 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12123 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12124 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012125
Jeff Johnsone7245742012-09-05 17:12:55 -070012126 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012127 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012128 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012129 }
12130
12131
12132 wpalMutexRelease(&pWDICtx->wptMutex);
12133 /*-----------------------------------------------------------------------
12134 Get message buffer
12135 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012136 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012137 sizeof(halAddBAReq.addBAParams),
12138 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012139 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012140 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12141 {
12142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012143 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012144 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12145 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012147 }
12148
Jeff Johnsone7245742012-09-05 17:12:55 -070012149 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012150 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12151 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12152#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012153 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12155#endif
12156
Jeff Johnsone7245742012-09-05 17:12:55 -070012157 wpalMemoryCopy( pSendBuffer+usDataOffset,
12158 &halAddBAReq.addBAParams,
12159 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012160
12161 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012162 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012163
12164 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012165 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012166 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012167 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12168 wdiAddBARspCb, pEventData->pUserData,
12169 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012170}/*WDI_ProcessAddBAReq*/
12171
12172
12173
12174/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012175 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012176 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012177
12178 @param pWDICtx: pointer to the WLAN DAL context
12179 pEventData: pointer to the event information structure
12180
Jeff Johnson295189b2012-06-20 16:38:30 -070012181 @see
12182 @return Result of the function call
12183*/
12184WDI_Status
12185WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012186(
Jeff Johnson295189b2012-06-20 16:38:30 -070012187 WDI_ControlBlockType* pWDICtx,
12188 WDI_EventInfoType* pEventData
12189)
12190{
12191 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12192 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012193 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012194 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012195 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012196 wpt_uint16 usDataOffset = 0;
12197 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012198 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012199 wpt_uint16 index;
12200 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012201
Jeff Johnson295189b2012-06-20 16:38:30 -070012202 tTriggerBAReqMsg halTriggerBAReq;
12203 tTriggerBaReqCandidate* halTriggerBACandidate;
12204 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12206
12207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012208 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012209 -------------------------------------------------------------------------*/
12210 if (( NULL == pEventData ) ||
12211 ( NULL == pEventData->pEventData ) ||
12212 ( NULL == pEventData->pCBfnc ))
12213 {
12214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012215 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012218 }
12219
12220 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12221 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12222 /*-------------------------------------------------------------------------
12223 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012224 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012225 -------------------------------------------------------------------------*/
12226 wpalMutexAcquire(&pWDICtx->wptMutex);
12227
12228 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012229 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012230 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012231 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12232 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012233 &macBSSID))
12234 {
12235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012236 "This station does not exist in the WDI Station Table %d",
12237 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012238 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012240 }
12241
Jeff Johnsone7245742012-09-05 17:12:55 -070012242 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12243 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012244 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12246 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12247 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012248
12249 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012250 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012251 }
12252
12253 /*------------------------------------------------------------------------
12254 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012255 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012256 ------------------------------------------------------------------------*/
12257 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12258 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12260 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12261 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012262
Jeff Johnsone7245742012-09-05 17:12:55 -070012263 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012264 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012265 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012266 }
12267
12268
12269 wpalMutexRelease(&pWDICtx->wptMutex);
12270 /*-----------------------------------------------------------------------
12271 Get message buffer
12272 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012273 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12274 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012275 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012276 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012277 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12278 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012279 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012280 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012281 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012282 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12283 {
12284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012285 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012286 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12287 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 }
12290
Jeff Johnsone7245742012-09-05 17:12:55 -070012291 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012292 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012293 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012294 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12295
Jeff Johnsone7245742012-09-05 17:12:55 -070012296 wpalMemoryCopy( pSendBuffer+usDataOffset,
12297 &halTriggerBAReq.triggerBAParams,
12298 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012299
Jeff Johnsone7245742012-09-05 17:12:55 -070012300 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012301 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12302 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12303 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012304
12305 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 index++)
12307 {
12308 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12309 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12310 halTriggerBACandidate++;
12311 wdiTriggerBACandidate++;
12312 }
12313
12314 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012315 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012316
12317 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012318 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012319 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012320 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12321 wdiTriggerBARspCb, pEventData->pUserData,
12322 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012323}/*WDI_ProcessTriggerBAReq*/
12324
12325
12326
12327/**
12328 @brief Process Update Beacon Params Request function (called when Main FSM
12329 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012330
12331 @param pWDICtx: pointer to the WLAN DAL context
12332 pEventData: pointer to the event information structure
12333
Jeff Johnson295189b2012-06-20 16:38:30 -070012334 @see
12335 @return Result of the function call
12336*/
12337WDI_Status
12338WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012339(
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 WDI_ControlBlockType* pWDICtx,
12341 WDI_EventInfoType* pEventData
12342)
12343{
12344 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12345 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012346 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012347 wpt_uint16 usDataOffset = 0;
12348 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012349 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12351
12352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012354 -------------------------------------------------------------------------*/
12355 if (( NULL == pEventData ) ||
12356 ( NULL == pEventData->pEventData) ||
12357 ( NULL == pEventData->pCBfnc))
12358 {
12359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012363 }
12364
12365 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12366 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12367 /*-----------------------------------------------------------------------
12368 Get message buffer
12369 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012370 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012371 sizeof(halUpdateBeaconParams),
12372 &pSendBuffer, &usDataOffset, &usSendSize))||
12373 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12374 {
12375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012376 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012377 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12378 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 /*BSS Index of the BSS*/
12383 halUpdateBeaconParams.bssIdx =
12384 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12385 /*shortPreamble mode. HAL should update all the STA rates when it
12386 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012387 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012388 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12389 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012390 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012391 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12392 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012393 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012394 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12395
12396 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012397 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012398 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012400 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012401 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012402 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012403 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012404 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012405 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012406 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12409 halUpdateBeaconParams.fRIFSMode =
12410 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012412 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12413
Jeff Johnsone7245742012-09-05 17:12:55 -070012414 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12415 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012416
12417 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012418 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012419
12420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012421 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012422 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012423 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12424 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012425}/*WDI_ProcessUpdateBeaconParamsReq*/
12426
12427
12428
12429/**
12430 @brief Process Send Beacon template Request function (called when Main FSM
12431 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012432
12433 @param pWDICtx: pointer to the WLAN DAL context
12434 pEventData: pointer to the event information structure
12435
Jeff Johnson295189b2012-06-20 16:38:30 -070012436 @see
12437 @return Result of the function call
12438*/
12439WDI_Status
12440WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012441(
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 WDI_ControlBlockType* pWDICtx,
12443 WDI_EventInfoType* pEventData
12444)
12445{
12446 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12447 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012448 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012449 wpt_uint16 usDataOffset = 0;
12450 wpt_uint16 usSendSize = 0;
12451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12452
12453 tSendBeaconReqMsg halSendBeaconReq;
12454 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012455 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012456 -------------------------------------------------------------------------*/
12457 if (( NULL == pEventData ) ||
12458 ( NULL == pEventData->pEventData ) ||
12459 ( NULL == pEventData->pCBfnc ))
12460 {
12461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012462 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012465 }
12466
12467 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12468 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12469 /*-----------------------------------------------------------------------
12470 Get message buffer
12471 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012472 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 sizeof(halSendBeaconReq.sendBeaconParam),
12474 &pSendBuffer, &usDataOffset, &usSendSize))||
12475 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12476 {
12477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012478 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012479 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12480 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012481 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 }
12483
12484 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12485 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12486 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012487 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012488 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12489 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12490 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12491 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012492 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012493 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053012494 /* usP2PIeOffset should be atleast greater than timIeOffset */
12495 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12496 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12497 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12498 {
12499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12500 "Invalid usP2PIeOffset %hu",
12501 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12502 WDI_ASSERT(0);
12503 return WDI_STATUS_E_FAILURE;
12504 }
12505
Jeff Johnsone7245742012-09-05 17:12:55 -070012506 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012507 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012508
Jeff Johnsone7245742012-09-05 17:12:55 -070012509 wpalMemoryCopy( pSendBuffer+usDataOffset,
12510 &halSendBeaconReq.sendBeaconParam,
12511 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012512
12513 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012514 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012515
12516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012517 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012518 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012519 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12520 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012521}/*WDI_ProcessSendBeaconParamsReq*/
12522
12523/**
12524 @brief Process Update Beacon Params Request function (called when Main FSM
12525 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012526
12527 @param pWDICtx: pointer to the WLAN DAL context
12528 pEventData: pointer to the event information structure
12529
Jeff Johnson295189b2012-06-20 16:38:30 -070012530 @see
12531 @return Result of the function call
12532*/
12533WDI_Status
12534WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012535(
Jeff Johnson295189b2012-06-20 16:38:30 -070012536 WDI_ControlBlockType* pWDICtx,
12537 WDI_EventInfoType* pEventData
12538)
12539{
12540 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12541 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012542 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012543 wpt_uint16 usDataOffset = 0;
12544 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012545 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12547
12548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012549 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012550 -------------------------------------------------------------------------*/
12551 if (( NULL == pEventData ) ||
12552 ( NULL == pEventData->pEventData) ||
12553 ( NULL == pEventData->pCBfnc))
12554 {
12555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012559 }
12560
Jeff Johnsone7245742012-09-05 17:12:55 -070012561 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012562 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012563 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012564 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12565 /*-----------------------------------------------------------------------
12566 Get message buffer
12567 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012568 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012569 sizeof(halUpdateProbeRspTmplParams),
12570 &pSendBuffer, &usDataOffset, &usSendSize))||
12571 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12572 {
12573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012574 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12576 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012577 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012578 }
12579
12580 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012581 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012582 WDI_MAC_ADDR_LEN);
12583
Jeff Johnsone7245742012-09-05 17:12:55 -070012584 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012585 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12586
12587 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12588 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012590
12591
12592 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12593 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12594 WDI_PROBE_REQ_BITMAP_IE_LEN);
12595
Jeff Johnsone7245742012-09-05 17:12:55 -070012596 wpalMemoryCopy( pSendBuffer+usDataOffset,
12597 &halUpdateProbeRspTmplParams,
12598 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012599
12600 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012601 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012602
12603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012604 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012605 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012606 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12607 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12608 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012609}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12610
12611/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012612 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012613 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012614
12615 @param pWDICtx: pointer to the WLAN DAL context
12616 pEventData: pointer to the event information structure
12617
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 @see
12619 @return Result of the function call
12620*/
12621WDI_Status
12622WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012623(
Jeff Johnson295189b2012-06-20 16:38:30 -070012624 WDI_ControlBlockType* pWDICtx,
12625 WDI_EventInfoType* pEventData
12626)
12627{
12628
12629 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12630 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12631
12632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012634 -------------------------------------------------------------------------*/
12635 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012636 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012637 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012638 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012639 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12640 {
12641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012644 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 }
12646
12647 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012648 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012649 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12650
12651 /*cache the wdi nv request message here if the the first fragment
12652 * To issue the request to HAL for the next fragment */
12653 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12654 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012655 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12656 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012657 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12658
12659 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12660 pWDICtx->pRspCBUserData = pEventData->pUserData;
12661 }
12662
12663 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12664}
12665
12666/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012667 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012668 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012669
12670 @param pWDICtx: pointer to the WLAN DAL context
12671 pEventData: pointer to the event information structure
12672
Jeff Johnson295189b2012-06-20 16:38:30 -070012673 @see
12674 @return Result of the function call
12675*/
12676WDI_Status WDI_ProcessSetMaxTxPowerReq
12677(
12678 WDI_ControlBlockType* pWDICtx,
12679 WDI_EventInfoType* pEventData
12680)
12681{
12682 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12683 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012684 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012685 wpt_uint16 usDataOffset = 0;
12686 wpt_uint16 usSendSize = 0;
12687 tSetMaxTxPwrReq halSetMaxTxPower;
12688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12689
12690 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012691 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012692 -------------------------------------------------------------------------*/
12693 if (( NULL == pEventData ) ||
12694 ( NULL == pEventData->pEventData ) ||
12695 ( NULL == pEventData->pCBfnc ))
12696 {
12697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012701 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012702 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012703 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012704 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12706
12707 /*-----------------------------------------------------------------------
12708 Get message buffer
12709 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012710if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012711 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12712 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012713 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012714)))
12715 {
12716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012717 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012718 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12719 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
12723 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12724 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12725 WDI_MAC_ADDR_LEN);
12726
12727 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12728 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12729 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012730 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012731 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012732
12733 wpalMemoryCopy( pSendBuffer+usDataOffset,
12734 &halSetMaxTxPower.setMaxTxPwrParams,
12735 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012736
12737 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012738 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012739
12740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012741 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012742 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012743 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12744 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12745 WDI_SET_MAX_TX_POWER_RESP);
12746
Jeff Johnson295189b2012-06-20 16:38:30 -070012747}
12748
Arif Hussaina5ebce02013-08-09 15:09:58 -070012749/*
12750 @brief Process Set Max Tx Power Per Band Request function (called when Main
12751 FSM allows it)
12752
12753 @param pWDICtx: pointer to the WLAN DAL context
12754 pEventData: pointer to the event information structure
12755
12756 @see
12757 @return Result of the function call
12758*/
12759WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
12760(
12761 WDI_ControlBlockType* pWDICtx,
12762 WDI_EventInfoType* pEventData
12763)
12764{
12765 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
12766 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
12767 wpt_uint8* pSendBuffer = NULL;
12768 wpt_uint16 usDataOffset = 0;
12769 wpt_uint16 usSendSize = 0;
12770 tpSetMaxTxPwrPerBandReq phalSetMxTxPwrPerBand = NULL;
12771 WDI_Status rValue = WDI_STATUS_SUCCESS;
12772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12773
12774 /*-------------------------------------------------------------------------
12775 Sanity check
12776 -------------------------------------------------------------------------*/
12777 if (( NULL == pEventData ) ||
12778 ( NULL == pEventData->pEventData ) ||
12779 ( NULL == pEventData->pCBfnc ))
12780 {
12781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12782 "%s: Invalid parameters", __func__);
12783 WDI_ASSERT(0);
12784 return WDI_STATUS_E_FAILURE;
12785 }
12786 pwdiSetMaxTxPowerPerBandParams = \
12787 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
12788
12789 wdiSetMaxTxPowerPerBandRspCb = \
12790 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
12791
12792 /*-----------------------------------------------------------------------
12793 Get message buffer
12794 -----------------------------------------------------------------------*/
12795
12796 rValue = WDI_GetMessageBuffer(pWDICtx,
12797 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
12798 sizeof(tSetMaxTxPwrPerBandParams),
12799 &pSendBuffer, &usDataOffset, &usSendSize);
12800
12801 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
12802 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
12803 {
12804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12805 "Unable to get Set Max Tx Power Per Band req %p %p %p",
12806 pEventData, pwdiSetMaxTxPowerPerBandParams,
12807 wdiSetMaxTxPowerPerBandRspCb);
12808 WDI_ASSERT(0);
12809 return WDI_STATUS_E_FAILURE;
12810 }
12811
12812
12813 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandReq)(pSendBuffer + usDataOffset);
12814 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.bandInfo = \
12815 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
12816
12817 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.power = \
12818 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
12819
12820 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
12821 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
12822
12823 /*-------------------------------------------------------------------------
12824 Send Set Max Tx Power Per Band Request to HAL
12825 -------------------------------------------------------------------------*/
12826 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
12827 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
12828 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
12829}
12830
schang86c22c42013-03-13 18:41:24 -070012831/**
12832 @brief Process Set Tx Power Request function (called when Main
12833 FSM allows it)
12834
12835 @param pWDICtx: pointer to the WLAN DAL context
12836 pEventData: pointer to the event information structure
12837
12838 @see
12839 @return Result of the function call
12840*/
12841WDI_Status WDI_ProcessSetTxPowerReq
12842(
12843 WDI_ControlBlockType* pWDICtx,
12844 WDI_EventInfoType* pEventData
12845)
12846{
12847 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12848 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12849 wpt_uint8* pSendBuffer = NULL;
12850 wpt_uint16 usDataOffset = 0;
12851 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070012852 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070012853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12854
12855 /*-------------------------------------------------------------------------
12856 Sanity check
12857 -------------------------------------------------------------------------*/
12858 if (( NULL == pEventData ) ||
12859 ( NULL == pEventData->pEventData ) ||
12860 ( NULL == pEventData->pCBfnc ))
12861 {
12862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12863 "%s: Invalid parameters", __func__);
12864 WDI_ASSERT(0);
12865 return WDI_STATUS_E_FAILURE;
12866 }
12867
12868 pwdiSetTxPowerParams =
12869 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12870 wdiSetTxPowerRspCb =
12871 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12872
12873 /*-----------------------------------------------------------------------
12874 Get message buffer
12875 -----------------------------------------------------------------------*/
12876 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12877 sizeof(tSetTxPwrReqParams),
12878 &pSendBuffer, &usDataOffset, &usSendSize))||
12879 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12880 )))
12881 {
12882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012883 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070012884 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12885 WDI_ASSERT(0);
12886 return WDI_STATUS_E_FAILURE;
12887 }
12888
Leo Chang9a43db92013-03-25 17:39:58 -070012889 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12890 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12891 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070012892
12893 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12894 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12895
12896 /*-------------------------------------------------------------------------
12897 Send Set Tx Power Request to HAL
12898 -------------------------------------------------------------------------*/
12899 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12900 wdiSetTxPowerRspCb, pEventData->pUserData,
12901 WDI_SET_TX_POWER_RESP);
12902}
Jeff Johnson295189b2012-06-20 16:38:30 -070012903
12904/**
12905 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12906 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012907
12908 @param pWDICtx: pointer to the WLAN DAL context
12909 pEventData: pointer to the event information structure
12910
Jeff Johnson295189b2012-06-20 16:38:30 -070012911 @see
12912 @return Result of the function call
12913*/
12914WDI_Status
12915WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012916(
Jeff Johnson295189b2012-06-20 16:38:30 -070012917 WDI_ControlBlockType* pWDICtx,
12918 WDI_EventInfoType* pEventData
12919)
12920{
12921 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12922 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012923 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012924 wpt_uint16 usDataOffset = 0;
12925 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012926 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12928
12929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012930 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012931 -------------------------------------------------------------------------*/
12932 if (( NULL == pEventData ) ||
12933 ( NULL == pEventData->pEventData) ||
12934 ( NULL == pEventData->pCBfnc))
12935 {
12936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012940 }
12941
Jeff Johnsone7245742012-09-05 17:12:55 -070012942 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012943 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012944 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012945 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12946 /*-----------------------------------------------------------------------
12947 Get message buffer
12948 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12950 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012951 sizeof(halSetP2PGONOAParams),
12952 &pSendBuffer, &usDataOffset, &usSendSize))||
12953 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12954 {
12955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012956 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012957 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012960 }
12961
Jeff Johnsone7245742012-09-05 17:12:55 -070012962 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012963 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012964 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012965 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12966 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012967 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012968 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012969 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012970 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012971 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012972 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012973 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012974 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12975
Jeff Johnsone7245742012-09-05 17:12:55 -070012976 wpalMemoryCopy( pSendBuffer+usDataOffset,
12977 &halSetP2PGONOAParams,
12978 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012979
12980 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012981 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012982
12983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012984 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012985 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012986 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12987 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12988 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012989}/*WDI_ProcessP2PGONOAReq*/
12990
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053012991#ifdef FEATURE_WLAN_TDLS
12992
12993/**
12994 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12995 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
13004WDI_ProcessTdlsLinkEstablishReq
13005(
13006 WDI_ControlBlockType* pWDICtx,
13007 WDI_EventInfoType* pEventData
13008)
13009{
13010 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13011 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13012 wpt_uint8* pSendBuffer = NULL;
13013 wpt_uint16 usDataOffset = 0;
13014 wpt_uint16 usSendSize = 0;
13015
13016 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13018
13019 /*-------------------------------------------------------------------------
13020 Sanity check
13021 -------------------------------------------------------------------------*/
13022 if (( NULL == pEventData ) ||
13023 ( NULL == pEventData->pEventData) ||
13024 ( NULL == pEventData->pCBfnc))
13025 {
13026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13027 "%s: Invalid parameters", __func__);
13028 WDI_ASSERT(0);
13029 return WDI_STATUS_E_FAILURE;
13030 }
13031 pwdiTDLSLinkEstablishReqParams =
13032 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13033 wdiTDLSLinkEstablishReqRspCb =
13034 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13035
13036
13037 /*-----------------------------------------------------------------------
13038 Get message buffer
13039 -----------------------------------------------------------------------*/
13040 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13041 WDI_TDLS_LINK_ESTABLISH_REQ,
13042 sizeof(halSetTDLSLinkEstablishParams),
13043 &pSendBuffer, &usDataOffset, &usSendSize))||
13044 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13045 {
13046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013047 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013048 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13049 WDI_ASSERT(0);
13050 return WDI_STATUS_E_FAILURE;
13051 }
13052
13053 halSetTDLSLinkEstablishParams.staIdx =
13054 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13055 halSetTDLSLinkEstablishParams.bIsResponder =
13056 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13057 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13058 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13059 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13060 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13061 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13062 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13063 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13064 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13065 halSetTDLSLinkEstablishParams.aAck = 0;
13066 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13067 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13068 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013069 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13070 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13071
13072 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13073 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13074 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13075 halSetTDLSLinkEstablishParams.validChannelsLen =
13076 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13077
13078 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13079 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13080 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13081 halSetTDLSLinkEstablishParams.validOperClassesLen =
13082 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013083
13084 wpalMemoryCopy( pSendBuffer+usDataOffset,
13085 &halSetTDLSLinkEstablishParams,
13086 sizeof(halSetTDLSLinkEstablishParams));
13087
13088 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13089 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13090
13091 /*-------------------------------------------------------------------------
13092 Send Update Probe Resp Template Request to HAL
13093 -------------------------------------------------------------------------*/
13094 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13095 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13096 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13097 return 0;
13098}/*WDI_ProcessTdlsLinkEstablishReq*/
13099
13100
13101#endif
13102
Jeff Johnson295189b2012-06-20 16:38:30 -070013103
13104
13105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013106 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013108 @param None
13109
13110 @see
13111 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013112*/
13113void
13114WDI_SetPowerStateCb
13115(
13116 wpt_status status,
13117 unsigned int dxePhyAddr,
13118 void *pContext
13119)
13120{
13121 wpt_status wptStatus;
13122 WDI_ControlBlockType *pCB = NULL;
13123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
13124 if(eWLAN_PAL_STATUS_E_FAILURE == status )
13125 {
13126 //it shouldn't happen, put an error msg
13127 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013128 /*
13129 * Trigger the event to bring the Enter BMPS req function to come
13130 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013131*/
13132 if( NULL != pContext )
13133 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013134 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013135 }
13136 else
13137 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013138 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013139 pCB = &gWDICb;
13140 }
13141 pCB->dxePhyAddr = dxePhyAddr;
13142 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13143 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13144 {
13145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13146 "Failed to set an event");
13147
Jeff Johnsone7245742012-09-05 17:12:55 -070013148 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 }
13150 return;
13151}
13152
13153
13154/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013155 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013156 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013157
13158 @param pWDICtx: pointer to the WLAN DAL context
13159 pEventData: pointer to the event information structure
13160
Jeff Johnson295189b2012-06-20 16:38:30 -070013161 @see
13162 @return Result of the function call
13163*/
13164WDI_Status
13165WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013166(
Jeff Johnson295189b2012-06-20 16:38:30 -070013167 WDI_ControlBlockType* pWDICtx,
13168 WDI_EventInfoType* pEventData
13169)
13170{
Jeff Johnson43971f52012-07-17 12:26:56 -070013171 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013172 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013173 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 wpt_uint16 usDataOffset = 0;
13175 wpt_uint16 usSendSize = 0;
13176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13177
13178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013179 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013180 -------------------------------------------------------------------------*/
13181 if (( NULL == pEventData ) ||
13182 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
13183 {
13184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013185 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013187 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 }
13189
13190 /*-----------------------------------------------------------------------
13191 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013192 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013193 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013194 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 0,
13196 &pSendBuffer, &usDataOffset, &usSendSize))||
13197 ( usSendSize < (usDataOffset )))
13198 {
13199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013200 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013201 pEventData, wdiEnterImpsRspCb);
13202 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013203 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 }
13205
13206 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013207 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13208 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013209 {
13210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13211 "WDI Init failed to reset an event");
13212
Jeff Johnsone7245742012-09-05 17:12:55 -070013213 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013214 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013215 }
13216
13217 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013218 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13219 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013221 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013222 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013223 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013224 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013225
13226 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013227 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013228 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013229 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13230 WDI_SET_POWER_STATE_TIMEOUT);
13231 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 {
13233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13234 "WDI Init failed to wait on an event");
13235
Jeff Johnsone7245742012-09-05 17:12:55 -070013236 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013237 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013238 }
13239
13240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013241 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013242 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013243 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13244 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013245
13246fail:
13247 // Release the message buffer so we don't leak
13248 wpalMemoryFree(pSendBuffer);
13249
13250failRequest:
13251 //WDA should have failure check to avoid the memory leak
13252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013253}/*WDI_ProcessEnterImpsReq*/
13254
13255/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013256 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013257 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013258
13259 @param pWDICtx: pointer to the WLAN DAL context
13260 pEventData: pointer to the event information structure
13261
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 @see
13263 @return Result of the function call
13264*/
13265WDI_Status
13266WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013267(
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 WDI_ControlBlockType* pWDICtx,
13269 WDI_EventInfoType* pEventData
13270)
13271{
13272 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013273 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013274 wpt_uint16 usDataOffset = 0;
13275 wpt_uint16 usSendSize = 0;
13276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13277
13278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013280 -------------------------------------------------------------------------*/
13281 if (( NULL == pEventData ) ||
13282 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13283 {
13284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013288 }
13289
13290 /*-----------------------------------------------------------------------
13291 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013292 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013293 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013294 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013295 0,
13296 &pSendBuffer, &usDataOffset, &usSendSize))||
13297 ( usSendSize < (usDataOffset )))
13298 {
13299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013300 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013301 pEventData, wdiExitImpsRspCb);
13302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013304 }
13305
13306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013307 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013308 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013309 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13310 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013311}/*WDI_ProcessExitImpsReq*/
13312
13313/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013314 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013315 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013316
13317 @param pWDICtx: pointer to the WLAN DAL context
13318 pEventData: pointer to the event information structure
13319
Jeff Johnson295189b2012-06-20 16:38:30 -070013320 @see
13321 @return Result of the function call
13322*/
13323WDI_Status
13324WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013325(
Jeff Johnson295189b2012-06-20 16:38:30 -070013326 WDI_ControlBlockType* pWDICtx,
13327 WDI_EventInfoType* pEventData
13328)
13329{
13330 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13331 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013332 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013333 wpt_uint16 usDataOffset = 0;
13334 wpt_uint16 usSendSize = 0;
13335 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013336 wpt_status wptStatus;
13337
Jeff Johnson295189b2012-06-20 16:38:30 -070013338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13339
13340 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013341 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013342 -------------------------------------------------------------------------*/
13343 if (( NULL == pEventData ) ||
13344 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13345 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13346 {
13347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013348 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013349 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013350 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013351 }
13352
13353 /*-----------------------------------------------------------------------
13354 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013355 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013356 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013357 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 sizeof(enterBmpsReq),
13359 &pSendBuffer, &usDataOffset, &usSendSize))||
13360 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13361 {
13362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013363 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013364 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13365 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013366 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013367 }
13368
13369 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013370 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13371 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 {
13373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13374 "WDI Init failed to reset an event");
13375
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013377 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013378 }
13379
13380 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013381 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13382 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13383 {
13384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013385 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013386 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013387 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013388 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013389
13390/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013391 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013392 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013393 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13394 WDI_SET_POWER_STATE_TIMEOUT);
13395 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013396 {
13397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13398 "WDI Init failed to wait on an event");
13399
Jeff Johnsone7245742012-09-05 17:12:55 -070013400 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013401 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013402 }
13403
13404 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13405
13406 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13407 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13408 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13409 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13410
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080013411 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070013412 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13413 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13414 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13415
13416 wpalMemoryCopy( pSendBuffer+usDataOffset,
13417 &enterBmpsReq,
13418 sizeof(enterBmpsReq));
13419
13420 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013421 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013422
13423 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013424 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013425 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013426 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13427 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013428
13429fail:
13430 // Release the message buffer so we don't leak
13431 wpalMemoryFree(pSendBuffer);
13432
13433failRequest:
13434 //WDA should have failure check to avoid the memory leak
13435 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013436}/*WDI_ProcessEnterBmpsReq*/
13437
13438/**
13439 @brief Process Exit BMPS Request function (called when Main FSM
13440 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013441
13442 @param pWDICtx: pointer to the WLAN DAL context
13443 pEventData: pointer to the event information structure
13444
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 @see
13446 @return Result of the function call
13447*/
13448WDI_Status
13449WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013450(
Jeff Johnson295189b2012-06-20 16:38:30 -070013451 WDI_ControlBlockType* pWDICtx,
13452 WDI_EventInfoType* pEventData
13453)
13454{
13455 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13456 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013457 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013458 wpt_uint16 usDataOffset = 0;
13459 wpt_uint16 usSendSize = 0;
13460 tHalExitBmpsReqParams exitBmpsReq;
13461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13462
13463 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013464 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013465 -------------------------------------------------------------------------*/
13466 if (( NULL == pEventData ) ||
13467 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13468 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13469 {
13470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013471 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 }
13475
13476 /*-----------------------------------------------------------------------
13477 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013478 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013479 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013480 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013481 sizeof(exitBmpsReq),
13482 &pSendBuffer, &usDataOffset, &usSendSize))||
13483 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13484 {
13485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013486 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013487 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13488 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013490 }
13491 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13492
Jeff Johnsone7245742012-09-05 17:12:55 -070013493 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13494
Jeff Johnson295189b2012-06-20 16:38:30 -070013495 wpalMemoryCopy( pSendBuffer+usDataOffset,
13496 &exitBmpsReq,
13497 sizeof(exitBmpsReq));
13498
13499 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013501
13502 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013503 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013504 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013505 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13506 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013507}/*WDI_ProcessExitBmpsReq*/
13508
13509/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013510 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013511 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013512
13513 @param pWDICtx: pointer to the WLAN DAL context
13514 pEventData: pointer to the event information structure
13515
Jeff Johnson295189b2012-06-20 16:38:30 -070013516 @see
13517 @return Result of the function call
13518*/
13519WDI_Status
13520WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013521(
Jeff Johnson295189b2012-06-20 16:38:30 -070013522 WDI_ControlBlockType* pWDICtx,
13523 WDI_EventInfoType* pEventData
13524)
13525{
13526 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13527 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013528 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013529 wpt_uint16 usDataOffset = 0;
13530 wpt_uint16 usSendSize = 0;
13531 tUapsdReqParams enterUapsdReq;
13532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13533
13534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013536 -------------------------------------------------------------------------*/
13537 if (( NULL == pEventData ) ||
13538 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13539 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13540 {
13541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013542 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013545 }
13546
13547 /*-----------------------------------------------------------------------
13548 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013549 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013550 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013551 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 sizeof(enterUapsdReq),
13553 &pSendBuffer, &usDataOffset, &usSendSize))||
13554 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13555 {
13556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013557 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013558 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013561 }
13562
13563 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13564 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13565 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13566 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13567 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13568 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13569 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13570 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013571 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013572
Jeff Johnsone7245742012-09-05 17:12:55 -070013573 wpalMemoryCopy( pSendBuffer+usDataOffset,
13574 &enterUapsdReq,
13575 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013576
13577 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013578 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013579
13580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013581 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013582 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013583 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13584 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013585}/*WDI_ProcessEnterUapsdReq*/
13586
13587/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013588 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013589 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013590
13591 @param pWDICtx: pointer to the WLAN DAL context
13592 pEventData: pointer to the event information structure
13593
Jeff Johnson295189b2012-06-20 16:38:30 -070013594 @see
13595 @return Result of the function call
13596*/
13597WDI_Status
13598WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013599(
Jeff Johnson295189b2012-06-20 16:38:30 -070013600 WDI_ControlBlockType* pWDICtx,
13601 WDI_EventInfoType* pEventData
13602)
13603{
13604 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013605 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013606 wpt_uint16 usDataOffset = 0;
13607 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013608 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13609 wpt_uint8 bssIdx = 0;
13610
Jeff Johnson295189b2012-06-20 16:38:30 -070013611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13612
13613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013614 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013615 -------------------------------------------------------------------------*/
13616 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013617 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013618 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13619 {
13620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013621 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013624 }
13625
13626 /*-----------------------------------------------------------------------
13627 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013628 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013629 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013630 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013631 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013632 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013633 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013634 {
13635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013636 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013637 pEventData, wdiExitUapsdRspCb);
13638 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013639 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013640 }
13641
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013642 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13643
13644 wpalMemoryCopy( pSendBuffer+usDataOffset,
13645 &bssIdx,
13646 sizeof(wpt_uint8));
13647
13648 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13649 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13650
Jeff Johnson295189b2012-06-20 16:38:30 -070013651 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013652 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013653 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013654 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13655 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013656}/*WDI_ProcessExitUapsdReq*/
13657
13658/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013659 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013660 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013661
13662 @param pWDICtx: pointer to the WLAN DAL context
13663 pEventData: pointer to the event information structure
13664
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 @see
13666 @return Result of the function call
13667*/
13668WDI_Status
13669WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013670(
Jeff Johnson295189b2012-06-20 16:38:30 -070013671 WDI_ControlBlockType* pWDICtx,
13672 WDI_EventInfoType* pEventData
13673)
13674{
13675 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13676 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013677 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013678 wpt_uint16 usDataOffset = 0;
13679 wpt_uint16 usSendSize = 0;
13680 tUapsdInfo uapsdAcParamsReq;
13681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13682
13683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013684 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013685 -------------------------------------------------------------------------*/
13686 if (( NULL == pEventData ) ||
13687 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13688 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13689 {
13690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013694 }
13695
13696 /*-----------------------------------------------------------------------
13697 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013698 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013699 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013700 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013701 sizeof(uapsdAcParamsReq),
13702 &pSendBuffer, &usDataOffset, &usSendSize))||
13703 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13704 {
13705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013706 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013707 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013710 }
13711
13712 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13713 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13714 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13715 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13716 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13717 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13718
Jeff Johnsone7245742012-09-05 17:12:55 -070013719 wpalMemoryCopy( pSendBuffer+usDataOffset,
13720 &uapsdAcParamsReq,
13721 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013722
13723 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013724 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013725
13726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013727 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013728 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013729 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13730 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013731}/*WDI_ProcessSetUapsdAcParamsReq*/
13732
13733/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013734 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013735 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013736
13737 @param pWDICtx: pointer to the WLAN DAL context
13738 pEventData: pointer to the event information structure
13739
Jeff Johnson295189b2012-06-20 16:38:30 -070013740 @see
13741 @return Result of the function call
13742*/
13743WDI_Status
13744WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013745(
Jeff Johnson295189b2012-06-20 16:38:30 -070013746 WDI_ControlBlockType* pWDICtx,
13747 WDI_EventInfoType* pEventData
13748)
13749{
13750 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13751 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013752 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013753 wpt_uint16 usDataOffset = 0;
13754 wpt_uint16 usSendSize = 0;
13755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13756
13757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 -------------------------------------------------------------------------*/
13760 if (( NULL == pEventData ) ||
13761 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13762 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13763 {
13764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013768 }
13769
13770 /*-----------------------------------------------------------------------
13771 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013773 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013774 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013775 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13776 &pSendBuffer, &usDataOffset, &usSendSize))||
13777 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13778 {
13779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013780 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013781 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013784 }
13785
Jeff Johnsone7245742012-09-05 17:12:55 -070013786 wpalMemoryCopy( pSendBuffer+usDataOffset,
13787 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13788 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013789
13790 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013791 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013792
13793 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013794 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013795 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013796 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13797 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013798}/*WDI_ProcessUpdateUapsdParamsReq*/
13799
13800/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013801 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013802 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013803
13804 @param pWDICtx: pointer to the WLAN DAL context
13805 pEventData: pointer to the event information structure
13806
Jeff Johnson295189b2012-06-20 16:38:30 -070013807 @see
13808 @return Result of the function call
13809*/
13810WDI_Status
13811WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013812(
Jeff Johnson295189b2012-06-20 16:38:30 -070013813 WDI_ControlBlockType* pWDICtx,
13814 WDI_EventInfoType* pEventData
13815)
13816{
13817 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13818 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013820 wpt_uint16 usDataOffset = 0;
13821 wpt_uint16 usSendSize = 0;
13822 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13823
13824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13825
13826 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013827 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013828 -------------------------------------------------------------------------*/
13829 if (( NULL == pEventData ) ||
13830 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13831 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13832 {
13833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013834 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013835 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013836 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 }
13838
13839 /*-----------------------------------------------------------------------
13840 Get message buffer
13841 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013842 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013843 sizeof(halRxpFilterParams),
13844 &pSendBuffer, &usDataOffset, &usSendSize))||
13845 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13846 {
13847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013848 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013849 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013852 }
13853
Jeff Johnsone7245742012-09-05 17:12:55 -070013854 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013855 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013856 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013857 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13858
Jeff Johnsone7245742012-09-05 17:12:55 -070013859 wpalMemoryCopy( pSendBuffer+usDataOffset,
13860 &halRxpFilterParams,
13861 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013862
13863 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013864 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013865
13866 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013867 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013869 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13870 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013871}/*WDI_ProcessConfigureRxpFilterReq*/
13872
13873/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013874 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013875 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013876
13877 @param pWDICtx: pointer to the WLAN DAL context
13878 pEventData: pointer to the event information structure
13879
Jeff Johnson295189b2012-06-20 16:38:30 -070013880 @see
13881 @return Result of the function call
13882*/
13883WDI_Status
13884WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013885(
Jeff Johnson295189b2012-06-20 16:38:30 -070013886 WDI_ControlBlockType* pWDICtx,
13887 WDI_EventInfoType* pEventData
13888)
13889{
13890 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13891 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013892 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013893 wpt_uint16 usDataOffset = 0;
13894 wpt_uint16 usSendSize = 0;
13895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13896
13897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013898 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013899 -------------------------------------------------------------------------*/
13900 if (( NULL == pEventData ) ||
13901 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13902 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13903 {
13904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013905 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013908 }
13909
13910 /*-----------------------------------------------------------------------
13911 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013912 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013913 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013914 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013915 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13916 &pSendBuffer, &usDataOffset, &usSendSize))||
13917 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13918 {
13919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013920 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013921 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013924 }
13925
Jeff Johnsone7245742012-09-05 17:12:55 -070013926 wpalMemoryCopy( pSendBuffer+usDataOffset,
13927 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13928 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13929 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13930 &pwdiBeaconFilterParams->aFilters[0],
13931 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013932
13933 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013934 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013935
13936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013937 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013939 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13940 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013941}/*WDI_ProcessSetBeaconFilterReq*/
13942
13943/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013944 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013946
13947 @param pWDICtx: pointer to the WLAN DAL context
13948 pEventData: pointer to the event information structure
13949
Jeff Johnson295189b2012-06-20 16:38:30 -070013950 @see
13951 @return Result of the function call
13952*/
13953WDI_Status
13954WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013955(
Jeff Johnson295189b2012-06-20 16:38:30 -070013956 WDI_ControlBlockType* pWDICtx,
13957 WDI_EventInfoType* pEventData
13958)
13959{
13960 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13961 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013962 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013963 wpt_uint16 usDataOffset = 0;
13964 wpt_uint16 usSendSize = 0;
13965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13966
13967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013968 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013969 -------------------------------------------------------------------------*/
13970 if (( NULL == pEventData ) ||
13971 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13972 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13973 {
13974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 }
13979
13980 /*-----------------------------------------------------------------------
13981 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013982 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013985 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13986 &pSendBuffer, &usDataOffset, &usSendSize))||
13987 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13988 {
13989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013990 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 }
13995
Jeff Johnsone7245742012-09-05 17:12:55 -070013996 wpalMemoryCopy( pSendBuffer+usDataOffset,
13997 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13998 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013999
14000 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014001 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014002
14003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014004 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014005 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14007 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014008}
14009
14010/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014011 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014012 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014013
14014 @param pWDICtx: pointer to the WLAN DAL context
14015 pEventData: pointer to the event information structure
14016
Jeff Johnson295189b2012-06-20 16:38:30 -070014017 @see
14018 @return Result of the function call
14019*/
14020WDI_Status
14021WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014022(
Jeff Johnson295189b2012-06-20 16:38:30 -070014023 WDI_ControlBlockType* pWDICtx,
14024 WDI_EventInfoType* pEventData
14025)
14026{
14027 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14028 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014029 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014030 wpt_uint16 usDataOffset = 0;
14031 wpt_uint16 usSendSize = 0;
14032 tHalRSSIThresholds rssiThresholdsReq;
14033 WDI_Status ret_status = 0;
14034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14035
14036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014037 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014038 -------------------------------------------------------------------------*/
14039 if (( NULL == pEventData ) ||
14040 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14041 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14042 {
14043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014044 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014047 }
14048
14049 /*-----------------------------------------------------------------------
14050 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014051 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 sizeof(rssiThresholdsReq),
14055 &pSendBuffer, &usDataOffset, &usSendSize))||
14056 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14057 {
14058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014059 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014060 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014063 }
14064
Jeff Johnsone7245742012-09-05 17:12:55 -070014065 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014066 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014067 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014068 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014069 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014071 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014072 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014073 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014074 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014075 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014076 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014077 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014078 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014079 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014080 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014081 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014082 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014083 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014084 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14085
Jeff Johnsone7245742012-09-05 17:12:55 -070014086 wpalMemoryCopy( pSendBuffer+usDataOffset,
14087 &rssiThresholdsReq,
14088 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014089
14090 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014091 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014092
14093 /*-------------------------------------------------------------------------
14094 Send Set threshold req to HAL
14095 -------------------------------------------------------------------------*/
14096 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14097 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14098 {
14099 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14100 // req. Then as a result of processing the threshold cross ind, we trigger
14101 // a Set threshold req, then we need to indicate to WDI that it needs to
14102 // go to busy state as a result of the indication as we sent a req in the
14103 // same WDI context.
14104 // Hence expected state transition is to busy.
14105 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14106 }
14107
14108 return ret_status;
14109}
14110
14111/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014112 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014113 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014114
14115 @param pWDICtx: pointer to the WLAN DAL context
14116 pEventData: pointer to the event information structure
14117
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 @see
14119 @return Result of the function call
14120*/
14121WDI_Status
14122WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014123(
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 WDI_ControlBlockType* pWDICtx,
14125 WDI_EventInfoType* pEventData
14126)
14127{
14128 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14129 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014130 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014131 wpt_uint16 usDataOffset = 0;
14132 wpt_uint16 usSendSize = 0;
14133 tHalHostOffloadReq hostOffloadParams;
14134 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014135 wpt_uint8 ucCurrentBSSSesIdx = 0;
14136 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014137
14138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14139
14140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014141 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014142 -------------------------------------------------------------------------*/
14143 if (( NULL == pEventData ) ||
14144 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14145 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14146 {
14147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014148 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014150 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014151 }
14152
14153 /*-----------------------------------------------------------------------
14154 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014155 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014156 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014157 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014158 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14159 &pSendBuffer, &usDataOffset, &usSendSize))||
14160 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14161 {
14162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014163 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014164 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14165 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014166 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014167 }
14168
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014169 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14170 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14171 &pBSSSes);
14172 if ( NULL == pBSSSes )
14173 {
14174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014175 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14176 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014177 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014178 }
14179
Jeff Johnson295189b2012-06-20 16:38:30 -070014180 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14181 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014182
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14184 {
14185 // ARP Offload
14186 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14187 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14188 4);
14189 }
14190 else
14191 {
14192 // NS Offload
14193 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14194 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14195 16);
14196
14197#ifdef WLAN_NS_OFFLOAD
14198 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14199 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14200 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14201 16);
14202 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14203 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14204 16);
14205 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14206 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14207 16);
14208 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14209 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14210 16);
14211 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14212 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14213 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014214 nsOffloadParams.srcIPv6AddrValid =
14215 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14216
14217 nsOffloadParams.targetIPv6Addr1Valid =
14218 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14219
14220 nsOffloadParams.targetIPv6Addr2Valid =
14221 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14222
14223 nsOffloadParams.slotIndex =
14224 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014225
Jeff Johnson295189b2012-06-20 16:38:30 -070014226#endif // WLAN_NS_OFFLOAD
14227 }
14228
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014229 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14230
Jeff Johnson295189b2012-06-20 16:38:30 -070014231 // copy hostOffloadParams into pSendBuffer
14232 wpalMemoryCopy( pSendBuffer+usDataOffset,
14233 &hostOffloadParams,
14234 sizeof(hostOffloadParams));
14235
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014236 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014237 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014238 // copy nsOffloadParams into pSendBuffer
14239 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014240 &nsOffloadParams,
14241 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014242 }
14243 else
14244 {
14245#ifdef WLAN_NS_OFFLOAD
14246 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14247 {
14248 // copy nsOffloadParams into pSendBuffer
14249 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14250 &nsOffloadParams,
14251 sizeof(nsOffloadParams));
14252 }
14253#endif
14254 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014255
14256 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014258
14259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014260 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014261 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014262 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14263 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014264
14265fail:
14266 // Release the message buffer so we don't leak
14267 wpalMemoryFree(pSendBuffer);
14268
14269failRequest:
14270 //WDA should have failure check to avoid the memory leak
14271 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014272}/*WDI_ProcessHostOffloadReq*/
14273
14274/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014275 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014276 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014277
14278 @param pWDICtx: pointer to the WLAN DAL context
14279 pEventData: pointer to the event information structure
14280
Jeff Johnson295189b2012-06-20 16:38:30 -070014281 @see
14282 @return Result of the function call
14283*/
14284WDI_Status
14285WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014286(
Jeff Johnson295189b2012-06-20 16:38:30 -070014287 WDI_ControlBlockType* pWDICtx,
14288 WDI_EventInfoType* pEventData
14289)
14290{
14291 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14292 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014293 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 wpt_uint16 usDataOffset = 0;
14295 wpt_uint16 usSendSize = 0;
14296 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014297 wpt_uint8 ucCurrentBSSSesIdx = 0;
14298 WDI_BSSSessionType* pBSSSes = NULL;
14299
Jeff Johnson295189b2012-06-20 16:38:30 -070014300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14301
14302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 -------------------------------------------------------------------------*/
14305 if (( NULL == pEventData ) ||
14306 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14307 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14308 {
14309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14310 "Invalid parameters in Keep Alive req");
14311 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014312 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014313 }
14314
14315 /*-----------------------------------------------------------------------
14316 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014317 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014318 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014319 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 sizeof(keepAliveReq),
14321 &pSendBuffer, &usDataOffset, &usSendSize))||
14322 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14323 {
14324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014325 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014326 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14327 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014328 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014329 }
14330
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014331 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14332 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14333 &pBSSSes);
14334 if ( NULL == pBSSSes )
14335 {
14336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014337 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014338 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014339 }
14340
Jeff Johnson295189b2012-06-20 16:38:30 -070014341 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14342 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14343
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014344 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014345
Jeff Johnson295189b2012-06-20 16:38:30 -070014346 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14347 {
14348 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14349 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14350 HAL_IPV4_ADDR_LEN);
14351 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14352 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014353 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014354 wpalMemoryCopy(keepAliveReq.destMacAddr,
14355 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14356 HAL_MAC_ADDR_LEN);
14357 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014358
14359 wpalMemoryCopy( pSendBuffer+usDataOffset,
14360 &keepAliveReq,
14361 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014362
14363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014364 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014365
14366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014367 "Process keep alive req time period %d",
14368 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014369
14370 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014371 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014372
14373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14374 "Sending keep alive req to HAL");
14375
14376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014377 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014378 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014379 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14380 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014381
14382fail:
14383 // Release the message buffer so we don't leak
14384 wpalMemoryFree(pSendBuffer);
14385
14386failRequest:
14387 //WDA should have failure check to avoid the memory leak
14388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014389}/*WDI_ProcessKeepAliveReq*/
14390
14391
14392/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014393 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014394 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014395
14396 @param pWDICtx: pointer to the WLAN DAL context
14397 pEventData: pointer to the event information structure
14398
Jeff Johnson295189b2012-06-20 16:38:30 -070014399 @see
14400 @return Result of the function call
14401*/
14402WDI_Status
14403WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014404(
Jeff Johnson295189b2012-06-20 16:38:30 -070014405 WDI_ControlBlockType* pWDICtx,
14406 WDI_EventInfoType* pEventData
14407)
14408{
14409 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14410 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014411 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014412 wpt_uint16 usDataOffset = 0;
14413 wpt_uint16 usSendSize = 0;
14414 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014415 wpt_uint8 ucCurrentBSSSesIdx = 0;
14416 WDI_BSSSessionType* pBSSSes = NULL;
14417
Jeff Johnson295189b2012-06-20 16:38:30 -070014418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14419
14420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 -------------------------------------------------------------------------*/
14423 if (( NULL == pEventData ) ||
14424 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14425 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14426 {
14427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014428 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014430 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014431 }
14432
14433 /*-----------------------------------------------------------------------
14434 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014437 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014438 sizeof(wowlAddBcPtrnReq),
14439 &pSendBuffer, &usDataOffset, &usSendSize))||
14440 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14441 {
14442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014443 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014444 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14445 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014446 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014447 }
14448
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014449 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14450 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14451 &pBSSSes);
14452 if ( NULL == pBSSSes )
14453 {
14454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014455 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014456 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014457 }
14458
Jeff Johnsone7245742012-09-05 17:12:55 -070014459 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014460 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014461 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014462 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014465 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14467
14468 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14469 {
14470 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14471 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14472 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14473 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14474 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14475 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14476 }
14477 else
14478 {
14479 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14480 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14481 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14482 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14483 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14484 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14485
14486 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14487 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14488 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14489 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14490 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14491 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14492 }
14493
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014494 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14495
Jeff Johnson295189b2012-06-20 16:38:30 -070014496 wpalMemoryCopy( pSendBuffer+usDataOffset,
14497 &wowlAddBcPtrnReq,
14498 sizeof(wowlAddBcPtrnReq));
14499
14500 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014501 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014502
14503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014504 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014505 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014506 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14507 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014508fail:
14509 // Release the message buffer so we don't leak
14510 wpalMemoryFree(pSendBuffer);
14511
14512failRequest:
14513 //WDA should have failure check to avoid the memory leak
14514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014515}/*WDI_ProcessWowlAddBcPtrnReq*/
14516
14517/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014518 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014520
14521 @param pWDICtx: pointer to the WLAN DAL context
14522 pEventData: pointer to the event information structure
14523
Jeff Johnson295189b2012-06-20 16:38:30 -070014524 @see
14525 @return Result of the function call
14526*/
14527WDI_Status
14528WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014529(
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 WDI_ControlBlockType* pWDICtx,
14531 WDI_EventInfoType* pEventData
14532)
14533{
14534 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14535 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014536 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014537 wpt_uint16 usDataOffset = 0;
14538 wpt_uint16 usSendSize = 0;
14539 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014540 wpt_uint8 ucCurrentBSSSesIdx = 0;
14541 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14543
14544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014546 -------------------------------------------------------------------------*/
14547 if (( NULL == pEventData ) ||
14548 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14549 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14550 {
14551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014552 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014553 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014554 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014555 }
14556
14557 /*-----------------------------------------------------------------------
14558 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014559 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014560 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014561 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014562 sizeof(wowlDelBcPtrnReq),
14563 &pSendBuffer, &usDataOffset, &usSendSize))||
14564 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14565 {
14566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014567 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014568 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14569 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014570 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 }
14572
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014573 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14574 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14575 &pBSSSes);
14576 if ( NULL == pBSSSes )
14577 {
14578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014579 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014580 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014581 }
14582
Jeff Johnsone7245742012-09-05 17:12:55 -070014583 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014584 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014585
14586 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14587
Jeff Johnsone7245742012-09-05 17:12:55 -070014588 wpalMemoryCopy( pSendBuffer+usDataOffset,
14589 &wowlDelBcPtrnReq,
14590 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014591
14592 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014593 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014594
14595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014596 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014597 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014598 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14599 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014600
14601fail:
14602 // Release the message buffer so we don't leak
14603 wpalMemoryFree(pSendBuffer);
14604
14605failRequest:
14606 //WDA should have failure check to avoid the memory leak
14607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014608}/*WDI_ProcessWowlDelBcPtrnReq*/
14609
14610/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014611 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014612 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014613
14614 @param pWDICtx: pointer to the WLAN DAL context
14615 pEventData: pointer to the event information structure
14616
Jeff Johnson295189b2012-06-20 16:38:30 -070014617 @see
14618 @return Result of the function call
14619*/
14620WDI_Status
14621WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014622(
Jeff Johnson295189b2012-06-20 16:38:30 -070014623 WDI_ControlBlockType* pWDICtx,
14624 WDI_EventInfoType* pEventData
14625)
14626{
14627 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14628 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014629 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014630 wpt_uint16 usDataOffset = 0;
14631 wpt_uint16 usSendSize = 0;
14632 tHalWowlEnterParams wowlEnterReq;
14633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14634
14635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014636 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014637 -------------------------------------------------------------------------*/
14638 if (( NULL == pEventData ) ||
14639 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14640 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14641 {
14642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014643 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014646 }
14647
14648 /*-----------------------------------------------------------------------
14649 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014650 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014651 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014652 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014653 sizeof(wowlEnterReq),
14654 &pSendBuffer, &usDataOffset, &usSendSize))||
14655 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14656 {
14657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014658 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014662 }
14663
Kumar Anandaca924e2013-07-22 14:35:34 -070014664 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14665
Jeff Johnsone7245742012-09-05 17:12:55 -070014666 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014667 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014668 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014672 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014673 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014676 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014678 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014680 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14682
14683#ifdef WLAN_WAKEUP_EVENTS
14684 wowlEnterReq.ucWoWEAPIDRequestEnable =
14685 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14686
14687 wowlEnterReq.ucWoWEAPOL4WayEnable =
14688 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14689
14690 wowlEnterReq.ucWowNetScanOffloadMatch =
14691 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14692
14693 wowlEnterReq.ucWowGTKRekeyError =
14694 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14695
14696 wowlEnterReq.ucWoWBSSConnLoss =
14697 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14698#endif // WLAN_WAKEUP_EVENTS
14699
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014700 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14701
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14703 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14704 sizeof(tSirMacAddr));
14705
Jeff Johnsone7245742012-09-05 17:12:55 -070014706 wpalMemoryCopy( pSendBuffer+usDataOffset,
14707 &wowlEnterReq,
14708 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014709
14710 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014711 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014712
14713 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014714 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014715 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014716 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14717 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014718}/*WDI_ProcessWowlEnterReq*/
14719
14720/**
14721 @brief Process Wowl exit Request function (called when Main FSM
14722 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014723
14724 @param pWDICtx: pointer to the WLAN DAL context
14725 pEventData: pointer to the event information structure
14726
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 @see
14728 @return Result of the function call
14729*/
14730WDI_Status
14731WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014732(
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 WDI_ControlBlockType* pWDICtx,
14734 WDI_EventInfoType* pEventData
14735)
14736{
14737 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014738 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 wpt_uint16 usDataOffset = 0;
14741 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014742 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14744
14745 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014746 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014747 -------------------------------------------------------------------------*/
14748 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014749 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014750 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14751 {
14752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014753 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014756 }
14757
14758 /*-----------------------------------------------------------------------
14759 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014761 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014763 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014764 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014765 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 {
14767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014768 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 pEventData, wdiWowlExitCb);
14770 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014771 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014772 }
14773
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014774 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14775
14776 wpalMemoryCopy( pSendBuffer+usDataOffset,
14777 &wowlExitparams,
14778 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014780 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014781 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014782 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14783 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014784}/*WDI_ProcessWowlExitReq*/
14785
14786/**
14787 @brief Process Configure Apps Cpu Wakeup State Request function
14788 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014789
14790 @param pWDICtx: pointer to the WLAN DAL context
14791 pEventData: pointer to the event information structure
14792
Jeff Johnson295189b2012-06-20 16:38:30 -070014793 @see
14794 @return Result of the function call
14795*/
14796WDI_Status
14797WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014798(
Jeff Johnson295189b2012-06-20 16:38:30 -070014799 WDI_ControlBlockType* pWDICtx,
14800 WDI_EventInfoType* pEventData
14801)
14802{
14803 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14804 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014805 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014806 wpt_uint16 usDataOffset = 0;
14807 wpt_uint16 usSendSize = 0;
14808 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14810
14811 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014812 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014813 -------------------------------------------------------------------------*/
14814 if (( NULL == pEventData ) ||
14815 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14816 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14817 {
14818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014819 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014822 }
14823
14824 /*-----------------------------------------------------------------------
14825 Get message buffer
14826 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014827 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014828 sizeof(halCfgAppsCpuWakeupStateReqParams),
14829 &pSendBuffer, &usDataOffset, &usSendSize))||
14830 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14831 {
14832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014833 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014834 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14835 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014836 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014837 }
14838
Jeff Johnsone7245742012-09-05 17:12:55 -070014839 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014840 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14841
Jeff Johnsone7245742012-09-05 17:12:55 -070014842 wpalMemoryCopy( pSendBuffer+usDataOffset,
14843 &halCfgAppsCpuWakeupStateReqParams,
14844 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014845
14846 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014847 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014848
14849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014850 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014851 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014852 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14853 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14854 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014855}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14856
14857#ifdef WLAN_FEATURE_VOWIFI_11R
14858/**
14859 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14860 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014861
14862 @param pWDICtx: pointer to the WLAN DAL context
14863 pEventData: pointer to the event information structure
14864
Jeff Johnson295189b2012-06-20 16:38:30 -070014865 @see
14866 @return Result of the function call
14867*/
14868WDI_Status
14869WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014870(
Jeff Johnson295189b2012-06-20 16:38:30 -070014871 WDI_ControlBlockType* pWDICtx,
14872 WDI_EventInfoType* pEventData
14873)
14874{
14875 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14876 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014877 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014878 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014879 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 wpt_uint16 usDataOffset = 0;
14881 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014882 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014883 wpt_macAddr macBSSID;
14884 tAggrAddTsReq halAggrAddTsReq;
14885 int i;
14886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14887
14888 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014889 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014890 -------------------------------------------------------------------------*/
14891 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14892 ( NULL == pEventData->pCBfnc ))
14893 {
14894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014895 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 }
14899 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14900 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14901 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14902 /*-------------------------------------------------------------------------
14903 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014905 -------------------------------------------------------------------------*/
14906 wpalMutexAcquire(&pWDICtx->wptMutex);
14907
14908 /*------------------------------------------------------------------------
14909 Find the BSS for which the request is made and identify WDI session
14910 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014911 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14912 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 &macBSSID))
14914 {
14915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014916 "This station does not exist in the WDI Station Table %d",
14917 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070014918 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 }
14921
Jeff Johnsone7245742012-09-05 17:12:55 -070014922 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14923 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014924 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14926 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14927 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014928
14929 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014930 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014932
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 /*------------------------------------------------------------------------
14934 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014935 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014936 ------------------------------------------------------------------------*/
14937 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14938 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14940 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14941 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014942
Jeff Johnsone7245742012-09-05 17:12:55 -070014943 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014944 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014945 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014946 }
14947
14948 wpalMutexRelease(&pWDICtx->wptMutex);
14949 /*-----------------------------------------------------------------------
14950 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014951 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014953 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014954 sizeof(tAggrAddTsParams),
14955 &pSendBuffer, &usDataOffset, &usSendSize))||
14956 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14957 {
14958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014959 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014960 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 }
14964
Jeff Johnsone7245742012-09-05 17:12:55 -070014965 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014966 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014967 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14969
14970 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14971 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014972 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014973 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014974 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014975 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014976 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014977 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14978 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014979 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014980 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14981 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014982 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14984 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014985 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014986 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14987 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014988 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014989 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14990 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014991 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014992 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14993 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014994 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014995 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14996 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014997 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14999 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015000 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015001 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015002 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015003 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015004
15005
15006 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015007 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015008 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015009 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015010 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015011 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015012 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015013 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015014 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015015 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015016 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015017 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015018 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015020 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015021 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015022 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015023 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015024 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015025 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015026 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015027 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015028 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015029 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015030 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015031 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015032 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015033 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015034 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015035 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15036 }
15037
Jeff Johnsone7245742012-09-05 17:12:55 -070015038 wpalMemoryCopy( pSendBuffer+usDataOffset,
15039 &halAggrAddTsReq,
15040 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015041
15042 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015043 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015044
15045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015046 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015047 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015048 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015049 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015050 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015051}/*WDI_ProcessAggrAddTSpecReq*/
15052#endif /* WLAN_FEATURE_VOWIFI_11R */
15053
15054/**
15055 @brief Process Shutdown Request function (called when Main FSM
15056 allows it)
15057
15058 @param pWDICtx: pointer to the WLAN DAL context
15059 pEventData: pointer to the event information structure
15060
15061 @see
15062 @return Result of the function call
15063*/
15064WDI_Status
15065WDI_ProcessShutdownReq
15066(
15067 WDI_ControlBlockType* pWDICtx,
15068 WDI_EventInfoType* pEventData
15069 )
15070{
15071 wpt_status wptStatus;
15072
15073
15074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15075
15076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015077 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015078 -------------------------------------------------------------------------*/
15079 if ( NULL == pEventData )
15080 {
15081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015082 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015083 WDI_ASSERT(0);
15084 return WDI_STATUS_E_FAILURE;
15085 }
15086
15087 wpalMutexAcquire(&pWDICtx->wptMutex);
15088
15089
15090 gWDIInitialized = eWLAN_PAL_FALSE;
15091 /*! TO DO: stop the data services */
15092 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15093 {
15094 /*Stop the STA Table !UT- check this logic again
15095 It is safer to do it here than on the response - because a stop is imminent*/
15096 WDI_STATableStop(pWDICtx);
15097
15098 /* Stop Transport Driver, DXE */
15099 WDTS_Stop(pWDICtx);
15100 }
15101
15102 /*Clear all pending request*/
15103 WDI_ClearPendingRequests(pWDICtx);
15104 /* Close Data transport*/
15105 /* FTM mode does not open Data Path */
15106 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15107 {
15108 WDTS_Close(pWDICtx);
15109 }
15110 /*Close the STA Table !UT- check this logic again*/
15111 WDI_STATableClose(pWDICtx);
15112 /*close the PAL */
15113 wptStatus = wpalClose(pWDICtx->pPALContext);
15114 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15115 {
15116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15117 "Failed to wpal Close %d", wptStatus);
15118 WDI_ASSERT(0);
15119 }
15120
15121 /*Transition back to init state*/
15122 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15123
15124 wpalMutexRelease(&pWDICtx->wptMutex);
15125
15126 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015127 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015128
15129
Jeff Johnsone7245742012-09-05 17:12:55 -070015130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015131}/*WDI_ProcessShutdownReq*/
15132
15133/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015134 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015135========================================================================*/
15136
15137/**
15138 @brief Process Start Response function (called when a response
15139 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015140
15141 @param pWDICtx: pointer to the WLAN DAL context
15142 pEventData: pointer to the event information structure
15143
Jeff Johnson295189b2012-06-20 16:38:30 -070015144 @see
15145 @return Result of the function call
15146*/
15147WDI_Status
15148WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015149(
Jeff Johnson295189b2012-06-20 16:38:30 -070015150 WDI_ControlBlockType* pWDICtx,
15151 WDI_EventInfoType* pEventData
15152)
15153{
15154 WDI_StartRspParamsType wdiRspParams;
15155 WDI_StartRspCb wdiStartRspCb = NULL;
15156
15157 tHalMacStartRspParams* startRspParams;
15158
15159#ifndef HAL_SELF_STA_PER_BSS
15160 WDI_AddStaParams wdiAddSTAParam = {0};
15161#endif
15162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15163
Jeff Johnsone7245742012-09-05 17:12:55 -070015164 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015167 -------------------------------------------------------------------------*/
15168 if (( NULL == pEventData ) ||
15169 ( NULL == pEventData->pEventData) ||
15170 ( NULL == wdiStartRspCb ))
15171 {
15172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015173 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015176 }
15177
15178 /*-------------------------------------------------------------------------
15179 Extract response and send it to UMAC
15180 -------------------------------------------------------------------------*/
15181 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15182 {
15183 // not enough data was received
15184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015185 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015186 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015189 }
15190
15191 /*-------------------------------------------------------------------------
15192 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015193 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015194 -------------------------------------------------------------------------*/
15195 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15196
15197 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15198 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15199 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15200 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15201 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15202 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15203 wdiRspParams.wlanReportedVersion.major =
15204 startRspParams->wcnssWlanVersion.major;
15205 wdiRspParams.wlanReportedVersion.minor =
15206 startRspParams->wcnssWlanVersion.minor;
15207 wdiRspParams.wlanReportedVersion.version =
15208 startRspParams->wcnssWlanVersion.version;
15209 wdiRspParams.wlanReportedVersion.revision =
15210 startRspParams->wcnssWlanVersion.revision;
15211 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15212 startRspParams->wcnssCrmVersionString,
15213 sizeof(wdiRspParams.wcnssSoftwareVersion));
15214 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15215 startRspParams->wcnssWlanVersionString,
15216 sizeof(wdiRspParams.wcnssHardwareVersion));
15217 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15218
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015219 /*Save the HAL Version*/
15220 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15221
Jeff Johnson295189b2012-06-20 16:38:30 -070015222 wpalMutexAcquire(&pWDICtx->wptMutex);
15223 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15224 {
15225 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15226
15227 /*Cache the start response for further use*/
15228 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015229 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 sizeof(pWDICtx->wdiCachedStartRspParams));
15231
15232 }
15233 else
15234 {
15235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15236 "Failed to start device with status %s(%d)",
15237 WDI_getHALStatusMsgString(startRspParams->status),
15238 startRspParams->status);
15239
15240 /*Set the expected state transition to stopped - because the start has
15241 failed*/
15242 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15243
15244 wpalMutexRelease(&pWDICtx->wptMutex);
15245
15246 /*Notify UMAC*/
15247 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015248
Jeff Johnson295189b2012-06-20 16:38:30 -070015249 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
15250
15251 /*Although the response is an error - it was processed by our function
15252 so as far as the caller is concerned this is a succesful reponse processing*/
15253 return WDI_STATUS_SUCCESS;
15254 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015255
Jeff Johnson295189b2012-06-20 16:38:30 -070015256 wpalMutexRelease(&pWDICtx->wptMutex);
15257
15258 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15259 {
15260 /* FTM mode does not need to execute below */
15261 /* Notify UMAC */
15262 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15263 return WDI_STATUS_SUCCESS;
15264 }
15265
15266 /* START the Data transport */
15267 WDTS_startTransport(pWDICtx);
15268
15269 /*Start the STA Table !- check this logic again*/
15270 WDI_STATableStart(pWDICtx);
15271
15272#ifndef HAL_SELF_STA_PER_BSS
15273 /* Store the Self STA Index */
15274 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15275
15276 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15277 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15278 WDI_MAC_ADDR_LEN);
15279
15280 /* At this point add the self-STA */
15281
15282 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15283 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15284 /*! TO DO: wdiAddSTAParam.dpuSig */
15285 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15286 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15287 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15288
15289 //all DPU indices are the same for self STA
15290 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15291 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015292 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015293 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15294 WDI_MAC_ADDR_LEN);
15295 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15296 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15297
15298 /* Note: Since we don't get an explicit config STA request for self STA, we
15299 add the self STA upon receiving the Start response message. But the
15300 self STA entry in the table is deleted when WDI gets an explicit delete STA
15301 request */
15302 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15303#endif
15304
15305 /*Notify UMAC*/
15306 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15307
Jeff Johnsone7245742012-09-05 17:12:55 -070015308 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015309}/*WDI_ProcessStartRsp*/
15310
15311
15312/**
15313 @brief Process Stop Response function (called when a response
15314 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015315
15316 @param pWDICtx: pointer to the WLAN DAL context
15317 pEventData: pointer to the event information structure
15318
Jeff Johnson295189b2012-06-20 16:38:30 -070015319 @see
15320 @return Result of the function call
15321*/
15322WDI_Status
15323WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015324(
Jeff Johnson295189b2012-06-20 16:38:30 -070015325 WDI_ControlBlockType* pWDICtx,
15326 WDI_EventInfoType* pEventData
15327)
15328{
15329 WDI_Status wdiStatus;
15330 WDI_StopRspCb wdiStopRspCb = NULL;
15331
Jeff Johnsone7245742012-09-05 17:12:55 -070015332 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15334
Jeff Johnsone7245742012-09-05 17:12:55 -070015335 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015337 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015338 -------------------------------------------------------------------------*/
15339 if (( NULL == pEventData ) ||
15340 ( NULL == pEventData->pEventData) ||
15341 ( NULL == wdiStopRspCb ))
15342 {
15343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015344 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015345 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015346 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 }
15348
15349 /*-------------------------------------------------------------------------
15350 Extract response and send it to UMAC
15351 -------------------------------------------------------------------------*/
15352 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15353 {
15354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015355 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 pEventData->uEventDataSize);
15357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015359 }
15360
15361 /*-------------------------------------------------------------------------
15362 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015363 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015365 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15366 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015367 sizeof(halMacStopRspMsg.stopRspParams));
15368
Jeff Johnsone7245742012-09-05 17:12:55 -070015369 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015370
15371 wpalMutexAcquire(&pWDICtx->wptMutex);
15372
15373 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015374 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015375 --------------------------------------------------------------------------*/
15376 if ( WDI_STATUS_SUCCESS != wdiStatus )
15377 {
15378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15379 "Failed to stop the device with status %s (%d)",
15380 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15381 halMacStopRspMsg.stopRspParams.status);
15382
Jeff Johnsone7245742012-09-05 17:12:55 -070015383 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15384
Jeff Johnson295189b2012-06-20 16:38:30 -070015385 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015388
Jeff Johnson295189b2012-06-20 16:38:30 -070015389 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15390
15391 /*Transition now as WDI may get preempted imediately after it sends
15392 up the Stop Response and it will not get to process the state transition
15393 from Main Rsp function*/
15394 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15395 wpalMutexRelease(&pWDICtx->wptMutex);
15396
15397 /*! TO DO: - STOP the Data transport */
15398
15399 /*Notify UMAC*/
15400 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15401
Jeff Johnsone7245742012-09-05 17:12:55 -070015402 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015403}/*WDI_ProcessStopRsp*/
15404
15405/**
15406 @brief Process Close Rsp function (called when a response
15407 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015408
15409 @param pWDICtx: pointer to the WLAN DAL context
15410 pEventData: pointer to the event information structure
15411
Jeff Johnson295189b2012-06-20 16:38:30 -070015412 @see
15413 @return Result of the function call
15414*/
15415WDI_Status
15416WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015417(
Jeff Johnson295189b2012-06-20 16:38:30 -070015418 WDI_ControlBlockType* pWDICtx,
15419 WDI_EventInfoType* pEventData
15420)
15421{
15422 /*There is no close response comming from HAL - function just kept for
15423 simmetry */
15424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015425 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015426}/*WDI_ProcessCloseRsp*/
15427
15428
15429/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015430 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015431============================================================================*/
15432
15433/**
15434 @brief Process Init Scan Rsp function (called when a response
15435 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015436
15437 @param pWDICtx: pointer to the WLAN DAL context
15438 pEventData: pointer to the event information structure
15439
Jeff Johnson295189b2012-06-20 16:38:30 -070015440 @see
15441 @return Result of the function call
15442*/
15443WDI_Status
15444WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015445(
Jeff Johnson295189b2012-06-20 16:38:30 -070015446 WDI_ControlBlockType* pWDICtx,
15447 WDI_EventInfoType* pEventData
15448)
15449{
15450 WDI_Status wdiStatus;
15451 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015452 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080015453 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15455
15456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015457 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015458 -------------------------------------------------------------------------*/
15459 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15460 ( NULL == pEventData->pEventData))
15461 {
15462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015463 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015464 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015465 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015466 }
15467
15468 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15469 if( NULL == wdiInitScanRspCb)
15470 {
15471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015472 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015475 }
15476
15477 /*-------------------------------------------------------------------------
15478 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015479 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015480 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015481 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15482 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015483 sizeof(halInitScanRspMsg.initScanRspParams));
15484
Jeff Johnsone7245742012-09-05 17:12:55 -070015485 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015486
15487 if ( pWDICtx->bInBmps )
15488 {
15489 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080015490 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15491 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015493 "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 -080015494 WDI_ASSERT(0);
15495 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015496 }
15497
15498 /*Notify UMAC*/
15499 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15500
Jeff Johnsone7245742012-09-05 17:12:55 -070015501 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015502}/*WDI_ProcessInitScanRsp*/
15503
15504
15505/**
15506 @brief Process Start Scan Rsp function (called when a response
15507 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015508
15509 @param pWDICtx: pointer to the WLAN DAL context
15510 pEventData: pointer to the event information structure
15511
Jeff Johnson295189b2012-06-20 16:38:30 -070015512 @see
15513 @return Result of the function call
15514*/
15515WDI_Status
15516WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015517(
Jeff Johnson295189b2012-06-20 16:38:30 -070015518 WDI_ControlBlockType* pWDICtx,
15519 WDI_EventInfoType* pEventData
15520)
15521{
15522 WDI_StartScanRspParamsType wdiStartScanParams;
15523 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015524
15525 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15527
15528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015529 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015530 -------------------------------------------------------------------------*/
15531 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15532 ( NULL == pEventData->pEventData))
15533 {
15534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015535 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015537 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015538 }
15539
15540 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15541 if( NULL == wdiStartScanRspCb)
15542 {
15543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015544 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015547 }
15548
15549 /*-------------------------------------------------------------------------
15550 Extract response and send it to UMAC
15551 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015552 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15553 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015554 sizeof(halStartScanRspMsg.startScanRspParams));
15555
15556 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15557 halStartScanRspMsg.startScanRspParams.status);
15558#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015559 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015560 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015561 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015562 halStartScanRspMsg.startScanRspParams.startTSF,
15563 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015564#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015565
15566 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15567 {
15568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15569 "Start scan failed with status %s (%d)",
15570 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15571 halStartScanRspMsg.startScanRspParams.status);
15572 /* send the status to UMAC, don't return from here*/
15573 }
15574
15575 /*Notify UMAC*/
15576 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15577
Jeff Johnsone7245742012-09-05 17:12:55 -070015578 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015579
15580}/*WDI_ProcessStartScanRsp*/
15581
15582
15583/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015584 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015585 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015586
15587 @param pWDICtx: pointer to the WLAN DAL context
15588 pEventData: pointer to the event information structure
15589
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 @see
15591 @return Result of the function call
15592*/
15593WDI_Status
15594WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015595(
Jeff Johnson295189b2012-06-20 16:38:30 -070015596 WDI_ControlBlockType* pWDICtx,
15597 WDI_EventInfoType* pEventData
15598)
15599{
15600 WDI_Status wdiStatus;
15601 tHalEndScanRspMsg halEndScanRspMsg;
15602 WDI_EndScanRspCb wdiEndScanRspCb;
15603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15604
15605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015606 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015607 -------------------------------------------------------------------------*/
15608 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15609 ( NULL == pEventData->pEventData))
15610 {
15611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015612 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015615 }
15616
15617 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15618
15619 /*-------------------------------------------------------------------------
15620 Extract response and send it to UMAC
15621 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015622 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15623 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015624 sizeof(halEndScanRspMsg.endScanRspParams));
15625
Jeff Johnsone7245742012-09-05 17:12:55 -070015626 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015627
15628 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15629 {
15630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15631 "End Scan failed with status %s (%d )",
15632 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15633 halEndScanRspMsg.endScanRspParams.status);
15634 /* send the status to UMAC, don't return from here*/
15635 }
15636
15637 /*Notify UMAC*/
15638 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15639
Jeff Johnsone7245742012-09-05 17:12:55 -070015640 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015641}/*WDI_ProcessEndScanRsp*/
15642
15643
15644/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015645 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015647
15648 @param pWDICtx: pointer to the WLAN DAL context
15649 pEventData: pointer to the event information structure
15650
Jeff Johnson295189b2012-06-20 16:38:30 -070015651 @see
15652 @return Result of the function call
15653*/
15654WDI_Status
15655WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015656(
Jeff Johnson295189b2012-06-20 16:38:30 -070015657 WDI_ControlBlockType* pWDICtx,
15658 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015659)
Jeff Johnson295189b2012-06-20 16:38:30 -070015660{
15661 WDI_Status wdiStatus;
15662 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015663
15664 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15666
15667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015668 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 -------------------------------------------------------------------------*/
15670 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15671 ( NULL == pEventData->pEventData))
15672 {
15673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015674 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015677 }
15678
15679 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15680
15681 /*-------------------------------------------------------------------------
15682 Extract response and send it to UMAC
15683 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015684 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15685 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015686 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15687
Jeff Johnsone7245742012-09-05 17:12:55 -070015688 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015689
15690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015691 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 halFinishScanRspMsg.finishScanRspParams.status);
15693
15694 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15695 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15696 {
15697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15698 "Finish Scan failed with status %s (%d)",
15699 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15700 halFinishScanRspMsg.finishScanRspParams.status);
15701 /* send the status to UMAC, don't return from here*/
15702 }
15703
15704 /*Notify UMAC*/
15705 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15706
Jeff Johnsone7245742012-09-05 17:12:55 -070015707 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015708}/*WDI_ProcessFinishScanRsp*/
15709
15710/**
15711 @brief Process Join Response function (called when a response
15712 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015713
15714 @param pWDICtx: pointer to the WLAN DAL context
15715 pEventData: pointer to the event information structure
15716
Jeff Johnson295189b2012-06-20 16:38:30 -070015717 @see
15718 @return Result of the function call
15719*/
15720WDI_Status
15721WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015722(
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 WDI_ControlBlockType* pWDICtx,
15724 WDI_EventInfoType* pEventData
15725)
15726{
15727 WDI_Status wdiStatus;
15728 WDI_JoinRspCb wdiJoinRspCb;
15729 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015730
15731 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15733
15734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015736 -------------------------------------------------------------------------*/
15737 if (( NULL == pWDICtx ) ||
15738 ( NULL == pWDICtx->pfncRspCB ) ||
15739 ( NULL == pEventData ) ||
15740 ( NULL == pEventData->pEventData))
15741 {
15742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015746 }
15747
15748 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15749
15750 /*-------------------------------------------------------------------------
15751 Extract response and send it to UMAC
15752 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015753 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15754 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015755 sizeof(halJoinRspMsg.joinRspParams));
15756
Jeff Johnsone7245742012-09-05 17:12:55 -070015757 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015758
15759 wpalMutexAcquire(&pWDICtx->wptMutex);
15760
15761 /*-----------------------------------------------------------------------
15762 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015763 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015764 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015765 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015766 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15767 {
15768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015769 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15770 "association no longer in progress %d - mysterious HAL response",
15771 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015772
Jeff Johnsone7245742012-09-05 17:12:55 -070015773 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015774 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015775 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 }
15777
15778 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15779
15780 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015781 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015782 -----------------------------------------------------------------------*/
15783 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15784 {
15785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15786 "Join only allowed in Joining state - failure state is %d "
15787 "strange HAL response", pBSSSes->wdiAssocState);
15788
Jeff Johnsone7245742012-09-05 17:12:55 -070015789 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15790
Jeff Johnson295189b2012-06-20 16:38:30 -070015791 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015793 }
15794
15795
15796 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015797 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015798 -----------------------------------------------------------------------*/
15799 if ( WDI_STATUS_SUCCESS != wdiStatus )
15800 {
15801 /*Association was failed by HAL - remove session*/
15802 WDI_DeleteSession(pWDICtx, pBSSSes);
15803
15804 /*Association no longer in progress */
15805 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15806
15807 /*Association no longer in progress - prepare pending assoc for processing*/
15808 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015809
Jeff Johnson295189b2012-06-20 16:38:30 -070015810 }
15811 else
15812 {
15813 /*Transition to state Joining - this may be redundant as we are supposed
15814 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015815 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015816 }
15817
15818 wpalMutexRelease(&pWDICtx->wptMutex);
15819
15820 /*Notify UMAC*/
15821 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15822
Jeff Johnsone7245742012-09-05 17:12:55 -070015823 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015824}/*WDI_ProcessJoinRsp*/
15825
15826
15827/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015828 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015829 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015830
15831 @param pWDICtx: pointer to the WLAN DAL context
15832 pEventData: pointer to the event information structure
15833
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 @see
15835 @return Result of the function call
15836*/
15837WDI_Status
15838WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015839(
Jeff Johnson295189b2012-06-20 16:38:30 -070015840 WDI_ControlBlockType* pWDICtx,
15841 WDI_EventInfoType* pEventData
15842)
15843{
15844 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15845 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015846 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 WDI_BSSSessionType* pBSSSes = NULL;
15848
Jeff Johnsone7245742012-09-05 17:12:55 -070015849 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015850 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15851 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015852
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15854
15855 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 -------------------------------------------------------------------------*/
15858 if (( NULL == pEventData ) ||
15859 ( NULL == pEventData->pEventData))
15860 {
15861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015862 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015864 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015865 }
15866
15867 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15868
15869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015870 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015872 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15873 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 sizeof(halConfigBssRspMsg.configBssRspParams));
15875
15876 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15877 halConfigBssRspMsg.configBssRspParams.status);
15878 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15879 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015880 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015881 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15882 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015883
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015885
15886 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015887 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015888
15889 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015891
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015893
Jeff Johnson295189b2012-06-20 16:38:30 -070015894 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015895 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015896 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15897 #endif
15898 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15899 halConfigBssRspMsg.configBssRspParams.staMac,
15900 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015901
Jeff Johnson295189b2012-06-20 16:38:30 -070015902 wpalMutexAcquire(&pWDICtx->wptMutex);
15903 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015904 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015905 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015906 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15907 wdiConfigBSSParams.macBSSID,
15908 &pBSSSes);
15909
Jeff Johnson295189b2012-06-20 16:38:30 -070015910 /*-----------------------------------------------------------------------
15911 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015912 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015913 -----------------------------------------------------------------------*/
15914 if ( NULL == pBSSSes )
15915 {
15916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15917 "Association sequence for this BSS does not yet exist "
15918 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015919
15920 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15921
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015923 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015924 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015925
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 /*Save data for this BSS*/
15927 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15928 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015929 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015930 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015931 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015933 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015934 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015935 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015936 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015937 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15939 pBSSSes->bcastStaIdx =
15940 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015941
Jeff Johnson295189b2012-06-20 16:38:30 -070015942 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015943
Jeff Johnson295189b2012-06-20 16:38:30 -070015944 /*-------------------------------------------------------------------------
15945 Add Peer STA
15946 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015947 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015948 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15949 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015950
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015952 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015953 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015954 wdiAddSTAParam.ucHTCapable =
15955 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15956 wdiAddSTAParam.ucStaType =
15957 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15958
Jeff Johnson295189b2012-06-20 16:38:30 -070015959 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015960 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15961 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015962 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015963
15964 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15965 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15966 WDI_MAC_ADDR_LEN);
15967
Jeff Johnson295189b2012-06-20 16:38:30 -070015968 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015969 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015970 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015971 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015972 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015973 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015974 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015975 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015976 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015977 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015979 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015980 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015981
Jeff Johnson295189b2012-06-20 16:38:30 -070015982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15983 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015984
Jeff Johnson295189b2012-06-20 16:38:30 -070015985 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15986 /*-------------------------------------------------------------------------
15987 Add Broadcast STA only in AP mode
15988 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015989 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070015990 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015991 {
15992 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15993 "Add BCAST STA to table for index: %d",
15994 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015995
15996 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015997 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015998
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16000 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16001 }
16002 wpalMutexRelease(&pWDICtx->wptMutex);
16003 }
16004 else
16005 {
16006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16007 "Config BSS RSP failed with status : %s(%d)",
16008 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016010 halConfigBssRspMsg.configBssRspParams.status);
16011
Jeff Johnsone7245742012-09-05 17:12:55 -070016012
Jeff Johnson295189b2012-06-20 16:38:30 -070016013 /*Association was failed by HAL - remove session*/
16014 WDI_DeleteSession(pWDICtx, pBSSSes);
16015
16016 /*Association no longer in progress */
16017 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16018
16019 /*Association no longer in progress - prepare pending assoc for processing*/
16020 WDI_DequeueAssocRequest(pWDICtx);
16021
16022 }
16023
16024 /*Notify UMAC*/
16025 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16026
Jeff Johnsone7245742012-09-05 17:12:55 -070016027 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016028}/*WDI_ProcessConfigBSSRsp*/
16029
16030
16031/**
16032 @brief Process Del BSS Response function (called when a response
16033 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016034
16035 @param pWDICtx: pointer to the WLAN DAL context
16036 pEventData: pointer to the event information structure
16037
Jeff Johnson295189b2012-06-20 16:38:30 -070016038 @see
16039 @return Result of the function call
16040*/
16041WDI_Status
16042WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016043(
Jeff Johnson295189b2012-06-20 16:38:30 -070016044 WDI_ControlBlockType* pWDICtx,
16045 WDI_EventInfoType* pEventData
16046)
16047{
16048 WDI_DelBSSRspParamsType wdiDelBSSParams;
16049 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016050 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016051 WDI_BSSSessionType* pBSSSes = NULL;
16052
Jeff Johnsone7245742012-09-05 17:12:55 -070016053 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16055
16056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016058 -------------------------------------------------------------------------*/
16059 if (( NULL == pEventData ) ||
16060 ( NULL == pEventData->pEventData))
16061 {
16062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016066 }
16067
16068 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16069
16070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016071 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016072 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016073 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16074 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016075 sizeof(halDelBssRspMsg.deleteBssRspParams));
16076
16077
16078 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016079 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016080
16081 wpalMutexAcquire(&pWDICtx->wptMutex);
16082
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_FindAssocSessionByBSSIdx( pWDICtx,
16087 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16088 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016089
16090 /*-----------------------------------------------------------------------
16091 Del 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 or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016098 "association no longer in progress - mysterious HAL response");
16099
16100 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16101
16102 wpalMutexRelease(&pWDICtx->wptMutex);
16103 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016104 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016105
16106 /*Extract BSSID for the response to UMAC*/
16107 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16108 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16109
16110 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16111
16112 /*-----------------------------------------------------------------------
16113 The current session will be deleted
16114 -----------------------------------------------------------------------*/
16115 WDI_DeleteSession(pWDICtx, pBSSSes);
16116
16117
16118 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016119 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16120 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016121 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016122 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016123 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016124
16125 /* Delete the STA's in this BSS */
16126 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16127
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 wpalMutexRelease(&pWDICtx->wptMutex);
16129
16130 /*Notify UMAC*/
16131 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16132
Jeff Johnsone7245742012-09-05 17:12:55 -070016133 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016134}/*WDI_ProcessDelBSSRsp*/
16135
16136/**
16137 @brief Process Post Assoc Rsp function (called when a response
16138 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016139
16140 @param pWDICtx: pointer to the WLAN DAL context
16141 pEventData: pointer to the event information structure
16142
Jeff Johnson295189b2012-06-20 16:38:30 -070016143 @see
16144 @return Result of the function call
16145*/
16146WDI_Status
16147WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016148(
Jeff Johnson295189b2012-06-20 16:38:30 -070016149 WDI_ControlBlockType* pWDICtx,
16150 WDI_EventInfoType* pEventData
16151)
16152{
16153 WDI_PostAssocRspParamsType wdiPostAssocParams;
16154 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016155 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016156 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016157 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16159
16160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016161 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016162 -------------------------------------------------------------------------*/
16163 if (( NULL == pEventData ) ||
16164 ( NULL == pEventData->pEventData))
16165 {
16166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016167 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 }
16171
16172 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16173
16174 /*-------------------------------------------------------------------------
16175 Extract response and send it to UMAC
16176 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016177 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16178 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016179 sizeof(halPostAssocRspMsg.postAssocRspParams));
16180
16181 /*Extract the Post Assoc STA Params */
16182
Jeff Johnsone7245742012-09-05 17:12:55 -070016183 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016184 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016185 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016186 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016187 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016188 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16189
Jeff Johnsone7245742012-09-05 17:12:55 -070016190 wdiPostAssocParams.wdiStatus =
16191 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016192
16193 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16194 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016195 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16196 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016197 WDI_MAC_ADDR_LEN);
16198
16199 /* Extract Post Assoc BSS Params */
16200
Jeff Johnsone7245742012-09-05 17:12:55 -070016201 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16202 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16203 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016204
16205 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16206 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016207 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016208 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16209 .macSTA, WDI_MAC_ADDR_LEN);
16210
Jeff Johnsone7245742012-09-05 17:12:55 -070016211 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016212 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16213
Jeff Johnsone7245742012-09-05 17:12:55 -070016214 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016215 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16216
16217 wdiPostAssocParams.bssParams.ucBSSIdx =
16218 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16219
Jeff Johnsone7245742012-09-05 17:12:55 -070016220 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016221 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16222
16223 wpalMutexAcquire(&pWDICtx->wptMutex);
16224
16225 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016226 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016227 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016228 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016229 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016230 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016231
16232 /*-----------------------------------------------------------------------
16233 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016234 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016235 -----------------------------------------------------------------------*/
16236 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016237 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016238 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16239 {
16240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16241 "Association sequence for this BSS does not yet exist or "
16242 "association no longer in progress - mysterious HAL response");
16243
Jeff Johnsone7245742012-09-05 17:12:55 -070016244 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16245
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016247 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016248 }
16249
16250 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016251 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016252 -----------------------------------------------------------------------*/
16253 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16254 {
16255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16256 "Post Assoc not allowed before JOIN - failing request "
16257 "strange HAL response");
16258
Jeff Johnsone7245742012-09-05 17:12:55 -070016259 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16260
Jeff Johnson295189b2012-06-20 16:38:30 -070016261 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 }
16264
16265 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016266 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016267 -----------------------------------------------------------------------*/
16268 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16269 {
16270 /*Association was failed by HAL - remove session*/
16271 WDI_DeleteSession(pWDICtx, pBSSSes);
16272 }
16273 else
16274 {
16275 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016276 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016277
16278 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016279 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016280 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016281 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016282 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016283 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016284 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016285 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016286 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16287
Jeff Johnsone7245742012-09-05 17:12:55 -070016288 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16290 }
16291
16292 /*Association no longer in progress */
16293 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16294
16295 /*Association no longer in progress - prepare pending assoc for processing*/
16296 WDI_DequeueAssocRequest(pWDICtx);
16297
16298 wpalMutexRelease(&pWDICtx->wptMutex);
16299
16300 /*Notify UMAC*/
16301 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16302
Jeff Johnsone7245742012-09-05 17:12:55 -070016303 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016304}/*WDI_ProcessPostAssocRsp*/
16305
16306/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016307 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016308 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016309
16310 @param pWDICtx: pointer to the WLAN DAL context
16311 pEventData: pointer to the event information structure
16312
Jeff Johnson295189b2012-06-20 16:38:30 -070016313 @see
16314 @return Result of the function call
16315*/
16316WDI_Status
16317WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016318(
Jeff Johnson295189b2012-06-20 16:38:30 -070016319 WDI_ControlBlockType* pWDICtx,
16320 WDI_EventInfoType* pEventData
16321)
16322{
16323 WDI_DelSTARspParamsType wdiDelSTARsp;
16324 WDI_DelSTARspCb wdiDelSTARspCb;
16325 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016326 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16328
16329 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016330 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016331 -------------------------------------------------------------------------*/
16332 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16333 ( NULL == pEventData->pEventData))
16334 {
16335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016336 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016337 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016338 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016339 }
16340
16341 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16342
16343 /*-------------------------------------------------------------------------
16344 Extract response and send it to UMAC
16345 -------------------------------------------------------------------------*/
16346 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016347 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016348 sizeof(halDelStaRspMsg.delStaRspParams));
16349
16350 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016351 wdiDelSTARsp.wdiStatus =
16352 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016353
16354 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16355
16356 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16357 if(staType == WDI_STA_ENTRY_SELF)
16358 {
16359 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16360
16361 /* At this point add the self-STA */
16362
16363 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16364 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16365 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16366
16367#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16368#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16369
16370 //all DPU indices are the same for self STA
16371 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16372 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16373 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16374 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16375 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16376 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016377
16378 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016379 }
16380 else
16381 {
16382 //Delete the station in the table
16383 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16384 }
16385
16386 /*Notify UMAC*/
16387 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16388
Jeff Johnsone7245742012-09-05 17:12:55 -070016389 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016390}/*WDI_ProcessDelSTARsp*/
16391
16392
16393/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016394 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016395==========================================================================*/
16396
16397/**
16398 @brief Process Set BSS Key Rsp function (called when a response
16399 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016400
16401 @param pWDICtx: pointer to the WLAN DAL context
16402 pEventData: pointer to the event information structure
16403
Jeff Johnson295189b2012-06-20 16:38:30 -070016404 @see
16405 @return Result of the function call
16406*/
16407WDI_Status
16408WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016409(
Jeff Johnson295189b2012-06-20 16:38:30 -070016410 WDI_ControlBlockType* pWDICtx,
16411 WDI_EventInfoType* pEventData
16412)
16413{
16414 WDI_Status wdiStatus;
16415 eHalStatus halStatus;
16416 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16418
16419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 -------------------------------------------------------------------------*/
16422 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16423 ( NULL == pEventData->pEventData))
16424 {
16425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016429 }
16430
16431 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16432
16433 /*-------------------------------------------------------------------------
16434 Extract response and send it to UMAC
16435 -------------------------------------------------------------------------*/
16436 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016437 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016438
16439 if ( eHAL_STATUS_SUCCESS != halStatus )
16440 {
16441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16442 "Set BSS Key failed with status %s (%d)",
16443 WDI_getHALStatusMsgString(halStatus),
16444 halStatus);
16445 /* send the status to UMAC, don't return from here*/
16446 }
16447
16448 /*Notify UMAC*/
16449 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16450
Jeff Johnsone7245742012-09-05 17:12:55 -070016451 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016452}/*WDI_ProcessSetBssKeyRsp*/
16453
16454/**
16455 @brief Process Remove BSS Key Rsp function (called when a response
16456 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016457
16458 @param pWDICtx: pointer to the WLAN DAL context
16459 pEventData: pointer to the event information structure
16460
Jeff Johnson295189b2012-06-20 16:38:30 -070016461 @see
16462 @return Result of the function call
16463*/
16464WDI_Status
16465WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016466(
Jeff Johnson295189b2012-06-20 16:38:30 -070016467 WDI_ControlBlockType* pWDICtx,
16468 WDI_EventInfoType* pEventData
16469)
16470{
16471 WDI_Status wdiStatus;
16472 eHalStatus halStatus;
16473 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16475
16476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016477 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016478 -------------------------------------------------------------------------*/
16479 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16480 ( NULL == pEventData->pEventData))
16481 {
16482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016483 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016484 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016485 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016486 }
16487
16488 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16489
16490 /*-------------------------------------------------------------------------
16491 Extract response and send it to UMAC
16492 -------------------------------------------------------------------------*/
16493 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016494 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016495
16496 if ( eHAL_STATUS_SUCCESS != halStatus )
16497 {
16498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16499 "Remove BSS Key failed with status %s (%d )",
16500 WDI_getHALStatusMsgString(halStatus),
16501 halStatus);
16502 /* send the status to UMAC, don't return from here*/
16503 }
16504
16505 /*Notify UMAC*/
16506 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16507
Jeff Johnsone7245742012-09-05 17:12:55 -070016508 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016509}/*WDI_ProcessSetBssKeyRsp*/
16510
16511
16512/**
16513 @brief Process Set STA Key Rsp function (called when a response
16514 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016515
16516 @param pWDICtx: pointer to the WLAN DAL context
16517 pEventData: pointer to the event information structure
16518
Jeff Johnson295189b2012-06-20 16:38:30 -070016519 @see
16520 @return Result of the function call
16521*/
16522WDI_Status
16523WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016524(
Jeff Johnson295189b2012-06-20 16:38:30 -070016525 WDI_ControlBlockType* pWDICtx,
16526 WDI_EventInfoType* pEventData
16527)
16528{
16529 WDI_Status wdiStatus;
16530 eHalStatus halStatus;
16531 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16533
16534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016536 -------------------------------------------------------------------------*/
16537 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16538 ( NULL == pEventData->pEventData))
16539 {
16540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016544 }
16545
16546 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16547
16548 /*-------------------------------------------------------------------------
16549 Extract response and send it to UMAC
16550 -------------------------------------------------------------------------*/
16551 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016552 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016553
16554 if ( eHAL_STATUS_SUCCESS != halStatus )
16555 {
16556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16557 "Set STA Key failed with status %s (%d)",
16558 WDI_getHALStatusMsgString(halStatus),
16559 halStatus);
16560 /* send the status to UMAC, don't return from here*/
16561 }
16562
16563 /*Notify UMAC*/
16564 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16565
Jeff Johnsone7245742012-09-05 17:12:55 -070016566 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016567}/*WDI_ProcessSetSTAKeyRsp*/
16568
16569/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016570 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016572
16573 @param pWDICtx: pointer to the WLAN DAL context
16574 pEventData: pointer to the event information structure
16575
Jeff Johnson295189b2012-06-20 16:38:30 -070016576 @see
16577 @return Result of the function call
16578*/
16579WDI_Status
16580WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016581(
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 WDI_ControlBlockType* pWDICtx,
16583 WDI_EventInfoType* pEventData
16584)
16585{
16586 WDI_Status wdiStatus;
16587 eHalStatus halStatus;
16588 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16590
16591 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016592 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016593 -------------------------------------------------------------------------*/
16594 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16595 ( NULL == pEventData->pEventData))
16596 {
16597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016598 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016601 }
16602
16603 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16604
16605 /*-------------------------------------------------------------------------
16606 Extract response and send it to UMAC
16607 -------------------------------------------------------------------------*/
16608 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016609 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016610
16611 if ( eHAL_STATUS_SUCCESS != halStatus )
16612 {
16613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16614 "Remove STA Key failed with status %s (%d)",
16615 WDI_getHALStatusMsgString(halStatus),
16616 halStatus);
16617 /* send the status to UMAC, don't return from here*/
16618 }
16619
16620 /*Notify UMAC*/
16621 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16622
Jeff Johnsone7245742012-09-05 17:12:55 -070016623 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016624}/*WDI_ProcessRemoveStaKeyRsp*/
16625
16626/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016627 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016629
16630 @param pWDICtx: pointer to the WLAN DAL context
16631 pEventData: pointer to the event information structure
16632
Jeff Johnson295189b2012-06-20 16:38:30 -070016633 @see
16634 @return Result of the function call
16635*/
16636WDI_Status
16637WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016638(
Jeff Johnson295189b2012-06-20 16:38:30 -070016639 WDI_ControlBlockType* pWDICtx,
16640 WDI_EventInfoType* pEventData
16641)
16642{
16643 WDI_Status wdiStatus;
16644 eHalStatus halStatus;
16645 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16647
16648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016650 -------------------------------------------------------------------------*/
16651 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16652 ( NULL == pEventData->pEventData))
16653 {
16654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016655 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016658 }
16659
16660 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16661
16662 /*-------------------------------------------------------------------------
16663 Extract response and send it to UMAC
16664 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016665 wpalMemoryCopy( &halStatus,
16666 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016667 sizeof(halStatus));
16668
Jeff Johnsone7245742012-09-05 17:12:55 -070016669 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016670
16671 if ( eHAL_STATUS_SUCCESS != halStatus )
16672 {
16673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16674 "Set STA Key failed with status %s (%d)",
16675 WDI_getHALStatusMsgString(halStatus),
16676 halStatus);
16677 /* send the status to UMAC, don't return from here*/
16678 }
16679
16680 /*Notify UMAC*/
16681 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16682
Jeff Johnsone7245742012-09-05 17:12:55 -070016683 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016684}/*WDI_ProcessSetSTABcastKeyRsp*/
16685
16686/**
16687 @brief Process Remove STA Bcast Key Rsp function (called when a
16688 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016689
16690 @param pWDICtx: pointer to the WLAN DAL context
16691 pEventData: pointer to the event information structure
16692
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 @see
16694 @return Result of the function call
16695*/
16696WDI_Status
16697WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016698(
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 WDI_ControlBlockType* pWDICtx,
16700 WDI_EventInfoType* pEventData
16701)
16702{
16703 WDI_Status wdiStatus;
16704 eHalStatus halStatus;
16705 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16706 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16707
16708 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016709 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016710 -------------------------------------------------------------------------*/
16711 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16712 ( NULL == pEventData->pEventData))
16713 {
16714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016715 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016718 }
16719
16720 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16721
16722 /*-------------------------------------------------------------------------
16723 Extract response and send it to UMAC
16724 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016725 wpalMemoryCopy( &halStatus,
16726 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016727 sizeof(halStatus));
16728
Jeff Johnsone7245742012-09-05 17:12:55 -070016729 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016730
16731 if ( eHAL_STATUS_SUCCESS != halStatus )
16732 {
16733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16734 "Remove STA Key failed with status %s (%d)",
16735 WDI_getHALStatusMsgString(halStatus),
16736 halStatus);
16737 /* send the status to UMAC, don't return from here*/
16738 }
16739
16740 /*Notify UMAC*/
16741 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16742
Jeff Johnsone7245742012-09-05 17:12:55 -070016743 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016744}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16745
16746
16747/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016748 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016749==========================================================================*/
16750
16751/**
16752 @brief Process Add TSpec Rsp function (called when a response
16753 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016754
16755 @param pWDICtx: pointer to the WLAN DAL context
16756 pEventData: pointer to the event information structure
16757
Jeff Johnson295189b2012-06-20 16:38:30 -070016758 @see
16759 @return Result of the function call
16760*/
16761WDI_Status
16762WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016763(
Jeff Johnson295189b2012-06-20 16:38:30 -070016764 WDI_ControlBlockType* pWDICtx,
16765 WDI_EventInfoType* pEventData
16766)
16767{
16768 WDI_Status wdiStatus;
16769 eHalStatus halStatus;
16770 WDI_AddTsRspCb wdiAddTsRspCb;
16771 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16772
16773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016774 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016775 -------------------------------------------------------------------------*/
16776 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16777 ( NULL == pEventData->pEventData))
16778 {
16779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016780 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016781 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016782 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016783 }
16784
16785 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16786
16787 /*-------------------------------------------------------------------------
16788 Extract response and send it to UMAC
16789 -------------------------------------------------------------------------*/
16790 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016791 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016792
16793 /*Notify UMAC*/
16794 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16795
Jeff Johnsone7245742012-09-05 17:12:55 -070016796 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016797}/*WDI_ProcessAddTSpecRsp*/
16798
16799
16800/**
16801 @brief Process Del TSpec Rsp function (called when a response
16802 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016803
16804 @param pWDICtx: pointer to the WLAN DAL context
16805 pEventData: pointer to the event information structure
16806
Jeff Johnson295189b2012-06-20 16:38:30 -070016807 @see
16808 @return Result of the function call
16809*/
16810WDI_Status
16811WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016812(
Jeff Johnson295189b2012-06-20 16:38:30 -070016813 WDI_ControlBlockType* pWDICtx,
16814 WDI_EventInfoType* pEventData
16815)
16816{
16817 WDI_Status wdiStatus;
16818 eHalStatus halStatus;
16819 WDI_DelTsRspCb wdiDelTsRspCb;
16820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16821
16822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016824 -------------------------------------------------------------------------*/
16825 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16826 ( NULL == pEventData->pEventData))
16827 {
16828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016832 }
16833
16834 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16835
16836 /*-------------------------------------------------------------------------
16837 Extract response and send it to UMAC
16838 -------------------------------------------------------------------------*/
16839 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016840 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016841
16842 /*Notify UMAC*/
16843 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16844
Jeff Johnsone7245742012-09-05 17:12:55 -070016845 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016846}/*WDI_ProcessDelTSpecRsp*/
16847
16848/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016849 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016851
16852 @param pWDICtx: pointer to the WLAN DAL context
16853 pEventData: pointer to the event information structure
16854
Jeff Johnson295189b2012-06-20 16:38:30 -070016855 @see
16856 @return Result of the function call
16857*/
16858WDI_Status
16859WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016860(
Jeff Johnson295189b2012-06-20 16:38:30 -070016861 WDI_ControlBlockType* pWDICtx,
16862 WDI_EventInfoType* pEventData
16863)
16864{
16865 WDI_Status wdiStatus;
16866 eHalStatus halStatus;
16867 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16869
16870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016872 -------------------------------------------------------------------------*/
16873 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16874 ( NULL == pEventData->pEventData))
16875 {
16876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 }
16881
16882 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16883
16884 /*-------------------------------------------------------------------------
16885 Extract response and send it to UMAC
16886 -------------------------------------------------------------------------*/
16887 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016888 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016889
16890 /*Notify UMAC*/
16891 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16892
Jeff Johnsone7245742012-09-05 17:12:55 -070016893 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016894}/*WDI_ProcessUpdateEDCAParamsRsp*/
16895
16896
16897/**
16898 @brief Process Add BA Rsp function (called when a response
16899 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016900
16901 @param pWDICtx: pointer to the WLAN DAL context
16902 pEventData: pointer to the event information structure
16903
Jeff Johnson295189b2012-06-20 16:38:30 -070016904 @see
16905 @return Result of the function call
16906*/
16907WDI_Status
16908WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016909(
Jeff Johnson295189b2012-06-20 16:38:30 -070016910 WDI_ControlBlockType* pWDICtx,
16911 WDI_EventInfoType* pEventData
16912)
16913{
16914 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16915
16916 tAddBASessionRspParams halBASessionRsp;
16917 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16918
Jeff Johnsone7245742012-09-05 17:12:55 -070016919
Jeff Johnson295189b2012-06-20 16:38:30 -070016920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16921
16922 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016923 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016924 -------------------------------------------------------------------------*/
16925 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16926 ( NULL == pEventData->pEventData))
16927 {
16928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016929 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016930 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016931 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016932 }
16933
16934 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16935
16936 /*-------------------------------------------------------------------------
16937 Extract response and send it to UMAC
16938 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016939 wpalMemoryCopy( &halBASessionRsp,
16940 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016941 sizeof(halBASessionRsp));
16942
16943 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16944
Jeff Johnson43971f52012-07-17 12:26:56 -070016945 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016946 {
16947 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16948 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16949 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16950 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16951 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16952 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16953 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16954 }
16955
16956 /*Notify UMAC*/
16957 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16958
Jeff Johnsone7245742012-09-05 17:12:55 -070016959 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016960}/*WDI_ProcessAddSessionBARsp*/
16961
16962
16963/**
16964 @brief Process Del BA Rsp function (called when a response
16965 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016966
16967 @param pWDICtx: pointer to the WLAN DAL context
16968 pEventData: pointer to the event information structure
16969
Jeff Johnson295189b2012-06-20 16:38:30 -070016970 @see
16971 @return Result of the function call
16972*/
16973WDI_Status
16974WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016975(
Jeff Johnson295189b2012-06-20 16:38:30 -070016976 WDI_ControlBlockType* pWDICtx,
16977 WDI_EventInfoType* pEventData
16978)
16979{
16980 WDI_Status wdiStatus;
16981 eHalStatus halStatus;
16982 WDI_DelBARspCb wdiDelBARspCb;
16983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16984
16985 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016986 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016987 -------------------------------------------------------------------------*/
16988 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16989 ( NULL == pEventData->pEventData))
16990 {
16991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016995 }
16996
16997 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16998
16999 /*-------------------------------------------------------------------------
17000 Extract response and send it to UMAC
17001 -------------------------------------------------------------------------*/
17002 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017003 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017004
17005 if ( eHAL_STATUS_SUCCESS == halStatus )
17006 {
17007 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17008 }
17009
17010 /*Notify UMAC*/
17011 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17012
Jeff Johnsone7245742012-09-05 17:12:55 -070017013 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017014}/*WDI_ProcessDelBARsp*/
17015
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017016#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017017/**
17018 @brief Process TSM Stats Rsp function (called when a response
17019 is being received over the bus from HAL)
17020
17021 @param pWDICtx: pointer to the WLAN DAL context
17022 pEventData: pointer to the event information structure
17023
17024 @see
17025 @return Result of the function call
17026*/
17027WDI_Status
17028WDI_ProcessTsmStatsRsp
17029(
17030 WDI_ControlBlockType* pWDICtx,
17031 WDI_EventInfoType* pEventData
17032)
17033{
17034 WDI_TsmRspCb wdiTsmStatsRspCb;
17035 tTsmStatsRspMsg halTsmStatsRspMsg;
17036 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17038
17039 /*-------------------------------------------------------------------------
17040 Sanity check
17041 -------------------------------------------------------------------------*/
17042 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17043 ( NULL == pEventData->pEventData))
17044 {
17045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017046 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017047 WDI_ASSERT(0);
17048 return WDI_STATUS_E_FAILURE;
17049 }
17050
17051 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17052
17053 /*-------------------------------------------------------------------------
17054 Unpack HAL Response Message - the header was already extracted by the
17055 main Response Handling procedure
17056 -------------------------------------------------------------------------*/
17057 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17058 pEventData->pEventData,
17059 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17060
17061 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17062 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17063 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17064 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17065 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17066 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17067 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17068 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17069 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17070 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17071 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17072 halTsmStatsRspMsg.tsmStatsRspParams.status);
17073
17074 /*Notify UMAC*/
17075 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17076
17077 return WDI_STATUS_SUCCESS;
17078}/*WDI_ProcessTsmStatsRsp*/
17079
17080#endif
17081
17082
17083
17084/**
17085 @brief Process Flush AC Rsp function (called when a response
17086 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017087
17088 @param pWDICtx: pointer to the WLAN DAL context
17089 pEventData: pointer to the event information structure
17090
Jeff Johnson295189b2012-06-20 16:38:30 -070017091 @see
17092 @return Result of the function call
17093*/
17094WDI_Status
17095WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017096(
Jeff Johnson295189b2012-06-20 16:38:30 -070017097 WDI_ControlBlockType* pWDICtx,
17098 WDI_EventInfoType* pEventData
17099)
17100{
17101 WDI_Status wdiStatus;
17102 eHalStatus halStatus;
17103 WDI_FlushAcRspCb wdiFlushAcRspCb;
17104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17105
17106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017108 -------------------------------------------------------------------------*/
17109 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17110 ( NULL == pEventData->pEventData))
17111 {
17112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017113 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017116 }
17117
17118 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17119
17120 /*-------------------------------------------------------------------------
17121 Extract response and send it to UMAC
17122 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017123 wpalMemoryCopy( &halStatus,
17124 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017125 sizeof(halStatus));
17126
Jeff Johnsone7245742012-09-05 17:12:55 -070017127 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017128
17129 /*Notify UMAC*/
17130 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17131
Jeff Johnsone7245742012-09-05 17:12:55 -070017132 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017133}/*WDI_ProcessFlushAcRsp*/
17134
17135/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017136 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017137 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017138
17139 @param pWDICtx: pointer to the WLAN DAL context
17140 pEventData: pointer to the event information structure
17141
Jeff Johnson295189b2012-06-20 16:38:30 -070017142 @see
17143 @return Result of the function call
17144*/
17145WDI_Status
17146WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017147(
Jeff Johnson295189b2012-06-20 16:38:30 -070017148 WDI_ControlBlockType* pWDICtx,
17149 WDI_EventInfoType* pEventData
17150)
17151{
17152 WDI_Status wdiStatus;
17153 eHalStatus halStatus;
17154 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17156
17157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017159 -------------------------------------------------------------------------*/
17160 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17161 ( NULL == pEventData->pEventData))
17162 {
17163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017164 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017167 }
17168
17169 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17170
17171 /*-------------------------------------------------------------------------
17172 Extract response and send it to UMAC
17173 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017174 wpalMemoryCopy( &halStatus,
17175 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017176 sizeof(halStatus));
17177
Jeff Johnsone7245742012-09-05 17:12:55 -070017178 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017179
17180 /*Notify UMAC*/
17181 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17182
Jeff Johnsone7245742012-09-05 17:12:55 -070017183 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017184}/*WDI_ProcessBtAmpEventRsp*/
17185
17186
17187/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017188 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017189 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017190
17191 @param pWDICtx: pointer to the WLAN DAL context
17192 pEventData: pointer to the event information structure
17193
Jeff Johnson295189b2012-06-20 16:38:30 -070017194 @see
17195 @return Result of the function call
17196*/
17197WDI_Status
17198WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017199(
Jeff Johnson295189b2012-06-20 16:38:30 -070017200 WDI_ControlBlockType* pWDICtx,
17201 WDI_EventInfoType* pEventData
17202)
17203{
17204 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17205 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17206 tAddStaSelfRspMsg halAddStaSelfRsp;
17207 WDI_AddStaParams wdiAddSTAParam = {0};
17208 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17209
17210 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017211 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017212 -------------------------------------------------------------------------*/
17213 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17214 ( NULL == pEventData->pEventData))
17215 {
17216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017217 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017220 }
17221
Jeff Johnsone7245742012-09-05 17:12:55 -070017222 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017223 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17224
17225 /*-------------------------------------------------------------------------
17226 Extract response and send it to UMAC
17227 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017228 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17229 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017230 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17231
17232
Jeff Johnsone7245742012-09-05 17:12:55 -070017233 wdiAddSTASelfParams.wdiStatus =
17234 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017235
Jeff Johnsone7245742012-09-05 17:12:55 -070017236 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017237 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017238 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017239 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017240 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017241 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17242
17243 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17244 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17245 WDI_MAC_ADDR_LEN);
17246
17247
17248#ifdef HAL_SELF_STA_PER_BSS
17249
17250 /* At this point add the self-STA */
17251
17252 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17253 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17254 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17255
17256 //all DPU indices are the same for self STA
17257
17258 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017259 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017260 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17261 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17262 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17263 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17264 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17265
17266 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17267 WDI_MAC_ADDR_LEN);
17268
17269 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17270 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17271
Jeff Johnsone7245742012-09-05 17:12:55 -070017272 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017273 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17274 {
17275 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17276 }
17277#endif
17278
17279 /*Notify UMAC*/
17280 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17281
Jeff Johnsone7245742012-09-05 17:12:55 -070017282 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017283}/*WDI_ProcessAddSTASelfRsp*/
17284
17285
17286
17287/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017288 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017289 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017290
17291 @param pWDICtx: pointer to the WLAN DAL context
17292 pEventData: pointer to the event information structure
17293
Jeff Johnson295189b2012-06-20 16:38:30 -070017294 @see
17295 @return Result of the function call
17296*/
17297WDI_Status
17298WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017299(
Jeff Johnson295189b2012-06-20 16:38:30 -070017300 WDI_ControlBlockType* pWDICtx,
17301 WDI_EventInfoType* pEventData
17302)
17303{
17304 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17305 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17306 tDelStaSelfRspParams delStaSelfRspParams;
17307 wpt_uint8 ucStaIdx;
17308
17309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17310
17311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017313 -------------------------------------------------------------------------*/
17314 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17315 ( NULL == pEventData->pEventData))
17316 {
17317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017321 }
17322
17323 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17324
17325 /*-------------------------------------------------------------------------
17326 Extract response and send it to UMAC
17327 -------------------------------------------------------------------------*/
17328
Jeff Johnsone7245742012-09-05 17:12:55 -070017329 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017330 (wpt_uint8*)pEventData->pEventData,
17331 sizeof(tDelStaSelfRspParams));
17332
Jeff Johnsone7245742012-09-05 17:12:55 -070017333 wdiDelStaSelfRspParams.wdiStatus =
17334 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017335
Jeff Johnsone7245742012-09-05 17:12:55 -070017336 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017337 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17338 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17339 {
17340 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017341 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017342 delStaSelfRspParams.selfMacAddr,
17343 &ucStaIdx);
17344 if(WDI_STATUS_E_FAILURE == wdiStatus)
17345 {
17346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017347 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017350 }
17351 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17352 }
17353
17354 /*Notify UMAC*/
17355 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17356
17357 return WDI_STATUS_SUCCESS;
17358}
17359
Jeff Johnsone7245742012-09-05 17:12:55 -070017360#ifdef FEATURE_OEM_DATA_SUPPORT
17361/**
17362 @brief Start Oem Data Rsp function (called when a
17363 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017364
Jeff Johnsone7245742012-09-05 17:12:55 -070017365 @param pWDICtx: pointer to the WLAN DAL context
17366 pEventData: pointer to the event information structure
17367
17368 @see
17369 @return Result of the function call
17370*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017371
17372WDI_Status
17373WDI_ProcessStartOemDataRsp
17374(
17375 WDI_ControlBlockType* pWDICtx,
17376 WDI_EventInfoType* pEventData
17377)
17378{
17379 WDI_oemDataRspCb wdiOemDataRspCb;
17380 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17381 tStartOemDataRspParams* halStartOemDataRspParams;
17382
17383 /*-------------------------------------------------------------------------
17384 Sanity check
17385 -------------------------------------------------------------------------*/
17386 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17387 ( NULL == pEventData->pEventData))
17388 {
17389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017390 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017391 WDI_ASSERT(0);
17392 return WDI_STATUS_E_FAILURE;
17393 }
17394
17395 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17396
17397 /*-------------------------------------------------------------------------
17398 Extract response and send it to UMAC
17399 -------------------------------------------------------------------------*/
17400 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17401
17402
17403 //It is the responsibility of the application code to check for failure
17404 //conditions!
17405
17406 //Allocate memory for WDI OEM DATA RSP structure
17407 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17408
17409 if(NULL == wdiOemDataRspParams)
17410 {
17411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017412 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017413 pWDICtx, pEventData, pEventData->pEventData);
17414 WDI_ASSERT(0);
17415 return WDI_STATUS_E_FAILURE;
17416 }
17417
17418 /* Populate WDI structure members */
17419 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17420
17421 /*Notify UMAC*/
17422 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17423
17424 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17425 wpalMemoryFree(wdiOemDataRspParams);
17426
17427 return WDI_STATUS_SUCCESS;
17428}/*WDI_PrcoessStartOemDataRsp*/
17429#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017430
17431/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017432 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017433===========================================================================*/
17434
17435/**
17436 @brief Process Channel Switch Rsp function (called when a response
17437 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017438
17439 @param pWDICtx: pointer to the WLAN DAL context
17440 pEventData: pointer to the event information structure
17441
Jeff Johnson295189b2012-06-20 16:38:30 -070017442 @see
17443 @return Result of the function call
17444*/
17445WDI_Status
17446WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017447(
Jeff Johnson295189b2012-06-20 16:38:30 -070017448 WDI_ControlBlockType* pWDICtx,
17449 WDI_EventInfoType* pEventData
17450)
17451{
17452 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17453 WDI_SwitchChRspCb wdiChSwitchRspCb;
17454 tSwitchChannelRspParams halSwitchChannelRsp;
17455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17456
17457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017459 -------------------------------------------------------------------------*/
17460 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17461 ( NULL == pEventData->pEventData))
17462 {
17463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017467 }
17468
17469 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17470
17471 /*-------------------------------------------------------------------------
17472 Extract response and send it to UMAC
17473 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017474 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017475 (wpt_uint8*)pEventData->pEventData,
17476 sizeof(halSwitchChannelRsp));
17477
Jeff Johnsone7245742012-09-05 17:12:55 -070017478 wdiSwitchChRsp.wdiStatus =
17479 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017480 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17481
17482#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017483 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017484#endif
17485
17486 /*Notify UMAC*/
17487 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17488
Jeff Johnsone7245742012-09-05 17:12:55 -070017489 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017490}/*WDI_ProcessChannelSwitchRsp*/
17491
17492
17493/**
17494 @brief Process Config STA Rsp function (called when a response
17495 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017496
17497 @param pWDICtx: pointer to the WLAN DAL context
17498 pEventData: pointer to the event information structure
17499
Jeff Johnson295189b2012-06-20 16:38:30 -070017500 @see
17501 @return Result of the function call
17502*/
17503WDI_Status
17504WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017505(
Jeff Johnson295189b2012-06-20 16:38:30 -070017506 WDI_ControlBlockType* pWDICtx,
17507 WDI_EventInfoType* pEventData
17508)
17509{
17510 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17511 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17512 WDI_AddStaParams wdiAddSTAParam;
17513
17514 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017515 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017516
Jeff Johnsone7245742012-09-05 17:12:55 -070017517 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17519
17520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017521 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017522 -------------------------------------------------------------------------*/
17523 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17524 ( NULL == pEventData->pEventData))
17525 {
17526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017527 "%s: Invalid parameters", __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
17532 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17533
17534 /*-------------------------------------------------------------------------
17535 Extract response and send it to UMAC
17536 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017537 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17538 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017539 sizeof(halConfigStaRsp.configStaRspParams));
17540
17541
17542 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17543 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17544 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17545 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17546 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17547
17548 /* MAC Address of STA - take from cache as it does not come back in the
17549 response*/
17550 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017551 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017552 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017553
17554 wdiCfgSTAParams.wdiStatus =
17555 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017556
17557 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17558 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17559 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17560
17561 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17562 {
17563 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17564 {
17565 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017566 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017567 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17568 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017569
Jeff Johnson295189b2012-06-20 16:38:30 -070017570 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017571 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017572 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017573 wdiAddSTAParam.ucHTCapable =
17574 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17575 wdiAddSTAParam.ucStaType =
17576 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070017577 wdiAddSTAParam.ucRmfEnabled =
17578 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017579
Jeff Johnson295189b2012-06-20 16:38:30 -070017580 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017581 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17582 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017583 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017584
17585 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17586 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17587 WDI_MAC_ADDR_LEN);
17588
17589 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17590 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17591 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017592
17593 if ( NULL == pBSSSes )
17594 {
17595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17596 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017597
Jeff Johnson295189b2012-06-20 16:38:30 -070017598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017599 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017600 }
17601
17602 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017603 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017604 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017605 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017606 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017607 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017608 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017609 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017610 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017611 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017612
Jeff Johnson295189b2012-06-20 16:38:30 -070017613 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17614 }
17615 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17616 {
17617 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17618
Jeff Johnsone7245742012-09-05 17:12:55 -070017619 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017620 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017621 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017622 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017623 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017624 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017625 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017626 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017627 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017628 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017629 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017630 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017631 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017632 halConfigStaRsp.configStaRspParams.ucUcastSig;
17633 }
17634 }
17635
17636 /*Notify UMAC*/
17637 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17638
Jeff Johnsone7245742012-09-05 17:12:55 -070017639 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017640}/*WDI_ProcessConfigStaRsp*/
17641
17642
17643/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017644 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017645 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017646
17647 @param pWDICtx: pointer to the WLAN DAL context
17648 pEventData: pointer to the event information structure
17649
Jeff Johnson295189b2012-06-20 16:38:30 -070017650 @see
17651 @return Result of the function call
17652*/
17653WDI_Status
17654WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017655(
Jeff Johnson295189b2012-06-20 16:38:30 -070017656 WDI_ControlBlockType* pWDICtx,
17657 WDI_EventInfoType* pEventData
17658)
17659{
17660 WDI_Status wdiStatus;
17661 eHalStatus halStatus;
17662 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17663
17664 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017665 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17667
17668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017670 -------------------------------------------------------------------------*/
17671 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17672 ( NULL == pEventData->pEventData))
17673 {
17674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017675 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017678 }
17679
17680 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17681
17682 wpalMutexAcquire(&pWDICtx->wptMutex);
17683
17684 /*If the link is being transitioned to idle - the BSS is to be deleted
17685 - this type of ending a session is possible when UMAC has failed an
17686 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017687 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017688 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17689 {
17690 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017691 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017692 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017693 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17694 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17695 &pBSSSes);
17696
Jeff Johnson295189b2012-06-20 16:38:30 -070017697 /*-----------------------------------------------------------------------
17698 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017699 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017700 -----------------------------------------------------------------------*/
17701 if ( NULL == pBSSSes )
17702 {
17703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17704 "Set link response received outside association session");
17705 }
17706 else
17707 {
17708 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17709 will be del BSS coming after this to stop the beaconing & cleaning up the
17710 sessions*/
17711 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17712 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17713 {
17714 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017715 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017716 -----------------------------------------------------------------------*/
17717 WDI_DeleteSession(pWDICtx, pBSSSes);
17718
17719 /*-----------------------------------------------------------------------
17720 Check to see if this association is in progress - if so disable the
17721 flag as this has ended
17722 -----------------------------------------------------------------------*/
17723 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017724 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017725 /*Association no longer in progress */
17726 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17727 /*Association no longer in progress - prepare pending assoc for processing*/
17728 WDI_DequeueAssocRequest(pWDICtx);
17729 }
17730 }
17731 }
17732 }
17733 /* If the link state has been set to POST ASSOC, reset the "association in
17734 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017735 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017736 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17737 {
17738 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17739 WDI_DequeueAssocRequest(pWDICtx);
17740 }
17741
17742 wpalMutexRelease(&pWDICtx->wptMutex);
17743
17744 /*-------------------------------------------------------------------------
17745 Extract response and send it to UMAC
17746 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017747 wpalMemoryCopy( &halStatus,
17748 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017749 sizeof(halStatus));
17750
Jeff Johnsone7245742012-09-05 17:12:55 -070017751 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017752
17753 /*Notify UMAC*/
17754 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17755
Jeff Johnsone7245742012-09-05 17:12:55 -070017756 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017757}/*WDI_ProcessSetLinkStateRsp*/
17758
17759/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017760 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017761 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017762
17763 @param pWDICtx: pointer to the WLAN DAL context
17764 pEventData: pointer to the event information structure
17765
Jeff Johnson295189b2012-06-20 16:38:30 -070017766 @see
17767 @return Result of the function call
17768*/
17769WDI_Status
17770WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017771(
Jeff Johnson295189b2012-06-20 16:38:30 -070017772 WDI_ControlBlockType* pWDICtx,
17773 WDI_EventInfoType* pEventData
17774)
17775{
17776 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17777 WDI_GetStatsRspCb wdiGetStatsRspCb;
17778 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017779
Jeff Johnson295189b2012-06-20 16:38:30 -070017780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17781
17782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017784 -------------------------------------------------------------------------*/
17785 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17786 ( NULL == pEventData->pEventData))
17787 {
17788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017792 }
17793
17794 /*-------------------------------------------------------------------------
17795 Extract response and send it to UMAC
17796 -------------------------------------------------------------------------*/
17797 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17798
17799 /*allocate the stats response buffer */
17800 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17801 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17802 + sizeof(WDI_GetStatsRspParamsType));
17803
17804 if(NULL == wdiGetStatsRsp)
17805 {
17806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017807 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070017808 pWDICtx, pEventData, pEventData->pEventData);
17809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017811 }
17812
17813 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17814
17815 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17816 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17817 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17818 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17819 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17820 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17821
17822 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17823 wpalMemoryCopy(wdiGetStatsRsp + 1,
17824 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17825 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17826
17827 /*Notify UMAC*/
17828 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17829
17830 wpalMemoryFree(wdiGetStatsRsp);
17831
Jeff Johnsone7245742012-09-05 17:12:55 -070017832 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017833}/*WDI_ProcessGetStatsRsp*/
17834
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017835#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080017836/**
17837 @brief Process Get Roam Rssi Rsp function (called when a response is
17838 being received over the bus from HAL)
17839
17840 @param pWDICtx: pointer to the WLAN DAL context
17841 pEventData: pointer to the event information structure
17842
17843 @see
17844 @return Result of the function call
17845*/
17846WDI_Status
17847WDI_ProcessGetRoamRssiRsp
17848(
17849 WDI_ControlBlockType* pWDICtx,
17850 WDI_EventInfoType* pEventData
17851)
17852{
17853 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17854 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17855 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17857
17858 /*-------------------------------------------------------------------------
17859 Sanity check
17860 -------------------------------------------------------------------------*/
17861 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17862 ( NULL == pEventData->pEventData))
17863 {
17864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17865 "%s: Invalid parameters", __func__);
17866 WDI_ASSERT(0);
17867 return WDI_STATUS_E_FAILURE;
17868 }
17869
17870 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17871 if(NULL == wdiGetRoamRssiRspCb)
17872 {
17873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17874 "%s: call back function is NULL", __func__);
17875 WDI_ASSERT(0);
17876 return WDI_STATUS_E_FAILURE;
17877 }
17878
17879 /*-------------------------------------------------------------------------
17880 Extract response and send it to UMAC
17881 -------------------------------------------------------------------------*/
17882 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17883 pEventData->pEventData,
17884 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17885
17886 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17887 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17888 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17889
17890 /*Notify UMAC*/
17891 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17892
17893 return WDI_STATUS_SUCCESS;
17894}/*WDI_ProcessGetRoamRssiRsp*/
17895#endif
17896
Jeff Johnson295189b2012-06-20 16:38:30 -070017897
17898/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017899 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017900 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017901
17902 @param pWDICtx: pointer to the WLAN DAL context
17903 pEventData: pointer to the event information structure
17904
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 @see
17906 @return Result of the function call
17907*/
17908WDI_Status
17909WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017910(
Jeff Johnson295189b2012-06-20 16:38:30 -070017911 WDI_ControlBlockType* pWDICtx,
17912 WDI_EventInfoType* pEventData
17913)
17914{
17915 WDI_Status wdiStatus;
17916 eHalStatus halStatus;
17917 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17919
17920 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017921 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017922 -------------------------------------------------------------------------*/
17923 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17924 ( NULL == pEventData->pEventData))
17925 {
17926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017927 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017928 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017929 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017930 }
17931
17932 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17933
17934 /*-------------------------------------------------------------------------
17935 Extract response and send it to UMAC
17936 -------------------------------------------------------------------------*/
17937 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017938 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017939
17940 /*Notify UMAC*/
17941 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17942
Jeff Johnsone7245742012-09-05 17:12:55 -070017943 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017944}/*WDI_ProcessUpdateCfgRsp*/
17945
17946
17947
17948/**
17949 @brief Process Add BA Rsp function (called when a response
17950 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017951
17952 @param pWDICtx: pointer to the WLAN DAL context
17953 pEventData: pointer to the event information structure
17954
Jeff Johnson295189b2012-06-20 16:38:30 -070017955 @see
17956 @return Result of the function call
17957*/
17958WDI_Status
17959WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017960(
Jeff Johnson295189b2012-06-20 16:38:30 -070017961 WDI_ControlBlockType* pWDICtx,
17962 WDI_EventInfoType* pEventData
17963)
17964{
17965 WDI_AddBARspCb wdiAddBARspCb;
17966
17967 tAddBARspParams halAddBARsp;
17968 WDI_AddBARspinfoType wdiAddBARsp;
17969
17970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17971
17972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017973 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017974 -------------------------------------------------------------------------*/
17975 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17976 ( NULL == pEventData->pEventData))
17977 {
17978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017979 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017980 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017981 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017982 }
17983
17984 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17985
17986 /*-------------------------------------------------------------------------
17987 Extract response and send it to UMAC
17988 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017989 wpalMemoryCopy( &halAddBARsp,
17990 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017991 sizeof(halAddBARsp));
17992
17993 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17994
Jeff Johnson43971f52012-07-17 12:26:56 -070017995 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017996 {
17997 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17998 }
17999
18000 /*Notify UMAC*/
18001 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18002
Jeff Johnsone7245742012-09-05 17:12:55 -070018003 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018004}/*WDI_ProcessAddSessionBARsp*/
18005
18006/**
18007 @brief Process Add BA Rsp function (called when a response
18008 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018009
18010 @param pWDICtx: pointer to the WLAN DAL context
18011 pEventData: pointer to the event information structure
18012
Jeff Johnson295189b2012-06-20 16:38:30 -070018013 @see
18014 @return Result of the function call
18015*/
18016WDI_Status
18017WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018018(
Jeff Johnson295189b2012-06-20 16:38:30 -070018019 WDI_ControlBlockType* pWDICtx,
18020 WDI_EventInfoType* pEventData
18021)
18022{
18023 WDI_TriggerBARspCb wdiTriggerBARspCb;
18024
18025 tTriggerBARspParams* halTriggerBARsp;
18026 tTriggerBaRspCandidate* halBaCandidate;
18027 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18028 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18029 wpt_uint16 index;
18030 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018031 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18033
18034 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018035 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018036 -------------------------------------------------------------------------*/
18037 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18038 ( NULL == pEventData->pEventData))
18039 {
18040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018041 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018044 }
18045
18046 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18047
18048 /*-------------------------------------------------------------------------
18049 Extract response and send it to UMAC
18050 -------------------------------------------------------------------------*/
18051 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18052
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018053 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18054
18055 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18056 {
18057 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018058 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018059 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018060
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018061 if(NULL == wdiTriggerBARsp)
18062 {
18063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018064 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018065 pWDICtx, pEventData, pEventData->pEventData);
18066 WDI_ASSERT(0);
18067 return WDI_STATUS_E_FAILURE;
18068 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018069
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018070 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18071
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018073 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018074 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18075
18076 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18077 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18078
18079 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18080 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018081 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018082 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18083 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18084 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018085 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018086 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018087 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018088 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18089 }
18090 wdiTriggerBARspCandidate++;
18091 halBaCandidate++;
18092 }
18093 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018094 else
18095 {
18096 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18097
18098 if(NULL == wdiTriggerBARsp)
18099 {
18100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018101 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018102 pWDICtx, pEventData, pEventData->pEventData);
18103 WDI_ASSERT(0);
18104 return WDI_STATUS_E_FAILURE;
18105 }
18106
18107 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18108
18109 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018110
18111 /*Notify UMAC*/
18112 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18113
18114 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018115 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018116}/*WDI_ProcessAddSessionBARsp*/
18117
18118/**
18119 @brief Process Update Beacon Params Rsp function (called when a response
18120 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018121
18122 @param pWDICtx: pointer to the WLAN DAL context
18123 pEventData: pointer to the event information structure
18124
Jeff Johnson295189b2012-06-20 16:38:30 -070018125 @see
18126 @return Result of the function call
18127*/
18128WDI_Status
18129WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018130(
Jeff Johnson295189b2012-06-20 16:38:30 -070018131 WDI_ControlBlockType* pWDICtx,
18132 WDI_EventInfoType* pEventData
18133)
18134{
18135 WDI_Status wdiStatus;
18136 eHalStatus halStatus;
18137 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18139
18140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018141 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018142 -------------------------------------------------------------------------*/
18143 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18144 ( NULL == pEventData->pEventData))
18145 {
18146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018147 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018148 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018150 }
18151
18152 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18153
18154 /*-------------------------------------------------------------------------
18155 Extract response and send it to UMAC
18156 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018157 wpalMemoryCopy( &halStatus,
18158 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018159 sizeof(halStatus));
18160
Jeff Johnsone7245742012-09-05 17:12:55 -070018161 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018162
18163 /*Notify UMAC*/
18164 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18165
Jeff Johnsone7245742012-09-05 17:12:55 -070018166 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018167}/*WDI_ProcessUpdateBeaconParamsRsp*/
18168
18169/**
18170 @brief Process Send Beacon template Rsp function (called when a response
18171 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018172
18173 @param pWDICtx: pointer to the WLAN DAL context
18174 pEventData: pointer to the event information structure
18175
Jeff Johnson295189b2012-06-20 16:38:30 -070018176 @see
18177 @return Result of the function call
18178*/
18179WDI_Status
18180WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018181(
Jeff Johnson295189b2012-06-20 16:38:30 -070018182 WDI_ControlBlockType* pWDICtx,
18183 WDI_EventInfoType* pEventData
18184)
18185{
18186 WDI_Status wdiStatus;
18187 eHalStatus halStatus;
18188 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18190
18191 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018192 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018193 -------------------------------------------------------------------------*/
18194 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18195 ( NULL == pEventData->pEventData))
18196 {
18197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018198 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018199 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018201 }
18202
18203 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18204
18205 /*-------------------------------------------------------------------------
18206 Extract response and send it to UMAC
18207 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018208 wpalMemoryCopy( &halStatus,
18209 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018210 sizeof(halStatus));
18211
Jeff Johnsone7245742012-09-05 17:12:55 -070018212 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018213
18214 /*Notify UMAC*/
18215 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18216
Jeff Johnsone7245742012-09-05 17:12:55 -070018217 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018218}/*WDI_ProcessSendBeaconParamsRsp*/
18219
Jeff Johnsone7245742012-09-05 17:12:55 -070018220
Jeff Johnson295189b2012-06-20 16:38:30 -070018221/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018222 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018223 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018224
18225 @param pWDICtx: pointer to the WLAN DAL context
18226 pEventData: pointer to the event information structure
18227
Jeff Johnson295189b2012-06-20 16:38:30 -070018228 @see
18229 @return Result of the function call
18230*/
18231WDI_Status
18232WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018233(
Jeff Johnson295189b2012-06-20 16:38:30 -070018234 WDI_ControlBlockType* pWDICtx,
18235 WDI_EventInfoType* pEventData
18236)
18237{
18238 WDI_Status wdiStatus;
18239 eHalStatus halStatus;
18240 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18242
18243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018244 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018245 -------------------------------------------------------------------------*/
18246 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18247 ( NULL == pEventData->pEventData))
18248 {
18249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018253 }
18254
18255 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18256
18257 /*-------------------------------------------------------------------------
18258 Extract response and send it to UMAC
18259 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018260 wpalMemoryCopy( &halStatus,
18261 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018262 sizeof(halStatus));
18263
Jeff Johnsone7245742012-09-05 17:12:55 -070018264 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018265
18266 /*Notify UMAC*/
18267 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18268
Jeff Johnsone7245742012-09-05 17:12:55 -070018269 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018270}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18271
18272 /**
18273 @brief Process Set Max Tx Power Rsp function (called when a response
18274 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018275
18276 @param pWDICtx: pointer to the WLAN DAL context
18277 pEventData: pointer to the event information structure
18278
Jeff Johnson295189b2012-06-20 16:38:30 -070018279 @see
18280 @return Result of the function call
18281*/
18282WDI_Status
18283WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018284(
Jeff Johnson295189b2012-06-20 16:38:30 -070018285 WDI_ControlBlockType* pWDICtx,
18286 WDI_EventInfoType* pEventData
18287)
18288{
18289 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018290
Jeff Johnson295189b2012-06-20 16:38:30 -070018291 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018292
Jeff Johnson295189b2012-06-20 16:38:30 -070018293 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18295
18296 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018297 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018298 -------------------------------------------------------------------------*/
18299 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18300 ( NULL == pEventData->pEventData))
18301 {
18302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018306 }
18307
18308 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18309
18310 /*-------------------------------------------------------------------------
18311 Extract response and send it to UMAC
18312 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018313 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18314 pEventData->pEventData,
18315 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018316
18317 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18318 {
18319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18320 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018322 }
18323
Jeff Johnsone7245742012-09-05 17:12:55 -070018324 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018325 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018326 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018327
18328 /*Notify UMAC*/
18329 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18330
Jeff Johnsone7245742012-09-05 17:12:55 -070018331 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018332}
18333
schang86c22c42013-03-13 18:41:24 -070018334 /**
18335 @brief Process Set Tx Power Rsp function (called when a response
18336 is being received over the bus from HAL)
18337
18338 @param pWDICtx: pointer to the WLAN DAL context
18339 pEventData: pointer to the event information structure
18340
18341 @see
18342 @return Result of the function call
18343*/
18344WDI_Status
18345WDI_ProcessSetTxPowerRsp
18346(
18347 WDI_ControlBlockType* pWDICtx,
18348 WDI_EventInfoType* pEventData
18349)
18350{
18351 tSetTxPwrRspMsg halTxpowerrsp;
18352 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18353 WDA_SetTxPowerRspCb wdiReqStatusCb;
18354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18355
18356 /*-------------------------------------------------------------------------
18357 Sanity check
18358 -------------------------------------------------------------------------*/
18359 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18360 ( NULL == pEventData->pEventData))
18361 {
18362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18363 "%s: Invalid parameters", __func__);
18364 WDI_ASSERT(0);
18365 return WDI_STATUS_E_FAILURE;
18366 }
18367
18368 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18369
18370 /*-------------------------------------------------------------------------
18371 Extract response and send it to UMAC
18372 -------------------------------------------------------------------------*/
18373 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18374 pEventData->pEventData,
18375 sizeof(halTxpowerrsp.setTxPwrRspParams));
18376
18377 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18378 {
18379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18380 "Error status returned in Set Tx Power Response ");
18381 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18382 return WDI_STATUS_E_FAILURE;
18383 }
18384
18385 wdiSetTxPowerRspMsg.wdiStatus =
18386 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18387
18388 /*Notify UMAC*/
18389 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18390
18391 return WDI_STATUS_SUCCESS;
18392}
Arif Hussain935a8fb2014-01-31 12:12:28 -080018393
18394/**
18395 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
18396 is being received over the bus from HAL)
18397
18398 @param pWDICtx: pointer to the WLAN DAL context
18399 pEventData: pointer to the event information structure
18400
18401 @see
18402 @return Result of the function call
18403*/
18404WDI_Status
18405WDI_ProcessSetMaxTxPowerPerBandRsp
18406(
18407 WDI_ControlBlockType* pWDICtx,
18408 WDI_EventInfoType* pEventData
18409)
18410{
18411 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
18412 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
18413 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
18414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18415
18416 /*-------------------------------------------------------------------------
18417 Sanity check
18418 -------------------------------------------------------------------------*/
18419 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18420 ( NULL == pEventData->pEventData))
18421 {
18422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18423 "%s: Invalid parameters", __func__);
18424 WDI_ASSERT(0);
18425 return WDI_STATUS_E_FAILURE;
18426 }
18427
18428 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
18429
18430 /*-------------------------------------------------------------------------
18431 Extract response and send it to UMAC
18432 -------------------------------------------------------------------------*/
18433 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
18434 pEventData->pEventData,
18435 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
18436
18437 if (eHAL_STATUS_SUCCESS !=
18438 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
18439 {
18440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18441 "Error status returned in Set Max Tx Power Per Band Response");
18442 return WDI_STATUS_E_FAILURE;
18443 }
18444
18445 wdiSetTxPowerPerBandRspMsg.wdiStatus =
18446 WDI_HAL_2_WDI_STATUS(
18447 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
18448
18449 /* Notify UMAC */
18450 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
18451
18452 return WDI_STATUS_SUCCESS;
18453}
18454
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018455#ifdef FEATURE_WLAN_TDLS
18456/**
18457 @brief Process TDLS Link Establish Rsp function (called
18458 when a response is being received over the bus from HAL)
18459
18460 @param pWDICtx: pointer to the WLAN DAL context
18461 pEventData: pointer to the event information structure
18462
18463 @see
18464 @return Result of the function call
18465*/
18466WDI_Status
18467WDI_ProcessLinkEstablishReqRsp
18468(
18469 WDI_ControlBlockType* pWDICtx,
18470 WDI_EventInfoType* pEventData
18471)
18472{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018473 eHalStatus halStatus;
18474 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018475 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18476 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18477
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18479
18480 /*-------------------------------------------------------------------------
18481 Sanity check
18482 -------------------------------------------------------------------------*/
18483 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18484 ( NULL == pEventData->pEventData))
18485 {
18486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18487 "%s: Invalid parameters", __func__);
18488 WDI_ASSERT(0);
18489 return WDI_STATUS_E_FAILURE;
18490 }
18491
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018492 /*-------------------------------------------------------------------------
18493 Extract indication and send it to UMAC
18494 -------------------------------------------------------------------------*/
18495 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18496 pEventData->pEventData,
18497 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18498
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018499 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18500
18501 /*-------------------------------------------------------------------------
18502 Extract response and send it to UMAC
18503 -------------------------------------------------------------------------*/
18504 wpalMemoryCopy( &halStatus,
18505 pEventData->pEventData,
18506 sizeof(halStatus));
18507
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018508 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18509 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018510
18511 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018512 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018513
18514 return WDI_STATUS_SUCCESS;
18515}/*WDI_ProcessLinkEstablishReqRsp*/
18516#endif
schang86c22c42013-03-13 18:41:24 -070018517
Jeff Johnson295189b2012-06-20 16:38:30 -070018518/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018519 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018520 when a response 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_ProcessP2PGONOARsp
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 WDI_Status wdiStatus;
18536 eHalStatus halStatus;
18537 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18539
18540 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018541 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018542 -------------------------------------------------------------------------*/
18543 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18544 ( NULL == pEventData->pEventData))
18545 {
18546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018547 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018550 }
18551
18552 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18553
18554 /*-------------------------------------------------------------------------
18555 Extract response and send it to UMAC
18556 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018557 wpalMemoryCopy( &halStatus,
18558 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018559 sizeof(halStatus));
18560
Jeff Johnsone7245742012-09-05 17:12:55 -070018561 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018562
18563 /*Notify UMAC*/
18564 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18565
Jeff Johnsone7245742012-09-05 17:12:55 -070018566 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018567}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018568/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018569 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018570 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018571
18572 @param pWDICtx: pointer to the WLAN DAL context
18573 pEventData: pointer to the event information structure
18574
Jeff Johnson295189b2012-06-20 16:38:30 -070018575 @see
18576 @return Result of the function call
18577*/
18578WDI_Status
18579WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018580(
Jeff Johnson295189b2012-06-20 16:38:30 -070018581 WDI_ControlBlockType* pWDICtx,
18582 WDI_EventInfoType* pEventData
18583)
18584{
18585 WDI_Status wdiStatus;
18586 eHalStatus halStatus;
18587 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018588 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18590
18591 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018592 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018593 -------------------------------------------------------------------------*/
18594 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18595 ( NULL == pEventData->pEventData))
18596 {
18597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018598 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018601 }
18602
18603 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18604
18605 /*-------------------------------------------------------------------------
18606 Extract response and send it to UMAC
18607 -------------------------------------------------------------------------*/
18608 halStatus = *((eHalStatus*)pEventData->pEventData);
18609
Jeff Johnsone7245742012-09-05 17:12:55 -070018610 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018611
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018612 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18613 * Other module states are taken care by PMC.
18614 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18615 */
18616 if (wdiStatus != WDI_STATUS_SUCCESS) {
18617
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18619 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18620 halStatus);
18621 /* Call Back is not required as we are putting the DXE in FULL
18622 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080018623 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18624
18625 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018627 "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 -080018628 WDI_ASSERT(0);
18629 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018630 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018631 /*Notify UMAC*/
18632 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18633
Jeff Johnsone7245742012-09-05 17:12:55 -070018634 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018635}/*WDI_ProcessEnterImpsRsp*/
18636
18637/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018638 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018639 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018640
18641 @param pWDICtx: pointer to the WLAN DAL context
18642 pEventData: pointer to the event information structure
18643
Jeff Johnson295189b2012-06-20 16:38:30 -070018644 @see
18645 @return Result of the function call
18646*/
18647WDI_Status
18648WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018649(
Jeff Johnson295189b2012-06-20 16:38:30 -070018650 WDI_ControlBlockType* pWDICtx,
18651 WDI_EventInfoType* pEventData
18652)
18653{
18654 WDI_Status wdiStatus;
18655 eHalStatus halStatus;
18656 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018657 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18659
18660 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018661 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018662 -------------------------------------------------------------------------*/
18663 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18664 ( NULL == pEventData->pEventData))
18665 {
18666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018667 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018668 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018670 }
18671
18672 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18673
18674 /*-------------------------------------------------------------------------
18675 Extract response and send it to UMAC
18676 -------------------------------------------------------------------------*/
18677 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018678 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018679
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053018680 if (halStatus != eHAL_STATUS_SUCCESS)
18681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18682 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18683
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080018685 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18686 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18687 {
18688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018689 "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 -080018690 WDI_ASSERT(0);
18691 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018692 /*Notify UMAC*/
18693 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18694
Jeff Johnsone7245742012-09-05 17:12:55 -070018695 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018696}/*WDI_ProcessExitImpsRsp*/
18697
18698/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018699 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018700 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018701
18702 @param pWDICtx: pointer to the WLAN DAL context
18703 pEventData: pointer to the event information structure
18704
Jeff Johnson295189b2012-06-20 16:38:30 -070018705 @see
18706 @return Result of the function call
18707*/
18708WDI_Status
18709WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018710(
Jeff Johnson295189b2012-06-20 16:38:30 -070018711 WDI_ControlBlockType* pWDICtx,
18712 WDI_EventInfoType* pEventData
18713)
18714{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018715 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18716 tHalEnterBmpsRspParams halEnterBmpsRsp;
18717 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18718 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080018719 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18721
18722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018723 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018724 -------------------------------------------------------------------------*/
18725 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18726 ( NULL == pEventData->pEventData))
18727 {
18728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018729 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018732 }
18733
Jeff Johnson295189b2012-06-20 16:38:30 -070018734 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018735 Extract response and send it to UMAC
18736 -------------------------------------------------------------------------*/
18737 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18738 {
18739 wpalMemoryCopy( &halEnterBmpsRsp,
18740 pEventData->pEventData,
18741 sizeof(halEnterBmpsRsp));
18742
18743 //Used to print debug message
18744 halStatus = halEnterBmpsRsp.status;
18745 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18746 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18747 }
18748 else
18749 {
18750 halStatus = *((eHalStatus*)pEventData->pEventData);
18751 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18752 }
18753
18754 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018755
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018756 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18757 * Other module states are taken care by PMC.
18758 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18759 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018760 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18761 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018762
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018764 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18765 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018766 /* Call Back is not required as we are putting the DXE in FULL
18767 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080018768 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18769 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18770 {
18771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018772 "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 -080018773 WDI_ASSERT(0);
18774 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018775 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018776 }
18777
Jeff Johnson295189b2012-06-20 16:38:30 -070018778 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018779 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018780
Jeff Johnsone7245742012-09-05 17:12:55 -070018781 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018782}/*WDI_ProcessEnterBmpsRsp*/
18783
18784/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018785 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018786 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018787
18788 @param pWDICtx: pointer to the WLAN DAL context
18789 pEventData: pointer to the event information structure
18790
Jeff Johnson295189b2012-06-20 16:38:30 -070018791 @see
18792 @return Result of the function call
18793*/
18794WDI_Status
18795WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018796(
Jeff Johnson295189b2012-06-20 16:38:30 -070018797 WDI_ControlBlockType* pWDICtx,
18798 WDI_EventInfoType* pEventData
18799)
18800{
Jeff Johnson295189b2012-06-20 16:38:30 -070018801 eHalStatus halStatus;
18802 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018803 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080018804 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18805 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18807
18808 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018809 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018810 -------------------------------------------------------------------------*/
18811 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18812 ( NULL == pEventData->pEventData))
18813 {
18814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018815 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018818 }
18819
18820 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18821
18822 /*-------------------------------------------------------------------------
18823 Extract response and send it to UMAC
18824 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018825
18826 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18827 {
18828 wpalMemoryCopy( &halExitBmpsRsp,
18829 pEventData->pEventData,
18830 sizeof(halExitBmpsRsp));
18831
18832 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18833 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18834 }
18835 else
18836 {
18837 halStatus = *((eHalStatus*)pEventData->pEventData);
18838 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18839 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018840
18841 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080018842 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18843 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18844 {
18845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018846 "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 -080018847 WDI_ASSERT(0);
18848 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018849 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18850
18851 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018852 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018853
Jeff Johnsone7245742012-09-05 17:12:55 -070018854 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018855}/*WDI_ProcessExitBmpsRsp*/
18856
18857/**
18858 @brief Process Enter UAPSD Rsp function (called when a response
18859 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018860
18861 @param pWDICtx: pointer to the WLAN DAL context
18862 pEventData: pointer to the event information structure
18863
Jeff Johnson295189b2012-06-20 16:38:30 -070018864 @see
18865 @return Result of the function call
18866*/
18867WDI_Status
18868WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018869(
Jeff Johnson295189b2012-06-20 16:38:30 -070018870 WDI_ControlBlockType* pWDICtx,
18871 WDI_EventInfoType* pEventData
18872)
18873{
Jeff Johnson295189b2012-06-20 16:38:30 -070018874 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018875 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018876 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018877 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18878
Jeff Johnson295189b2012-06-20 16:38:30 -070018879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18880
18881 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018882 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018883 -------------------------------------------------------------------------*/
18884 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18885 ( NULL == pEventData->pEventData))
18886 {
18887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018888 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018889 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018890 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018891 }
18892
18893 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18894
18895 /*-------------------------------------------------------------------------
18896 Extract response and send it to UMAC
18897 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018898 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18899 {
18900 wpalMemoryCopy( &halEnterUapsdRsp,
18901 pEventData->pEventData,
18902 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018903
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018904 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18905 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18906 }
18907 else
18908 {
18909 halStatus = *((eHalStatus*)pEventData->pEventData);
18910 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18911 }
18912
18913 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018914 {
18915 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18916 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18917 // the traffic to decide when to suspend the trigger frames when there is no traffic
18918 // activity on the trigger enabled ACs
18919 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18920
18921#ifdef WLAN_PERF
18922 // Increment the BD signature to refresh the fast path BD utilization
18923 pWDICtx->uBdSigSerialNum++;
18924#endif
18925 }
18926
18927 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018928 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018929
Jeff Johnsone7245742012-09-05 17:12:55 -070018930 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018931}/*WDI_ProcessEnterUapsdRsp*/
18932
18933/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018934 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018935 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018936
18937 @param pWDICtx: pointer to the WLAN DAL context
18938 pEventData: pointer to the event information structure
18939
Jeff Johnson295189b2012-06-20 16:38:30 -070018940 @see
18941 @return Result of the function call
18942*/
18943WDI_Status
18944WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018945(
Jeff Johnson295189b2012-06-20 16:38:30 -070018946 WDI_ControlBlockType* pWDICtx,
18947 WDI_EventInfoType* pEventData
18948)
18949{
Jeff Johnson295189b2012-06-20 16:38:30 -070018950 eHalStatus halStatus;
18951 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018952 tHalExitUapsdRspParams halExitUapsdRsp;
18953 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18955
18956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018957 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018958 -------------------------------------------------------------------------*/
18959 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18960 ( NULL == pEventData->pEventData))
18961 {
18962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018963 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018966 }
18967
18968 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18969
18970 /*-------------------------------------------------------------------------
18971 Extract response and send it to UMAC
18972 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018973 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18974 {
18975 wpalMemoryCopy( &halExitUapsdRsp,
18976 pEventData->pEventData,
18977 sizeof(halExitUapsdRsp));
18978
18979 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18980 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18981 }
18982 else
18983 {
18984 halStatus = *((eHalStatus*)pEventData->pEventData);
18985 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18986 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018987 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18988 // directly instead of the FW WQ.
18989 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18990
18991#ifdef WLAN_PERF
18992 // Increment the BD signature to refresh the fast path BD utilization
18993 pWDICtx->uBdSigSerialNum++;
18994#endif
18995
18996 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018997 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018998
Jeff Johnsone7245742012-09-05 17:12:55 -070018999 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019000}/*WDI_ProcessExitUapsdRsp*/
19001
19002/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019003 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019004 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019005
19006 @param pWDICtx: pointer to the WLAN DAL context
19007 pEventData: pointer to the event information structure
19008
Jeff Johnson295189b2012-06-20 16:38:30 -070019009 @see
19010 @return Result of the function call
19011*/
19012WDI_Status
19013WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019014(
Jeff Johnson295189b2012-06-20 16:38:30 -070019015 WDI_ControlBlockType* pWDICtx,
19016 WDI_EventInfoType* pEventData
19017)
19018{
19019 WDI_Status wdiStatus;
19020 eHalStatus halStatus;
19021 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
19022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19023
19024 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019025 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019026 -------------------------------------------------------------------------*/
19027 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19028 ( NULL == pEventData->pEventData))
19029 {
19030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019031 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019032 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019034 }
19035
19036 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
19037
19038 /*-------------------------------------------------------------------------
19039 Extract response and send it to UMAC
19040 -------------------------------------------------------------------------*/
19041 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019042 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019043
19044 /*Notify UMAC*/
19045 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19046
Jeff Johnsone7245742012-09-05 17:12:55 -070019047 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019048}/*WDI_ProcessSetUapsdAcParamsRsp*/
19049
19050/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019051 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019052 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019053
19054 @param pWDICtx: pointer to the WLAN DAL context
19055 pEventData: pointer to the event information structure
19056
Jeff Johnson295189b2012-06-20 16:38:30 -070019057 @see
19058 @return Result of the function call
19059*/
19060WDI_Status
19061WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019062(
Jeff Johnson295189b2012-06-20 16:38:30 -070019063 WDI_ControlBlockType* pWDICtx,
19064 WDI_EventInfoType* pEventData
19065)
19066{
19067 WDI_Status wdiStatus;
19068 eHalStatus halStatus;
19069 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
19070 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19071
19072 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019073 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019074 -------------------------------------------------------------------------*/
19075 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19076 ( NULL == pEventData->pEventData))
19077 {
19078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019079 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019082 }
19083
19084 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19085
19086 /*-------------------------------------------------------------------------
19087 Extract response and send it to UMAC
19088 -------------------------------------------------------------------------*/
19089 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019090 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019091
19092 /*Notify UMAC*/
19093 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19094
Jeff Johnsone7245742012-09-05 17:12:55 -070019095 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019096}/*WDI_ProcessUpdateUapsdParamsRsp*/
19097
19098/**
19099 @brief Process Configure RXP filter Rsp function (called when a
19100 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019101
19102 @param pWDICtx: pointer to the WLAN DAL context
19103 pEventData: pointer to the event information structure
19104
Jeff Johnson295189b2012-06-20 16:38:30 -070019105 @see
19106 @return Result of the function call
19107*/
19108WDI_Status
19109WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019110(
Jeff Johnson295189b2012-06-20 16:38:30 -070019111 WDI_ControlBlockType* pWDICtx,
19112 WDI_EventInfoType* pEventData
19113)
19114{
19115 WDI_Status wdiStatus;
19116 eHalStatus halStatus;
19117 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19119
19120 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019121 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019122 -------------------------------------------------------------------------*/
19123 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19124 ( NULL == pEventData->pEventData))
19125 {
19126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019127 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019130 }
19131
19132 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19133
19134 /*-------------------------------------------------------------------------
19135 Extract response and send it to UMAC
19136 -------------------------------------------------------------------------*/
19137 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019138 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019139
19140 /*Notify UMAC*/
19141 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19142
Jeff Johnsone7245742012-09-05 17:12:55 -070019143 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019144}/*WDI_ProcessConfigureRxpFilterRsp*/
19145
19146/**
19147 @brief Process Set beacon filter Rsp function (called when a
19148 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019149
19150 @param pWDICtx: pointer to the WLAN DAL context
19151 pEventData: pointer to the event information structure
19152
Jeff Johnson295189b2012-06-20 16:38:30 -070019153 @see
19154 @return Result of the function call
19155*/
19156WDI_Status
19157WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019158(
Jeff Johnson295189b2012-06-20 16:38:30 -070019159 WDI_ControlBlockType* pWDICtx,
19160 WDI_EventInfoType* pEventData
19161)
19162{
19163 WDI_Status wdiStatus;
19164 eHalStatus halStatus;
19165 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19167
19168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019170 -------------------------------------------------------------------------*/
19171 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19172 ( NULL == pEventData->pEventData))
19173 {
19174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019175 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019178 }
19179
19180 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19181
19182 /*-------------------------------------------------------------------------
19183 Extract response and send it to UMAC
19184 -------------------------------------------------------------------------*/
19185 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019186 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019187
19188 /*Notify UMAC*/
19189 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19190
Jeff Johnsone7245742012-09-05 17:12:55 -070019191 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019192}/*WDI_ProcessSetBeaconFilterRsp*/
19193
19194/**
19195 @brief Process remove beacon filter Rsp function (called when a
19196 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019197
19198 @param pWDICtx: pointer to the WLAN DAL context
19199 pEventData: pointer to the event information structure
19200
Jeff Johnson295189b2012-06-20 16:38:30 -070019201 @see
19202 @return Result of the function call
19203*/
19204WDI_Status
19205WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019206(
Jeff Johnson295189b2012-06-20 16:38:30 -070019207 WDI_ControlBlockType* pWDICtx,
19208 WDI_EventInfoType* pEventData
19209)
19210{
19211 WDI_Status wdiStatus;
19212 eHalStatus halStatus;
19213 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19215
19216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019217 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019218 -------------------------------------------------------------------------*/
19219 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19220 ( NULL == pEventData->pEventData))
19221 {
19222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019223 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019226 }
19227
19228 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19229
19230 /*-------------------------------------------------------------------------
19231 Extract response and send it to UMAC
19232 -------------------------------------------------------------------------*/
19233 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019234 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019235
19236 /*Notify UMAC*/
19237 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19238
Jeff Johnsone7245742012-09-05 17:12:55 -070019239 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019240}/*WDI_ProcessRemBeaconFilterRsp*/
19241
19242/**
19243 @brief Process set RSSI thresholds Rsp function (called when a
19244 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019245
19246 @param pWDICtx: pointer to the WLAN DAL context
19247 pEventData: pointer to the event information structure
19248
Jeff Johnson295189b2012-06-20 16:38:30 -070019249 @see
19250 @return Result of the function call
19251*/
19252WDI_Status
19253WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019254(
Jeff Johnson295189b2012-06-20 16:38:30 -070019255 WDI_ControlBlockType* pWDICtx,
19256 WDI_EventInfoType* pEventData
19257)
19258{
19259 WDI_Status wdiStatus;
19260 eHalStatus halStatus;
19261 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19263
19264 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019265 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019266 -------------------------------------------------------------------------*/
19267 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19268 ( NULL == pEventData->pEventData))
19269 {
19270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019271 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019272 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019273 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019274 }
19275
19276 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19277
19278 /*-------------------------------------------------------------------------
19279 Extract response and send it to UMAC
19280 -------------------------------------------------------------------------*/
19281 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019282 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019283
19284 /*Notify UMAC*/
19285 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19286
Jeff Johnsone7245742012-09-05 17:12:55 -070019287 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019288}/*WDI_ProcessSetRSSIThresoldsRsp*/
19289
19290/**
19291 @brief Process host offload Rsp function (called when a
19292 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019293
19294 @param pWDICtx: pointer to the WLAN DAL context
19295 pEventData: pointer to the event information structure
19296
Jeff Johnson295189b2012-06-20 16:38:30 -070019297 @see
19298 @return Result of the function call
19299*/
19300WDI_Status
19301WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019302(
Jeff Johnson295189b2012-06-20 16:38:30 -070019303 WDI_ControlBlockType* pWDICtx,
19304 WDI_EventInfoType* pEventData
19305)
19306{
19307 WDI_Status wdiStatus;
19308 eHalStatus halStatus;
19309 WDI_HostOffloadCb wdiHostOffloadCb;
19310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19311
19312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019313 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019314 -------------------------------------------------------------------------*/
19315 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19316 ( NULL == pEventData->pEventData))
19317 {
19318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019319 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019322 }
19323
19324 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19325
19326 /*-------------------------------------------------------------------------
19327 Extract response and send it to UMAC
19328 -------------------------------------------------------------------------*/
19329 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019330 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019331
19332 /*Notify UMAC*/
19333 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19334
Jeff Johnsone7245742012-09-05 17:12:55 -070019335 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019336}/*WDI_ProcessHostOffloadRsp*/
19337
19338/**
19339 @brief Process keep alive Rsp function (called when a
19340 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019341
19342 @param pWDICtx: pointer to the WLAN DAL context
19343 pEventData: pointer to the event information structure
19344
Jeff Johnson295189b2012-06-20 16:38:30 -070019345 @see
19346 @return Result of the function call
19347*/
19348WDI_Status
19349WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019350(
Jeff Johnson295189b2012-06-20 16:38:30 -070019351 WDI_ControlBlockType* pWDICtx,
19352 WDI_EventInfoType* pEventData
19353)
19354{
19355 WDI_Status wdiStatus;
19356 eHalStatus halStatus;
19357 WDI_KeepAliveCb wdiKeepAliveCb;
19358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19360 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19361
19362
19363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019364 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019365 -------------------------------------------------------------------------*/
19366 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19367 ( NULL == pEventData->pEventData))
19368 {
19369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019370 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019371 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019372 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019373 }
19374
Jeff Johnsone7245742012-09-05 17:12:55 -070019375 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19376
Jeff Johnson295189b2012-06-20 16:38:30 -070019377 /*-------------------------------------------------------------------------
19378 Extract response and send it to UMAC
19379 -------------------------------------------------------------------------*/
19380 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019381 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019382
19383 /*Notify UMAC*/
19384 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19385
Jeff Johnsone7245742012-09-05 17:12:55 -070019386 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019387}/*WDI_ProcessKeepAliveRsp*/
19388
19389/**
19390 @brief Process wowl add ptrn Rsp function (called when a
19391 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019392
19393 @param pWDICtx: pointer to the WLAN DAL context
19394 pEventData: pointer to the event information structure
19395
Jeff Johnson295189b2012-06-20 16:38:30 -070019396 @see
19397 @return Result of the function call
19398*/
19399WDI_Status
19400WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019401(
Jeff Johnson295189b2012-06-20 16:38:30 -070019402 WDI_ControlBlockType* pWDICtx,
19403 WDI_EventInfoType* pEventData
19404)
19405{
Jeff Johnson295189b2012-06-20 16:38:30 -070019406 eHalStatus halStatus;
19407 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019408 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19409 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19410
Jeff Johnson295189b2012-06-20 16:38:30 -070019411 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19412
19413 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019414 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019415 -------------------------------------------------------------------------*/
19416 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19417 ( NULL == pEventData->pEventData))
19418 {
19419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019420 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019421 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019423 }
19424
19425 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19426
19427 /*-------------------------------------------------------------------------
19428 Extract response and send it to UMAC
19429 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019430 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19431 {
19432 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19433 pEventData->pEventData,
19434 sizeof(halAddWowlBcastPtrRsp));
19435
19436 wdiWowlAddBcPtrRsp.wdiStatus =
19437 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19438 }
19439 else
19440 {
19441 halStatus = *((eHalStatus*)pEventData->pEventData);
19442 wdiWowlAddBcPtrRsp.wdiStatus =
19443 WDI_HAL_2_WDI_STATUS(halStatus);
19444 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019445
19446 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019447 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019448
Jeff Johnsone7245742012-09-05 17:12:55 -070019449 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019450}/*WDI_ProcessWowlAddBcPtrnRsp*/
19451
19452/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019453 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019454 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019455
19456 @param pWDICtx: pointer to the WLAN DAL context
19457 pEventData: pointer to the event information structure
19458
Jeff Johnson295189b2012-06-20 16:38:30 -070019459 @see
19460 @return Result of the function call
19461*/
19462WDI_Status
19463WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019464(
Jeff Johnson295189b2012-06-20 16:38:30 -070019465 WDI_ControlBlockType* pWDICtx,
19466 WDI_EventInfoType* pEventData
19467)
19468{
Jeff Johnson295189b2012-06-20 16:38:30 -070019469 eHalStatus halStatus;
19470 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019471 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19472 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19474
19475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019476 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019477 -------------------------------------------------------------------------*/
19478 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19479 ( NULL == pEventData->pEventData))
19480 {
19481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019485 }
19486
19487 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19488
19489 /*-------------------------------------------------------------------------
19490 Extract response and send it to UMAC
19491 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019492 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19493 {
19494 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19495 pEventData->pEventData,
19496 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019497
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019498 wdiWowlDelBcstPtrRsp.wdiStatus =
19499 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19500 }
19501 else
19502 {
19503 halStatus = *((eHalStatus*)pEventData->pEventData);
19504 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19505 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019506 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019507 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019508
Jeff Johnsone7245742012-09-05 17:12:55 -070019509 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019510}/*WDI_ProcessWowlDelBcPtrnRsp*/
19511
19512/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019513 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019514 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019515
19516 @param pWDICtx: pointer to the WLAN DAL context
19517 pEventData: pointer to the event information structure
19518
Jeff Johnson295189b2012-06-20 16:38:30 -070019519 @see
19520 @return Result of the function call
19521*/
19522WDI_Status
19523WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019524(
Jeff Johnson295189b2012-06-20 16:38:30 -070019525 WDI_ControlBlockType* pWDICtx,
19526 WDI_EventInfoType* pEventData
19527)
19528{
Jeff Johnson295189b2012-06-20 16:38:30 -070019529 eHalStatus halStatus;
19530 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019531 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19532 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19534
19535 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019536 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019537 -------------------------------------------------------------------------*/
19538 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19539 ( NULL == pEventData->pEventData))
19540 {
19541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019542 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019545 }
19546
19547 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19548
19549 /*-------------------------------------------------------------------------
19550 Extract response and send it to UMAC
19551 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019552 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19553 {
19554 wpalMemoryCopy( &halEnterWowlRspParams,
19555 (wpt_uint8*)pEventData->pEventData,
19556 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019557
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019558 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19559 wdiwowlEnterRsp.status =
19560 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19561 }
19562 else
19563 {
19564 halStatus = *((eHalStatus*)pEventData->pEventData);
19565 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19566 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019567 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019568 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019569
Jeff Johnsone7245742012-09-05 17:12:55 -070019570 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019571}/*WDI_ProcessWowlEnterRsp*/
19572
19573/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019574 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019575 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019576
19577 @param pWDICtx: pointer to the WLAN DAL context
19578 pEventData: pointer to the event information structure
19579
Jeff Johnson295189b2012-06-20 16:38:30 -070019580 @see
19581 @return Result of the function call
19582*/
19583WDI_Status
19584WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019585(
Jeff Johnson295189b2012-06-20 16:38:30 -070019586 WDI_ControlBlockType* pWDICtx,
19587 WDI_EventInfoType* pEventData
19588)
19589{
Jeff Johnson295189b2012-06-20 16:38:30 -070019590 eHalStatus halStatus;
19591 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019592 tHalExitWowlRspParams halExitWowlRspParams;
19593 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19594
Jeff Johnson295189b2012-06-20 16:38:30 -070019595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19596
19597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019598 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019599 -------------------------------------------------------------------------*/
19600 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19601 ( NULL == pEventData->pEventData))
19602 {
19603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019604 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019607 }
19608
19609 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19610
19611 /*-------------------------------------------------------------------------
19612 Extract response and send it to UMAC
19613 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019614 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19615 {
19616 wpalMemoryCopy( &halExitWowlRspParams,
19617 pEventData->pEventData,
19618 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019619
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019620 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19621 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19622
19623 }
19624 else
19625 {
19626 halStatus = *((eHalStatus*)pEventData->pEventData);
19627 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19628 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019629 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019630 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019631
Jeff Johnsone7245742012-09-05 17:12:55 -070019632 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019633}/*WDI_ProcessWowlExitRsp*/
19634
19635/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019636 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019637 (called when a response is being received over the bus
19638 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019639
19640 @param pWDICtx: pointer to the WLAN DAL context
19641 pEventData: pointer to the event information structure
19642
Jeff Johnson295189b2012-06-20 16:38:30 -070019643 @see
19644 @return Result of the function call
19645*/
19646WDI_Status
19647WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019648(
Jeff Johnson295189b2012-06-20 16:38:30 -070019649 WDI_ControlBlockType* pWDICtx,
19650 WDI_EventInfoType* pEventData
19651)
19652{
19653 WDI_Status wdiStatus;
19654 eHalStatus halStatus;
19655 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19657
19658 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019659 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019660 -------------------------------------------------------------------------*/
19661 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19662 ( NULL == pEventData->pEventData))
19663 {
19664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019668 }
19669
19670 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19671
19672 /*-------------------------------------------------------------------------
19673 Extract response and send it to UMAC
19674 -------------------------------------------------------------------------*/
19675 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019676 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019677
19678 /*Notify UMAC*/
19679 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19680
Jeff Johnsone7245742012-09-05 17:12:55 -070019681 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019682}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19683
19684
19685/**
19686 @brief Process Nv download(called when a response
19687 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019688
19689 @param pWDICtx: pointer to the WLAN DAL context
19690 pEventData: pointer to the event information structure
19691
Jeff Johnson295189b2012-06-20 16:38:30 -070019692 @see
19693 @return Result of the function call
19694*/
19695WDI_Status
19696WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019697(
Jeff Johnson295189b2012-06-20 16:38:30 -070019698 WDI_ControlBlockType* pWDICtx,
19699 WDI_EventInfoType* pEventData
19700)
19701{
19702
19703 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19704 tHalNvImgDownloadRspParams halNvDownloadRsp;
19705 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19706
19707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019708 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019709 -------------------------------------------------------------------------*/
19710 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19711 ( NULL == pEventData->pEventData))
19712 {
19713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019717 }
19718
19719 /*-------------------------------------------------------------------------
19720 Extract response and send it to UMAC
19721 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019722 wpalMemoryCopy( &halNvDownloadRsp,
19723 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019724 sizeof(halNvDownloadRsp));
19725
19726 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19727
19728 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019729 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19730 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019731 {
19732 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019733 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019734 }
19735 else
19736 {
19737 /*Reset the Nv related global information in WDI context information */
19738 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19739 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19740 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19741 /*call WDA callback function for last fragment */
19742 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19743 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19744 }
19745
Jeff Johnsone7245742012-09-05 17:12:55 -070019746 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019747}
19748#ifdef WLAN_FEATURE_VOWIFI_11R
19749/**
19750 @brief Process Add TSpec Rsp function (called when a response
19751 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019752
19753 @param pWDICtx: pointer to the WLAN DAL context
19754 pEventData: pointer to the event information structure
19755
Jeff Johnson295189b2012-06-20 16:38:30 -070019756 @see
19757 @return Result of the function call
19758*/
19759WDI_Status
19760WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019761(
Jeff Johnson295189b2012-06-20 16:38:30 -070019762 WDI_ControlBlockType* pWDICtx,
19763 WDI_EventInfoType* pEventData
19764)
19765{
19766 WDI_Status wdiStatus;
19767 tAggrAddTsRspParams aggrAddTsRsp;
19768 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19770
19771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019772 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 -------------------------------------------------------------------------*/
19774 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19775 ( NULL == pEventData->pEventData))
19776 {
19777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019781 }
19782
19783 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19784
19785 /*-------------------------------------------------------------------------
19786 Extract response and send it to UMAC
19787 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019788 wpalMemoryCopy( &aggrAddTsRsp,
19789 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019790 sizeof(aggrAddTsRsp));
19791
19792 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019793 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019794
19795 /*Notify UMAC*/
19796 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19797
Jeff Johnsone7245742012-09-05 17:12:55 -070019798 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019799}/*WDI_ProcessAddTSpecRsp*/
19800#endif /* WLAN_FEATURE_VOWIFI_11R */
19801
19802/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019803 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019804 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019805
19806 @param pWDICtx: pointer to the WLAN DAL context
19807 pEventData: pointer to the event information structure
19808
Jeff Johnson295189b2012-06-20 16:38:30 -070019809 @see
19810 @return Result of the function call
19811*/
19812WDI_Status
19813WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019814(
Jeff Johnson295189b2012-06-20 16:38:30 -070019815 WDI_ControlBlockType* pWDICtx,
19816 WDI_EventInfoType* pEventData
19817)
19818{
19819 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19820 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19821 tHalHostResumeRspParams hostResumeRspMsg;
19822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19823
19824 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019825 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019826 -------------------------------------------------------------------------*/
19827 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19828 ( NULL == pEventData->pEventData))
19829 {
19830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019831 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019832 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019833 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019834 }
19835
19836 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19837
19838 /*-------------------------------------------------------------------------
19839 Extract response and send it to UMAC
19840 -------------------------------------------------------------------------*/
19841
Jeff Johnsone7245742012-09-05 17:12:55 -070019842 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019843 (wpt_uint8*)pEventData->pEventData,
19844 sizeof(hostResumeRspMsg));
19845
Jeff Johnsone7245742012-09-05 17:12:55 -070019846 wdiResumeRspParams.wdiStatus =
19847 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019848
19849 /*Notify UMAC*/
19850 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19851
19852 return WDI_STATUS_SUCCESS;
19853}
19854
19855/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019856 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019857 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019858
19859 @param pWDICtx: pointer to the WLAN DAL context
19860 pEventData: pointer to the event information structure
19861
Jeff Johnson295189b2012-06-20 16:38:30 -070019862 @see
19863 @return Result of the function call
19864*/
19865WDI_Status
19866WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019867(
Jeff Johnson295189b2012-06-20 16:38:30 -070019868 WDI_ControlBlockType* pWDICtx,
19869 WDI_EventInfoType* pEventData
19870)
19871{
19872 WDI_Status wdiStatus;
19873 eHalStatus halStatus;
19874 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19876
19877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019878 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019879 -------------------------------------------------------------------------*/
19880 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19881 ( NULL == pEventData->pEventData))
19882 {
19883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019884 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019885 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019886 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019887 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019888
19889 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019890
19891 /*-------------------------------------------------------------------------
19892 Extract response and send it to UMAC
19893 -------------------------------------------------------------------------*/
19894 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019895 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019896
19897 /*Notify UMAC*/
19898 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19899
Jeff Johnsone7245742012-09-05 17:12:55 -070019900 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019901}/*WDI_ProcessSetTxPerTrackingRsp*/
19902
19903/*==========================================================================
19904 Indications from HAL
19905 ==========================================================================*/
19906/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019907 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019908 indication of this kind is being received over the bus
19909 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019910
19911 @param pWDICtx: pointer to the WLAN DAL context
19912 pEventData: pointer to the event information structure
19913
Jeff Johnson295189b2012-06-20 16:38:30 -070019914 @see
19915 @return Result of the function call
19916*/
19917WDI_Status
19918WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019919(
Jeff Johnson295189b2012-06-20 16:38:30 -070019920 WDI_ControlBlockType* pWDICtx,
19921 WDI_EventInfoType* pEventData
19922)
19923{
19924 WDI_LowLevelIndType wdiInd;
19925 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19927
19928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019929 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019930 -------------------------------------------------------------------------*/
19931 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19932 ( NULL == pEventData->pEventData))
19933 {
19934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019935 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019938 }
19939
19940 /*-------------------------------------------------------------------------
19941 Extract indication and send it to UMAC
19942 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019943 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19944 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019945 sizeof(tHalRSSINotification));
19946
19947 /*Fill in the indication parameters*/
19948 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19949 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19950 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19951 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19952 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19953 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19954 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19955 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19956 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19957 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19958 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19959 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19960 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080019961 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19962 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019963
ltimariub77f24b2013-01-24 18:54:33 -080019964 if ( pWDICtx->wdiLowLevelIndCB )
19965 {
19966 /*Notify UMAC of indication*/
19967 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19968 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019969
19970 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019971}/*WDI_ProcessLowRSSIInd*/
19972
19973
19974/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019975 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019976 an indication of this kind is being received over the
19977 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019978
19979 @param pWDICtx: pointer to the WLAN DAL context
19980 pEventData: pointer to the event information structure
19981
Jeff Johnson295189b2012-06-20 16:38:30 -070019982 @see
19983 @return Result of the function call
19984*/
19985WDI_Status
19986WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019987(
Jeff Johnson295189b2012-06-20 16:38:30 -070019988 WDI_ControlBlockType* pWDICtx,
19989 WDI_EventInfoType* pEventData
19990)
19991{
19992 WDI_Status wdiStatus;
19993 eHalStatus halStatus;
19994 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019995 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19997
19998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019999 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020000 -------------------------------------------------------------------------*/
20001 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20002 ( NULL == pEventData->pEventData))
20003 {
20004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020005 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020006 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020007 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020008 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020009 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020010 /*-------------------------------------------------------------------------
20011 Extract indication and send it to UMAC
20012 -------------------------------------------------------------------------*/
20013 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20014 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020015 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020016
20017 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020018 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020019 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
20020 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080020021 if ( pWDICtx->wdiLowLevelIndCB )
20022 {
20023 /*Notify UMAC*/
20024 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20025 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020026
20027 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020028}/*WDI_ProcessMissedBeaconInd*/
20029
20030
20031/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020032 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020033 an indication of this kind is being received over the
20034 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020035
20036 @param pWDICtx: pointer to the WLAN DAL context
20037 pEventData: pointer to the event information structure
20038
Jeff Johnson295189b2012-06-20 16:38:30 -070020039 @see
20040 @return Result of the function call
20041*/
20042WDI_Status
20043WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020044(
Jeff Johnson295189b2012-06-20 16:38:30 -070020045 WDI_ControlBlockType* pWDICtx,
20046 WDI_EventInfoType* pEventData
20047)
20048{
20049 WDI_Status wdiStatus;
20050 eHalStatus halStatus;
20051 WDI_LowLevelIndType wdiInd;
20052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20053
20054 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020055 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020056 -------------------------------------------------------------------------*/
20057 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20058 ( NULL == pEventData->pEventData))
20059 {
20060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020061 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020064 }
20065
20066 /*-------------------------------------------------------------------------
20067 Extract indication and send it to UMAC
20068 -------------------------------------------------------------------------*/
20069 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20070 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020071 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020072
20073 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020074 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020075 /* ! TO DO - fill in from HAL struct:
20076 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
20077
ltimariub77f24b2013-01-24 18:54:33 -080020078 if ( pWDICtx->wdiLowLevelIndCB )
20079 {
20080 /*Notify UMAC*/
20081 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20082 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020083
20084 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020085}/*WDI_ProcessUnkAddrFrameInd*/
20086
20087
20088/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020089 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020090 indication of this kind is being received over the bus
20091 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020092
20093 @param pWDICtx: pointer to the WLAN DAL context
20094 pEventData: pointer to the event information structure
20095
Jeff Johnson295189b2012-06-20 16:38:30 -070020096 @see
20097 @return Result of the function call
20098*/
20099WDI_Status
20100WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020101(
Jeff Johnson295189b2012-06-20 16:38:30 -070020102 WDI_ControlBlockType* pWDICtx,
20103 WDI_EventInfoType* pEventData
20104)
20105{
20106 WDI_LowLevelIndType wdiInd;
20107 tpSirMicFailureInd pHalMicFailureInd;
20108
20109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20110
20111 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020112 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020113 -------------------------------------------------------------------------*/
20114 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20115 ( NULL == pEventData->pEventData))
20116 {
20117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020118 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020121 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020122
Jeff Johnson295189b2012-06-20 16:38:30 -070020123 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20124 /*-------------------------------------------------------------------------
20125 Extract indication and send it to UMAC
20126 -------------------------------------------------------------------------*/
20127
20128 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020129 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020130 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20131 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20132 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20133 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20134 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20135 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20136 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20137 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020138 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020140 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020141 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020142 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020143 pHalMicFailureInd->info.keyId;
20144 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20145 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20146 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20147 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020148
20149 if ( pWDICtx->wdiLowLevelIndCB )
20150 {
20151 /*Notify UMAC*/
20152 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20153 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020154
20155 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020156}/*WDI_ProcessMicFailureInd*/
20157
20158
20159/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020160 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020161 an indication of this kind is being received over the
20162 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020163
20164 @param pWDICtx: pointer to the WLAN DAL context
20165 pEventData: pointer to the event information structure
20166
Jeff Johnson295189b2012-06-20 16:38:30 -070020167 @see
20168 @return Result of the function call
20169*/
20170WDI_Status
20171WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020172(
Jeff Johnson295189b2012-06-20 16:38:30 -070020173 WDI_ControlBlockType* pWDICtx,
20174 WDI_EventInfoType* pEventData
20175)
20176{
20177 WDI_Status wdiStatus;
20178 eHalStatus halStatus;
20179 WDI_LowLevelIndType wdiInd;
20180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20181
20182 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020183 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020184 -------------------------------------------------------------------------*/
20185 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20186 ( NULL == pEventData->pEventData))
20187 {
20188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020189 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020190 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020191 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020192 }
20193
20194 /*-------------------------------------------------------------------------
20195 Extract indication and send it to UMAC
20196 -------------------------------------------------------------------------*/
20197
20198 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20199 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020200 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020201
20202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20203 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020204
Jeff Johnson295189b2012-06-20 16:38:30 -070020205 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020206 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20207 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020208
ltimariub77f24b2013-01-24 18:54:33 -080020209 if ( pWDICtx->wdiLowLevelIndCB )
20210 {
20211 /*Notify UMAC*/
20212 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20213 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020214
20215 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020216}/*WDI_ProcessFatalErrorInd*/
20217
20218/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020219 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020220 an indication of this kind is being received over the
20221 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020222
20223 @param pWDICtx: pointer to the WLAN DAL context
20224 pEventData: pointer to the event information structure
20225
Jeff Johnson295189b2012-06-20 16:38:30 -070020226 @see
20227 @return Result of the function call
20228*/
20229WDI_Status
20230WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020231(
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 WDI_ControlBlockType* pWDICtx,
20233 WDI_EventInfoType* pEventData
20234)
20235{
20236 tDeleteStaContextParams halDelSTACtx;
20237 WDI_LowLevelIndType wdiInd;
20238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20239
20240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020242 -------------------------------------------------------------------------*/
20243 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20244 ( NULL == pEventData->pEventData))
20245 {
20246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020250 }
20251
20252 /*-------------------------------------------------------------------------
20253 Extract indication and send it to UMAC
20254 -------------------------------------------------------------------------*/
20255
20256 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020257 wpalMemoryCopy( &halDelSTACtx,
20258 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020259 sizeof(halDelSTACtx));
20260
20261 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020262 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020263
20264 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20265 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20266 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20267 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20268
Jeff Johnsone7245742012-09-05 17:12:55 -070020269 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020270 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020271 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020272 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020273 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20274 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020275
ltimariub77f24b2013-01-24 18:54:33 -080020276 if ( pWDICtx->wdiLowLevelIndCB )
20277 {
20278 /*Notify UMAC*/
20279 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20280 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020281
20282 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020283}/*WDI_ProcessDelSTAInd*/
20284
20285/**
20286*@brief Process Coex Indication function (called when
20287 an indication of this kind is being received over the
20288 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020289
20290 @param pWDICtx: pointer to the WLAN DAL context
20291 pEventData: pointer to the event information structure
20292
Jeff Johnson295189b2012-06-20 16:38:30 -070020293 @see
20294 @return Result of the function call
20295*/
20296WDI_Status
20297WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020298(
Jeff Johnson295189b2012-06-20 16:38:30 -070020299 WDI_ControlBlockType* pWDICtx,
20300 WDI_EventInfoType* pEventData
20301)
20302{
20303 WDI_LowLevelIndType wdiInd;
20304 tCoexIndMsg halCoexIndMsg;
20305 wpt_uint32 index;
20306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20307
20308 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020309 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020310 -------------------------------------------------------------------------*/
20311 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20312 ( NULL == pEventData->pEventData ))
20313 {
20314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020315 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020316 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020318 }
20319
20320 /*-------------------------------------------------------------------------
20321 Extract indication and send it to UMAC
20322 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020323 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20324 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020325 sizeof(halCoexIndMsg.coexIndParams) );
20326
20327 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020328 wdiInd.wdiIndicationType = WDI_COEX_IND;
20329 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020330 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20331 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020332 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020333 }
20334
20335 // DEBUG
20336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20337 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020338 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20339 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20340 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20341 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20342 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020343
ltimariub77f24b2013-01-24 18:54:33 -080020344 if ( pWDICtx->wdiLowLevelIndCB )
20345 {
20346 /*Notify UMAC*/
20347 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20348 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020349
20350 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020351}/*WDI_ProcessCoexInd*/
20352
20353/**
20354*@brief Process Tx Complete Indication function (called when
20355 an indication of this kind is being received over the
20356 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020357
20358 @param pWDICtx: pointer to the WLAN DAL context
20359 pEventData: pointer to the event information structure
20360
Jeff Johnson295189b2012-06-20 16:38:30 -070020361 @see
20362 @return Result of the function call
20363*/
20364WDI_Status
20365WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020366(
Jeff Johnson295189b2012-06-20 16:38:30 -070020367 WDI_ControlBlockType* pWDICtx,
20368 WDI_EventInfoType* pEventData
20369)
20370{
20371 WDI_LowLevelIndType wdiInd;
20372 tTxComplIndMsg halTxComplIndMsg;
20373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20374
20375 /*-------------------------------------------------------------------------
20376 Sanity check
20377 -------------------------------------------------------------------------*/
20378 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20379 ( NULL == pEventData->pEventData ))
20380 {
20381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020382 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020383 WDI_ASSERT( 0 );
20384 return WDI_STATUS_E_FAILURE;
20385 }
20386
20387 /*-------------------------------------------------------------------------
20388 Extract indication and send it to UMAC
20389 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020390 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20391 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020392 sizeof(halTxComplIndMsg.txComplParams) );
20393
20394 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020395 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20396 wdiInd.wdiIndicationData.tx_complete_status
20397 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020398
ltimariub77f24b2013-01-24 18:54:33 -080020399 if ( pWDICtx->wdiLowLevelIndCB )
20400 {
20401 /*Notify UMAC*/
20402 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20403 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020404
20405 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020406}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020407#ifdef FEATURE_WLAN_TDLS
20408/**
20409*@brief Process TDLS Indication function (called when
20410 an indication of this kind is being received over the
20411 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020412
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020413 @param pWDICtx: pointer to the WLAN DAL context
20414 pEventData: pointer to the event information structure
20415
20416 @see
20417 @return Result of the function call
20418*/
20419WDI_Status
20420WDI_ProcessTdlsInd
20421(
20422 WDI_ControlBlockType* pWDICtx,
20423 WDI_EventInfoType* pEventData
20424)
20425{
20426 WDI_LowLevelIndType wdiInd;
20427 tTdlsIndMsg halTdlsIndMsg;
20428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20429
20430 /*-------------------------------------------------------------------------
20431 Sanity check
20432 -------------------------------------------------------------------------*/
20433 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20434 ( NULL == pEventData->pEventData ))
20435 {
20436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20437 "%s: Invalid parameters", __func__);
20438 WDI_ASSERT( 0 );
20439 return WDI_STATUS_E_FAILURE;
20440 }
20441
20442 /*-------------------------------------------------------------------------
20443 Extract indication and send it to UMAC
20444 -------------------------------------------------------------------------*/
20445 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20446 pEventData->pEventData,
20447 sizeof(halTdlsIndMsg.tdlsIndParams) );
20448
20449 /*Fill in the indication parameters*/
20450 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20451
20452 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20453 = halTdlsIndMsg.tdlsIndParams.status;
20454
20455 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20456 = halTdlsIndMsg.tdlsIndParams.staIdx;
20457
20458 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20459 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20460
20461 /*Notify UMAC*/
20462 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20463
20464 return WDI_STATUS_SUCCESS;
20465}/*WDI_ProcessTdlsInd*/
20466#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020467/**
Viral Modid86bde22012-12-10 13:09:21 -080020468*@brief Process Noa Start Indication function (called when
20469 an indication of this kind is being received over the
20470 bus from HAL)
20471
20472 @param pWDICtx: pointer to the WLAN DAL context
20473 pEventData: pointer to the event information structure
20474
20475 @see
20476 @return Result of the function call
20477*/
20478WDI_Status
20479WDI_ProcessP2pNoaStartInd
20480(
20481 WDI_ControlBlockType* pWDICtx,
20482 WDI_EventInfoType* pEventData
20483)
20484{
20485 WDI_LowLevelIndType wdiInd;
20486 tNoaStartIndMsg halNoaStartIndMsg;
20487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20488
20489 /*-------------------------------------------------------------------------
20490 Sanity check
20491 -------------------------------------------------------------------------*/
20492 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20493 ( NULL == pEventData->pEventData ))
20494 {
20495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20496 "%s: Invalid parameters", __func__);
20497 WDI_ASSERT( 0 );
20498 return WDI_STATUS_E_FAILURE;
20499 }
20500
20501 /*-------------------------------------------------------------------------
20502 Extract indication and send it to UMAC
20503 -------------------------------------------------------------------------*/
20504 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20505 pEventData->pEventData,
20506 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20507
20508 /*Fill in the indication parameters*/
20509 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20510
20511 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20512 = halNoaStartIndMsg.noaStartIndParams.status;
20513
20514 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20515 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20516
20517 /*Notify UMAC*/
20518 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20519
20520 return WDI_STATUS_SUCCESS;
20521}/*WDI_ProcessNoaAttrInd*/
20522
20523/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020524*@brief Process Noa Attr Indication function (called when
20525 an indication of this kind is being received over the
20526 bus from HAL)
20527
20528 @param pWDICtx: pointer to the WLAN DAL context
20529 pEventData: pointer to the event information structure
20530
20531 @see
20532 @return Result of the function call
20533*/
20534WDI_Status
20535WDI_ProcessP2pNoaAttrInd
20536(
20537 WDI_ControlBlockType* pWDICtx,
20538 WDI_EventInfoType* pEventData
20539)
20540{
20541 WDI_LowLevelIndType wdiInd;
20542 tNoaAttrIndMsg halNoaAttrIndMsg;
20543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20544
20545 /*-------------------------------------------------------------------------
20546 Sanity check
20547 -------------------------------------------------------------------------*/
20548 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20549 ( NULL == pEventData->pEventData ))
20550 {
20551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020552 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020553 WDI_ASSERT( 0 );
20554 return WDI_STATUS_E_FAILURE;
20555 }
20556
20557 /*-------------------------------------------------------------------------
20558 Extract indication and send it to UMAC
20559 -------------------------------------------------------------------------*/
20560 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20561 pEventData->pEventData,
20562 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20563
20564 /*Fill in the indication parameters*/
20565 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020566
Jeff Johnson295189b2012-06-20 16:38:30 -070020567 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20568 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020569
Jeff Johnson295189b2012-06-20 16:38:30 -070020570 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20571 = halNoaAttrIndMsg.noaAttrIndParams.index;
20572 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20573 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20574 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20575 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020576
Jeff Johnson295189b2012-06-20 16:38:30 -070020577 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20578 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20579 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20580 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20581 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20582 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20583 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20584 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020585
Jeff Johnson295189b2012-06-20 16:38:30 -070020586 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20587 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20588 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20589 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20590 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20591 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20592 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20593 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20594
ltimariub77f24b2013-01-24 18:54:33 -080020595 if ( pWDICtx->wdiLowLevelIndCB )
20596 {
20597 /*Notify UMAC*/
20598 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20599 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020600
20601 return WDI_STATUS_SUCCESS;
20602}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020603
20604/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020605 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020606 an indication of this kind is being received over the
20607 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020608
20609 @param pWDICtx: pointer to the WLAN DAL context
20610 pEventData: pointer to the event information structure
20611
Jeff Johnson295189b2012-06-20 16:38:30 -070020612 @see
20613 @return Result of the function call
20614*/
20615WDI_Status
20616WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020617(
Jeff Johnson295189b2012-06-20 16:38:30 -070020618 WDI_ControlBlockType* pWDICtx,
20619 WDI_EventInfoType* pEventData
20620)
20621{
20622 WDI_LowLevelIndType wdiInd;
20623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020624
Jeff Johnson295189b2012-06-20 16:38:30 -070020625 /*-------------------------------------------------------------------------
20626 Extract indication and send it to UMAC
20627 -------------------------------------------------------------------------*/
20628 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020629 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20630
ltimariub77f24b2013-01-24 18:54:33 -080020631 if ( pWDICtx->wdiLowLevelIndCB )
20632 {
20633 /*Notify UMAC*/
20634 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20635 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020636
Jeff Johnsone7245742012-09-05 17:12:55 -070020637 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020638}/*WDI_ProcessTxPerHitInd*/
20639
Jeff Johnson295189b2012-06-20 16:38:30 -070020640/**
Yue Mab9c86f42013-08-14 15:59:08 -070020641 @brief Process Periodic Tx Pattern Fw Indication function
20642
20643 @param pWDICtx: pointer to the WLAN DAL context
20644 pEventData: pointer to the event information structure
20645
20646 @see
20647 @return Result of the function call
20648*/
20649WDI_Status
20650WDI_ProcessPeriodicTxPtrnFwInd
20651(
20652 WDI_ControlBlockType* pWDICtx,
20653 WDI_EventInfoType* pEventData
20654)
20655{
20656 WDI_LowLevelIndType wdiInd;
20657
20658 /*-------------------------------------------------------------------------
20659 Sanity check
20660 -------------------------------------------------------------------------*/
20661 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20662 (NULL == pEventData->pEventData))
20663 {
20664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20665 "%s: Invalid parameters", __func__);
20666 WDI_ASSERT(0);
20667 return WDI_STATUS_E_FAILURE;
20668 }
20669
20670 /*-------------------------------------------------------------------------
20671 Extract indication and send it to UMAC
20672 -------------------------------------------------------------------------*/
20673 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20674 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20675 sizeof(tHalPeriodicTxPtrnFwInd));
20676
20677 if (pWDICtx->wdiLowLevelIndCB)
20678 {
20679 /*Notify UMAC*/
20680 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20681 }
20682
20683 return WDI_STATUS_SUCCESS;
20684}
20685
20686/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020687 @brief WDI_ProcessFTMCommandReq
20688 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020689
20690 @param pWDICtx: pointer to the WLAN DAL context
20691 pEventData: pointer to the event information structure
20692
Jeff Johnson295189b2012-06-20 16:38:30 -070020693 @see
20694 @return Result of the function call
20695*/
20696WDI_Status
20697WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020698(
Jeff Johnson295189b2012-06-20 16:38:30 -070020699 WDI_ControlBlockType* pWDICtx,
20700 WDI_EventInfoType* pEventData
20701)
20702{
20703 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20704 wpt_uint8 *ftmCommandBuffer = NULL;
20705 wpt_uint16 dataOffset;
20706 wpt_uint16 bufferSize;
20707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020708 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020709 -------------------------------------------------------------------------*/
20710 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20711 ( NULL == pEventData->pEventData))
20712
20713 {
20714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020715 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020718 }
20719
20720 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20721
20722 /* Get MSG Buffer */
20723 WDI_GetMessageBuffer(pWDICtx,
20724 WDI_FTM_CMD_REQ,
20725 ftmCommandReq->bodyLength,
20726 &ftmCommandBuffer,
20727 &dataOffset,
20728 &bufferSize);
20729
20730 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20731 ftmCommandReq->FTMCommandBody,
20732 ftmCommandReq->bodyLength);
20733
20734 /* Send MSG */
20735 return WDI_SendMsg(pWDICtx,
20736 ftmCommandBuffer,
20737 bufferSize,
20738 pEventData->pCBfnc,
20739 pEventData->pUserData,
20740 WDI_FTM_CMD_RESP);
20741}
20742
20743/**
20744 @brief WDI_ProcessFTMCommandRsp
20745 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020746
20747 @param pWDICtx: pointer to the WLAN DAL context
20748 pEventData: pointer to the event information structure
20749
Jeff Johnson295189b2012-06-20 16:38:30 -070020750 @see
20751 @return Result of the function call
20752*/
20753WDI_Status
20754WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020755(
Jeff Johnson295189b2012-06-20 16:38:30 -070020756 WDI_ControlBlockType* pWDICtx,
20757 WDI_EventInfoType* pEventData
20758)
20759{
20760 WDI_FTMCommandRspCb ftmCMDRspCb;
20761 tProcessPttRspParams *ftmCMDRspData = NULL;
20762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20763
20764 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020765 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020766 -------------------------------------------------------------------------*/
20767 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20768 ( NULL == pEventData->pEventData))
20769 {
20770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020771 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020772 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020774 }
20775
20776 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20777
20778 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20779
Jeff Johnsone7245742012-09-05 17:12:55 -070020780 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20781 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020782 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20783
20784 /*Notify UMAC*/
20785 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20786
Jeff Johnsone7245742012-09-05 17:12:55 -070020787 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020788}
Jeff Johnson295189b2012-06-20 16:38:30 -070020789/**
20790 @brief WDI_ProcessHalDumpCmdReq
20791 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020792
20793 @param pWDICtx: pointer to the WLAN DAL context
20794 pEventData: pointer to the event information structure
20795
Jeff Johnson295189b2012-06-20 16:38:30 -070020796 @see
20797 @return Result of the function call
20798*/
20799WDI_Status
20800WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020801(
Jeff Johnson295189b2012-06-20 16:38:30 -070020802 WDI_ControlBlockType* pWDICtx,
20803 WDI_EventInfoType* pEventData
20804)
20805{
20806 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20807 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20808 wpt_uint16 usDataOffset = 0;
20809 wpt_uint16 usSendSize = 0;
20810 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020811 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020812
20813 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020814 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020815 -------------------------------------------------------------------------*/
20816 if (( NULL == pEventData ) ||
20817 ( NULL == pEventData->pEventData) ||
20818 ( NULL == pEventData->pCBfnc ))
20819 {
20820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020821 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020824 }
20825
20826 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20827 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20828
20829 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020830 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020831 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020832 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020833 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020834 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020835 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020836 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020837 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020838 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020839 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020840
Jeff Johnson295189b2012-06-20 16:38:30 -070020841 /*-----------------------------------------------------------------------
20842 Get message buffer
20843 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020844 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020845 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20846 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020847 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020848 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20849 {
20850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080020851 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070020852 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20853 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020855 }
20856
Jeff Johnsone7245742012-09-05 17:12:55 -070020857 wpalMemoryCopy( pSendBuffer+usDataOffset,
20858 &halDumpCmdReqMsg.dumpCmdReqParams,
20859 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020860
20861 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020862 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020863
20864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020865 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020866 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020867 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20868 wdiHALDumpCmdRspCb, pEventData->pUserData,
20869 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020870}
20871
20872/**
20873 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020874 Process hal Dump Command Response from HAL, simply route to HDD
20875
20876 @param pWDICtx: pointer to the WLAN DAL context
20877 pEventData: pointer to the event information structure
20878
Jeff Johnson295189b2012-06-20 16:38:30 -070020879 @see
20880 @return Result of the function call
20881*/
20882WDI_Status
20883WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020884(
Jeff Johnson295189b2012-06-20 16:38:30 -070020885 WDI_ControlBlockType* pWDICtx,
20886 WDI_EventInfoType* pEventData
20887)
20888{
20889 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020890 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020891 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20892
20893 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020894 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020895 -------------------------------------------------------------------------*/
20896 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20897 ( NULL == pEventData->pEventData))
20898 {
20899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020900 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020901 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020902 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020903 }
20904
Jeff Johnsone7245742012-09-05 17:12:55 -070020905 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020906
20907 /*Initialize the WDI Response structure */
20908 wdiHALDumpCmdRsp.usBufferLen = 0;
20909 wdiHALDumpCmdRsp.pBuffer = NULL;
20910
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020911 wpalMemoryCopy( &halDumpCmdRspParams,
20912 pEventData->pEventData,
20913 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020914
20915 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020916 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020917
20918 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020919 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020920 {
20921 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020922 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20923 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20924
20925 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20926 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053020927 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020928 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020929
Jeff Johnson295189b2012-06-20 16:38:30 -070020930 /*Notify UMAC*/
20931 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20932
20933 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20934 {
20935 /* Free the allocated buffer */
20936 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20937 }
20938 return WDI_STATUS_SUCCESS;
20939}
20940
20941/*==========================================================================
20942 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020943
Jeff Johnson295189b2012-06-20 16:38:30 -070020944 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020945 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020946==========================================================================*/
20947/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020948 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020949 when it wishes to send up a notification like the ones
20950 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020951
Jeff Johnson295189b2012-06-20 16:38:30 -070020952 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020953
20954 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020955 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020956 wctsNotifyCBData: the callback data of the user
20957
Jeff Johnson295189b2012-06-20 16:38:30 -070020958 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020959
20960 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020961*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020962void
Jeff Johnson295189b2012-06-20 16:38:30 -070020963WDI_NotifyMsgCTSCB
20964(
Jeff Johnsone7245742012-09-05 17:12:55 -070020965 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020966 WCTS_NotifyEventType wctsEvent,
20967 void* wctsNotifyCBData
20968)
20969{
Jeff Johnsone7245742012-09-05 17:12:55 -070020970 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20972
20973 if (NULL == pWDICtx )
20974 {
20975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020977 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020978 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020979 }
20980
20981 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20982 {
20983 /* callback presumably occurred after close */
20984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020985 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020986 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020987 }
20988
20989 if ( WCTS_EVENT_OPEN == wctsEvent )
20990 {
20991 /*Flag must be set atomically as it is checked from incoming request
20992 functions*/
20993 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020994 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020995
20996 /*Nothing to do - so try to dequeue any pending request that may have
20997 occurred while we were trying to establish this*/
20998 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020999 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021001 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070021002 {
21003 /*Flag must be set atomically as it is checked from incoming request
21004 functions*/
21005 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021006 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021007
21008 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021009 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021010 wpalMutexRelease(&pWDICtx->wptMutex);
21011
21012 /*Notify that the Control Channel is closed */
21013 wpalEventSet(&pWDICtx->wctsActionEvent);
21014 }
21015
21016}/*WDI_NotifyMsgCTSCB*/
21017
21018
21019/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021020 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021021 when it wishes to send up a packet received over the
21022 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070021023
Jeff Johnson295189b2012-06-20 16:38:30 -070021024 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021025
21026 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021027 pMsg: the packet
21028 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070021029 wctsRxMsgCBData: the callback data of the user
21030
Jeff Johnson295189b2012-06-20 16:38:30 -070021031 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021032
21033 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021034*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021035void
21036WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070021037(
Jeff Johnsone7245742012-09-05 17:12:55 -070021038 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021039 void* pMsg,
21040 wpt_uint32 uLen,
21041 void* wctsRxMsgCBData
21042)
21043{
Jeff Johnsone7245742012-09-05 17:12:55 -070021044 tHalMsgHeader *pHalMsgHeader;
21045 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021046 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
21047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21048
21049 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021050 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021051 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021052 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070021053 ( uLen < sizeof(tHalMsgHeader)))
21054 {
21055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021056 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021057 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021058 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021059 }
21060
21061 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21062 {
21063 /* callback presumably occurred after close */
21064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021065 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021066 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021067 }
21068
Jeff Johnsone7245742012-09-05 17:12:55 -070021069 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070021070 context - so no serialization is necessary here
21071 ! - revisit this assumption */
21072
21073 pHalMsgHeader = (tHalMsgHeader *)pMsg;
21074
21075 if ( uLen != pHalMsgHeader->msgLen )
21076 {
21077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21078 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070021079 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
21080 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 }
21082
21083 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21084
21085 /*The message itself starts after the header*/
21086 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21087 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21088 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21089 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21090
21091
21092 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21093 {
21094 /*Stop the timer as the response was received */
21095 /*!UT - check for potential race conditions between stop and response */
21096 wpalTimerStop(&pWDICtx->wptResponseTimer);
21097 }
21098 /* Check if we receive a response message which is not expected */
21099 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21100 {
21101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21102 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21103 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021104 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021105 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21106 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021107
21108 if (gWDICb.bEnableSSR == false)
21109 {
21110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21111 "SSR is not enabled on WDI timeout");
21112 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21113 return;
21114 }
21115 wpalWcnssResetIntr();
21116 /* if this timer fires, it means Riva did not receive the FIQ */
21117 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21118
Jeff Johnson295189b2012-06-20 16:38:30 -070021119 return;
21120 }
21121
21122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21123 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21124
21125 /*Post response event to the state machine*/
21126 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21127
21128}/*WDI_RXMsgCTSCB*/
21129
21130
21131/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021132 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021133========================================================================*/
21134
21135/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021136 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021137 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021138
Jeff Johnson295189b2012-06-20 16:38:30 -070021139 @param pWDICtx - pointer to the control block
21140
21141 @return Result of the function call
21142*/
21143WPT_INLINE WDI_Status
21144WDI_CleanCB
21145(
21146 WDI_ControlBlockType* pWDICtx
21147)
21148{
21149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21150
21151 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021152 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021153
Jeff Johnsone7245742012-09-05 17:12:55 -070021154 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021155 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21156 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21157
21158 WDI_ResetAssocSessions( pWDICtx );
21159
21160 return WDI_STATUS_SUCCESS;
21161}/*WDI_CleanCB*/
21162
21163
21164/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021165 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021166
Jeff Johnsone7245742012-09-05 17:12:55 -070021167
21168 @param pWDICtx: pointer to the WLAN DAL context
21169 pEventData: pointer to the event information structure
21170
Jeff Johnson295189b2012-06-20 16:38:30 -070021171 @see
21172 @return Result of the function call
21173*/
21174WPT_INLINE WDI_Status
21175WDI_ProcessRequest
21176(
21177 WDI_ControlBlockType* pWDICtx,
21178 WDI_EventInfoType* pEventData
21179)
21180{
21181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21182
Jeff Johnsone7245742012-09-05 17:12:55 -070021183 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021184 already checked these pointers*/
21185
21186 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21187 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021188 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021190 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021191 WDI_getReqMsgString(pEventData->wdiRequest),
21192 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21193 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21194 }
21195 else
21196 {
21197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021198 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021199 pEventData->wdiRequest);
21200 return WDI_STATUS_E_NOT_IMPLEMENT;
21201 }
21202}/*WDI_ProcessRequest*/
21203
21204
21205/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021206 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021207 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021208 prefixes it with a send message header
21209
21210 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021211 wdiReqType: type of the request being sent
21212 uBufferLen: message buffer len
21213 pMsgBuffer: resulting allocated buffer
21214 pusDataOffset: offset in the buffer where the caller
21215 can start copying its message data
21216 puBufferSize: the resulting buffer size (offset+buff
21217 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021218
Jeff Johnson295189b2012-06-20 16:38:30 -070021219 @see
21220 @return Result of the function call
21221*/
21222WDI_Status
21223WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021224(
21225 WDI_ControlBlockType* pWDICtx,
21226 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021227 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021228 wpt_uint8** pMsgBuffer,
21229 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021230 wpt_uint16* pusBufferSize
21231)
21232{
21233 tHalMsgHeader halMsgHeader;
21234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21235
Jeff Johnsone7245742012-09-05 17:12:55 -070021236 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021237 again*/
21238
21239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021240 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021241 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021242 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021243 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21244 if ( NULL == *pMsgBuffer )
21245 {
21246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21247 "Unable to allocate message buffer for req %s (%d)",
21248 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021249 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021251 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 }
21253
21254 /*-------------------------------------------------------------------------
21255 Fill in the message header
21256 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021257 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21258 /* Fill msgVersion */
21259#ifdef WLAN_FEATURE_11AC
21260 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021261 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 else
21263#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021264 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021265
Jeff Johnsone7245742012-09-05 17:12:55 -070021266 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21267 *pusDataOffset = sizeof(halMsgHeader);
21268 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21269
21270 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021271}/*WDI_GetMessageBuffer*/
21272
21273
21274/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021275 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021276 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021277 the CB
21278
21279 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021280 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021281
Jeff Johnson295189b2012-06-20 16:38:30 -070021282 usSendSize size of the buffer to be sent
21283 pRspCb: response callback - save in the WDI
21284 CB
21285 pUserData: user data associated with the
21286 callback
21287 wdiExpectedResponse: the code of the response that is
21288 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021289
Jeff Johnson295189b2012-06-20 16:38:30 -070021290 @see
21291 @return Result of the function call
21292*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021293WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021294WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021295(
21296 WDI_ControlBlockType* pWDICtx,
21297 wpt_uint8* pSendBuffer,
21298 wpt_uint32 usSendSize,
21299 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021300 void* pUserData,
21301 WDI_ResponseEnumType wdiExpectedResponse
21302)
21303{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021304 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021305 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21307
21308 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021309 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021310 ------------------------------------------------------------------------*/
21311 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021312 pWDICtx->pfncRspCB = pRspCb;
21313 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021314
21315 /*-----------------------------------------------------------------------
21316 Call the CTS to send this message over - free message afterwards
21317 - notify transport failure
21318 Note: CTS is reponsible for freeing the message buffer.
21319 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021320 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21321 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21322 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021323 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021325 "Failed to send message over the bus - catastrophic failure");
21326
Jeff Johnsond13512a2012-07-17 11:42:19 -070021327 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021328 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021329 else
21330 {
21331 /* even when message was placed in CTS deferred Q, we will treat it
21332 success but log this info
21333 */
21334 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21335 {
21336 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21337 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21338 "response %s (%d)",
21339 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21340 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021341 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021342 }
21343 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021344
Jeff Johnsond13512a2012-07-17 11:42:19 -070021345 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021346 if ( NULL != pWDICtx->wdiReqStatusCB )
21347 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021348 /*Inform originator whether request went through or not*/
21349 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21350 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021351 pWDICtx->wdiReqStatusCB = NULL;
21352 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021353 callback(wdiStatus, callbackContext);
21354
21355 /*For WDI requests which have registered a request callback,
21356 inform the WDA caller of the same via setting the return value
21357 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21358 end up repeating the functonality in the req callback for the
21359 WDI_STATUS_E_FAILURE case*/
21360 if (wdiStatus == WDI_STATUS_E_FAILURE)
21361 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021362 }
21363
Jeff Johnsond13512a2012-07-17 11:42:19 -070021364 if ( wdiStatus == WDI_STATUS_SUCCESS )
21365 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021366 /*Start timer for the expected response */
21367 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021368
21369 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021370 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021371 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021372 }
21373 else
21374 {
Jeff Johnson902c9832012-12-10 14:28:09 -080021375 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021376 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21377 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021378
Jeff Johnsond13512a2012-07-17 11:42:19 -070021379 return wdiStatus;
21380
Jeff Johnson295189b2012-06-20 16:38:30 -070021381}/*WDI_SendMsg*/
21382
21383
21384
21385/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021386 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021387 the bus using the control transport and saves some info
21388 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021389
21390 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021391 pSendBuffer: buffer to be sent
21392 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021393
Jeff Johnson295189b2012-06-20 16:38:30 -070021394 @see
21395 @return Result of the function call
21396*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021397WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021398WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021399(
21400 WDI_ControlBlockType* pWDICtx,
21401 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021402 wpt_uint32 usSendSize
21403)
21404{
21405 wpt_uint32 uStatus ;
21406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21407
21408 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021409 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021410 Note: CTS is reponsible for freeing the message buffer.
21411 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021412 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021413 (void*)pSendBuffer, usSendSize );
21414
21415 /*Inform Upper MAC about the outcome of the request*/
21416 if ( NULL != pWDICtx->wdiReqStatusCB )
21417 {
21418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21419 "Send indication status : %d", uStatus);
21420
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021421 /* even if CTS placed indication into its deferred Q, we treat it
21422 * as success and let CTS drain its queue as per smd interrupt to CTS
21423 */
21424 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 -070021425 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021426 }
21427
21428 /*If sending of the message failed - it is considered catastrophic and
21429 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021430 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21431 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21432
Jeff Johnson295189b2012-06-20 16:38:30 -070021433 {
21434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021435 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021436
21437 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21438 return WDI_STATUS_E_FAILURE;
21439 }
21440
Jeff Johnsone7245742012-09-05 17:12:55 -070021441 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021442}/*WDI_SendIndication*/
21443
21444
21445/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021446 @brief WDI_DetectedDeviceError - called internally by DAL when
21447 it has detected a failure in the device
21448
21449 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021450 usErrorCode: error code detected by WDI or received
21451 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021452
Jeff Johnson295189b2012-06-20 16:38:30 -070021453 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021454 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021455*/
21456void
21457WDI_DetectedDeviceError
21458(
21459 WDI_ControlBlockType* pWDICtx,
21460 wpt_uint16 usErrorCode
21461)
21462{
21463 WDI_LowLevelIndType wdiInd;
21464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21465
21466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21467 "Device Error detected code: %d - transitioning to stopped state",
21468 usErrorCode);
21469
21470 wpalMutexAcquire(&pWDICtx->wptMutex);
21471
21472 WDI_STATableStop(pWDICtx);
21473
21474 WDI_ResetAssocSessions(pWDICtx);
21475
21476 /*Set the expected state transition to stopped - because the device
21477 experienced a failure*/
21478 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21479
21480 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021481 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021482
Jeff Johnsone7245742012-09-05 17:12:55 -070021483 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021484
21485 /*TO DO: - there should be an attempt to reset the device here*/
21486
21487 wpalMutexRelease(&pWDICtx->wptMutex);
21488
21489 /*------------------------------------------------------------------------
21490 Notify UMAC if a handler is registered
21491 ------------------------------------------------------------------------*/
21492 if (pWDICtx->wdiLowLevelIndCB)
21493 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021494 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21495 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021496
21497 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21498 }
21499}/*WDI_DetectedDeviceError*/
21500
21501/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021502 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021503 we started on send message has expire - this should
21504 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021505 reply - trigger catastrophic failure
21506 @param
21507
Jeff Johnson295189b2012-06-20 16:38:30 -070021508 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021509
21510 @see
21511 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021512*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021513void
Jeff Johnson295189b2012-06-20 16:38:30 -070021514WDI_ResponseTimerCB
21515(
21516 void *pUserData
21517)
21518{
21519 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21521
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021522 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021523 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021527 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021528 }
21529
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021530 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021531 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021532 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021533
21534 /* If response timer is running at this time that means this timer
21535 * event is not for the last request but rather last-to-last request and
21536 * this timer event has come after we recevied respone for last-to-last
21537 * message
21538 */
21539 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21540 {
21541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21542 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021543 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021544 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21546 "uArchTimeStampTmrStart: %llu seconds, "
21547 "uArchTimeStampTmrExp: %llu seconds",
21548 pWDICtx->uArchTimeStampRspTmrStart,
21549 pWDICtx->uArchTimeStampRspTmrExp);
21550
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021551 return;
21552 }
21553
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021554 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021555 {
21556
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021558 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021559 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070021560 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021561 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21562 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21564 "uArchTimeStampTmrStart: %llu seconds, "
21565 "uArchTimeStampTmrExp: %llu seconds",
21566 pWDICtx->uArchTimeStampRspTmrStart,
21567 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021568
21569 /* WDI timeout means Riva is not responding or SMD communication to Riva
21570 * is not happening. The only possible way to recover from this error
21571 * is to initiate SSR from APPS.
21572 * There is also an option to re-enable wifi, which will eventually
21573 * trigger SSR
21574 */
21575 if (gWDICb.bEnableSSR == false)
21576 {
21577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21578 "SSR is not enabled on WDI timeout");
21579 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21580 return;
21581 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021582#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021583 wpalWcnssResetIntr();
Katya Nigam921bf202014-02-26 14:52:24 +053021584 if(wpalIsWDresetInProgress())
21585 {
21586 wpalDevicePanic();
21587 }
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021588 /* if this timer fires, it means Riva did not receive the FIQ */
21589 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021590#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021591 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21592 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021593#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021594 }
21595 else
21596 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021598 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021599 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021600 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21601 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21603 "uArchTimeStampTmrStart: %llu seconds, "
21604 "uArchTimeStampTmrExp: %llu seconds",
21605 pWDICtx->uArchTimeStampRspTmrStart,
21606 pWDICtx->uArchTimeStampRspTmrExp);
21607
Jeff Johnson295189b2012-06-20 16:38:30 -070021608 }
21609
21610 return;
21611
21612}/*WDI_ResponseTimerCB*/
21613
21614
21615/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021616 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021617
Jeff Johnsone7245742012-09-05 17:12:55 -070021618
21619 @param pWDICtx: pointer to the WLAN DAL context
21620 pEventData: pointer to the event information structure
21621
Jeff Johnson295189b2012-06-20 16:38:30 -070021622 @see
21623 @return Result of the function call
21624*/
21625WPT_INLINE WDI_Status
21626WDI_ProcessResponse
21627(
21628 WDI_ControlBlockType* pWDICtx,
21629 WDI_EventInfoType* pEventData
21630)
21631{
21632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21633
Jeff Johnsone7245742012-09-05 17:12:55 -070021634 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021635 already checked these pointers
21636 ! - revisit this assumption */
21637 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21638 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021639 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021641 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021642 WDI_getRespMsgString(pEventData->wdiResponse),
21643 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21644 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21645 }
21646 else
21647 {
21648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021649 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021650 pEventData->wdiResponse);
21651 return WDI_STATUS_E_NOT_IMPLEMENT;
21652 }
21653}/*WDI_ProcessResponse*/
21654
21655
21656/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021657 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021658=========================================================================*/
21659
21660/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021661 @brief Utility function used by the DAL Core to help queue a
21662 request that cannot be processed right away.
21663 @param
21664
Jeff Johnson295189b2012-06-20 16:38:30 -070021665 pWDICtx: - pointer to the WDI control block
21666 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021667 queued
21668
21669 @see
21670 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021671*/
21672WDI_Status
21673WDI_QueuePendingReq
21674(
21675 WDI_ControlBlockType* pWDICtx,
21676 WDI_EventInfoType* pEventData
21677)
21678{
Jeff Johnsone7245742012-09-05 17:12:55 -070021679 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021680 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021681 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21683
21684 if ( NULL == pEventDataQueue )
21685 {
21686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021687 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021688 WDI_ASSERT(0);
21689 return WDI_STATUS_MEM_FAILURE;
21690 }
21691
21692 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21693 pEventDataQueue->pUserData = pEventData->pUserData;
21694 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21695 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021696 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021697
21698 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21699 {
21700 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021701
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 if ( NULL == pEventInfo )
21703 {
21704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021705 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021706 WDI_ASSERT(0);
21707 wpalMemoryFree(pEventDataQueue);
21708 return WDI_STATUS_MEM_FAILURE;
21709 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021710
Jeff Johnson295189b2012-06-20 16:38:30 -070021711 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21712
21713 }
21714 pEventDataQueue->pEventData = pEventInfo;
21715
21716 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021717 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021718
Jeff Johnsone7245742012-09-05 17:12:55 -070021719 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021720
21721 return WDI_STATUS_SUCCESS;
21722}/*WDI_QueuePendingReq*/
21723
21724/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021725 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021726 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021727 @param
21728
21729 pMsg - pointer to the message
21730
21731 @see
21732 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021733*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021734void
Jeff Johnson295189b2012-06-20 16:38:30 -070021735WDI_PALCtrlMsgCB
21736(
21737 wpt_msg *pMsg
21738)
21739{
21740 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021741 WDI_ControlBlockType* pWDICtx = NULL;
21742 WDI_Status wdiStatus;
21743 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021744 void* pUserData;
21745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21746
21747 if (( NULL == pMsg )||
21748 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21749 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21750 {
21751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021752 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021754 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021755 }
21756
21757 /*Transition back to the state that we had before serialization
21758 - serialization transitions us to BUSY to stop any incomming requests
21759 ! TO DO L: possible race condition here if a request comes in between the
21760 state transition and the post function*/
21761
Jeff Johnsone7245742012-09-05 17:12:55 -070021762 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021763
21764 /*-----------------------------------------------------------------------
21765 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021766 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021767 -----------------------------------------------------------------------*/
21768 switch ( pEventData->wdiRequest )
21769 {
21770
Jeff Johnsone7245742012-09-05 17:12:55 -070021771 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021772 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21773 break;
21774
Jeff Johnson295189b2012-06-20 16:38:30 -070021775 case WDI_NV_DOWNLOAD_REQ:
21776 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21777 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21778 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21779 {
21780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021781 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021782 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21783 }
21784 else
21785 {
21786 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21787 }
21788
21789 break;
21790
21791 default:
21792 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21793 break;
21794 }/*switch ( pEventData->wdiRequest )*/
21795
21796 if ( WDI_STATUS_SUCCESS != wdiStatus )
21797 {
21798 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21799
21800 if ( NULL != pfnReqStatusCB )
21801 {
21802 /*Fail the request*/
21803 pfnReqStatusCB( wdiStatus, pUserData);
21804 }
21805 }
21806
21807 /* Free data - that was allocated when queueing*/
21808 if( pEventData != NULL )
21809 {
21810 if( pEventData->pEventData != NULL )
21811 {
21812 wpalMemoryFree(pEventData->pEventData);
21813 }
21814 wpalMemoryFree(pEventData);
21815 }
21816
21817 if( pMsg != NULL )
21818 {
21819 wpalMemoryFree(pMsg);
21820 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021821
Jeff Johnson295189b2012-06-20 16:38:30 -070021822}/*WDI_PALCtrlMsgCB*/
21823
21824/**
21825 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021826 and schedule for execution a pending request
21827 @param
21828
Jeff Johnson295189b2012-06-20 16:38:30 -070021829 pWDICtx: - pointer to the WDI control block
21830 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021831 queued
21832
21833 @see
21834 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021835*/
21836WDI_Status
21837WDI_DequeuePendingReq
21838(
21839 WDI_ControlBlockType* pWDICtx
21840)
21841{
Jeff Johnsone7245742012-09-05 17:12:55 -070021842 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021843 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021844 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21846
Jeff Johnsone7245742012-09-05 17:12:55 -070021847 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021848
21849 if ( NULL == pNode )
21850 {
21851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021852 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021853 return WDI_STATUS_SUCCESS;
21854 }
21855
21856 /*The node actually points to the 1st element inside the Event Data struct -
21857 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021858 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021859
21860 /*Serialize processing in the control thread
21861 !TO DO: - check to see if these are all the messages params that need
21862 to be filled in*/
21863 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21864
21865 if ( NULL == palMsg )
21866 {
21867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021868 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021870 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021871 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021872 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021873 palMsg->callback = WDI_PALCtrlMsgCB;
21874 palMsg->ptr = pEventData;
21875
21876 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021877 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080021878 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021879
Jeff Johnson295189b2012-06-20 16:38:30 -070021880 /*Transition back to BUSY as we need to handle a queued request*/
21881 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021882
Jeff Johnson295189b2012-06-20 16:38:30 -070021883 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21884
21885 return WDI_STATUS_PENDING;
21886}/*WDI_DequeuePendingReq*/
21887
21888
21889/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021890 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021891 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021892 away.- The assoc requests will be queued by BSSID
21893 @param
21894
Jeff Johnson295189b2012-06-20 16:38:30 -070021895 pWDICtx: - pointer to the WDI control block
21896 pEventData: pointer to the evnt info that needs to be queued
21897 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021898
21899 @see
21900 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021901*/
21902WDI_Status
21903WDI_QueueNewAssocRequest
21904(
21905 WDI_ControlBlockType* pWDICtx,
21906 WDI_EventInfoType* pEventData,
21907 wpt_macAddr macBSSID
21908)
21909{
Jeff Johnsone7245742012-09-05 17:12:55 -070021910 wpt_uint8 i;
21911 WDI_BSSSessionType* pSession = NULL;
21912 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021913 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021914 void* pEventInfo;
21915 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021917
Jeff Johnsone7245742012-09-05 17:12:55 -070021918
21919 /*------------------------------------------------------------------------
21920 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021921 ------------------------------------------------------------------------*/
21922 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21923 {
21924 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21925 {
21926 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021927 pSession = &pWDICtx->aBSSSessions[i];
21928 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021929 }
21930 }
21931
21932 if ( i >= WDI_MAX_BSS_SESSIONS )
21933 {
21934 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021936 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021937
Jeff Johnson295189b2012-06-20 16:38:30 -070021938 /*------------------------------------------------------------------------
21939 Fill in the BSSID for this session and set the usage flag
21940 ------------------------------------------------------------------------*/
21941 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021942 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021943
21944 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021945 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021946 ------------------------------------------------------------------------*/
21947 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21948 if ( NULL == pEventDataQueue )
21949 {
21950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021951 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021952 WDI_ASSERT(0);
21953 return WDI_STATUS_MEM_FAILURE;
21954 }
21955
21956 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21957 if ( NULL == pSessionIdElement )
21958 {
21959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021960 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021961 WDI_ASSERT(0);
21962 wpalMemoryFree(pEventDataQueue);
21963 return WDI_STATUS_MEM_FAILURE;
21964 }
21965
21966 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21967 if ( NULL == pEventInfo )
21968 {
21969 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021970 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021971 WDI_ASSERT(0);
21972 wpalMemoryFree(pSessionIdElement);
21973 wpalMemoryFree(pEventDataQueue);
21974 return WDI_STATUS_MEM_FAILURE;
21975 }
21976
21977 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21978 pEventDataQueue->pUserData = pEventData->pUserData;
21979 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21980 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021981 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021982
21983 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21984 pEventDataQueue->pEventData = pEventInfo;
21985
21986 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021987 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021988
21989 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021990 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021991
Jeff Johnsone7245742012-09-05 17:12:55 -070021992 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021993
21994 /*We need to maintain a separate list that keeps track of the order in which
21995 the new assoc requests are being queued such that we can start processing
21996 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021997 pSessionIdElement->ucIndex = i;
21998 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021999
22000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22001 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022002 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022003
22004 /*Return pending as this is what the status of the request is since it has
22005 been queued*/
22006 return WDI_STATUS_PENDING;
22007}/*WDI_QueueNewAssocRequest*/
22008
22009/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022010 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022011 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022012 away.- The assoc requests will be queued by BSSID
22013 @param
22014
Jeff Johnson295189b2012-06-20 16:38:30 -070022015 pWDICtx: - pointer to the WDI control block
22016 pSession: - session in which to queue
22017 pEventData: pointer to the event info that needs to be
22018 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070022019
22020 @see
22021 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022022*/
22023WDI_Status
22024WDI_QueueAssocRequest
22025(
22026 WDI_ControlBlockType* pWDICtx,
22027 WDI_BSSSessionType* pSession,
22028 WDI_EventInfoType* pEventData
22029)
22030{
Jeff Johnsone7245742012-09-05 17:12:55 -070022031 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022032 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022033 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070022034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022035
22036 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022037 Sanity check
22038 ------------------------------------------------------------------------*/
22039 if (( NULL == pSession ) || ( NULL == pWDICtx ))
22040 {
22041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022043
Jeff Johnsone7245742012-09-05 17:12:55 -070022044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022045 }
22046
22047 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022048 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022049 ------------------------------------------------------------------------*/
22050 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22051 if ( NULL == pEventDataQueue )
22052 {
22053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022054 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022055 WDI_ASSERT(0);
22056 return WDI_STATUS_MEM_FAILURE;
22057 }
22058
22059 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22060 if ( NULL == pEventInfo )
22061 {
22062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22063 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022064 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022065 WDI_ASSERT(0);
22066 wpalMemoryFree(pEventDataQueue);
22067 return WDI_STATUS_MEM_FAILURE;
22068 }
22069
22070 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22071 pEventDataQueue->pUserData = pEventData->pUserData;
22072 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22073 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022074 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022075 pEventDataQueue->pEventData = pEventInfo;
22076
22077 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22078
22079 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022080 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022081
22082 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022083 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022084
Jeff Johnsone7245742012-09-05 17:12:55 -070022085 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022086
22087 /*The result of this operation is pending because the request has been
22088 queued and it will be processed at a later moment in time */
22089 return WDI_STATUS_PENDING;
22090}/*WDI_QueueAssocRequest*/
22091
22092/**
22093 @brief Utility function used by the DAL Core to help dequeue
22094 an association request that was pending
22095 The request will be queued up in front of the main
22096 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022097 @param
22098
Jeff Johnson295189b2012-06-20 16:38:30 -070022099 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022100
22101
22102 @see
22103 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022104*/
22105WDI_Status
22106WDI_DequeueAssocRequest
22107(
22108 WDI_ControlBlockType* pWDICtx
22109)
22110{
Jeff Johnsone7245742012-09-05 17:12:55 -070022111 wpt_list_node* pNode = NULL;
22112 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022113 WDI_BSSSessionType* pSession;
22114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022115
22116 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 Sanity check
22118 ------------------------------------------------------------------------*/
22119 if ( NULL == pWDICtx )
22120 {
22121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022122 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022123
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022125 }
22126
22127 /*------------------------------------------------------------------------
22128 An association has been completed => a new association can occur
22129 Check to see if there are any pending associations ->
22130 If so , transfer all the pending requests into the busy queue for
22131 processing
22132 These requests have arrived prior to the requests in the busy queue
22133 (bc they needed to be processed in order to be placed in this queue)
22134 => they will be placed at the front of the busy queue
22135 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022136 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022137
22138 if ( NULL == pNode )
22139 {
22140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022141 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022142 return WDI_STATUS_SUCCESS;
22143 }
22144
22145 /*The node actually points to the 1st element inside the Session Id struct -
22146 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022147 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022148
22149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22150 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
22151
22152 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
22153 {
22154 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070022155
Jeff Johnson295189b2012-06-20 16:38:30 -070022156 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070022157 the front of the main waiting queue for subsequent execution*/
22158 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022159 while ( NULL != pNode )
22160 {
22161 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022162 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22163 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022164 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022165 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022166 }
22167 else
22168 {
22169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022170 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022171 WPAL_ASSERT(0);
22172 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022174 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022175
Jeff Johnson295189b2012-06-20 16:38:30 -070022176 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22177 wpalMemoryFree(pSessionIdElement);
22178 return WDI_STATUS_SUCCESS;
22179}/*WDI_DequeueAssocRequest*/
22180
22181/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022182 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022183 pending requests - all req cb will be called with
22184 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022185 @param
22186
Jeff Johnson295189b2012-06-20 16:38:30 -070022187 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022188
22189 @see
22190 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022191*/
22192WDI_Status
22193WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022194(
Jeff Johnson295189b2012-06-20 16:38:30 -070022195 WDI_ControlBlockType* pWDICtx
22196)
22197{
Jeff Johnsone7245742012-09-05 17:12:55 -070022198 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022199 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022200 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022201 void* pUserData;
22202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22203
Jeff Johnsone7245742012-09-05 17:12:55 -070022204 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022205
22206 /*------------------------------------------------------------------------
22207 Go through all the requests and fail them - this will only be called
22208 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022209 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022210 ------------------------------------------------------------------------*/
22211 while( pNode )
22212 {
22213 /*The node actually points to the 1st element inside the Event Data struct -
22214 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022215 pEventDataQueue = (WDI_EventInfoType*)pNode;
22216
Jeff Johnson295189b2012-06-20 16:38:30 -070022217 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22218 if ( NULL != pfnReqStatusCB )
22219 {
22220 /*Fail the request*/
22221 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22222 }
22223 /* Free data - that was allocated when queueing */
22224 if ( pEventDataQueue->pEventData != NULL )
22225 {
22226 wpalMemoryFree(pEventDataQueue->pEventData);
22227 }
22228 wpalMemoryFree(pEventDataQueue);
22229
22230 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22231 {
22232 break;
22233 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022234 }
22235
Jeff Johnson295189b2012-06-20 16:38:30 -070022236 return WDI_STATUS_SUCCESS;
22237}/*WDI_ClearPendingRequests*/
22238
22239/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022240 @brief Helper routine used to init the BSS Sessions in the WDI control block
22241
22242
22243 @param pWDICtx: pointer to the WLAN DAL context
22244
Jeff Johnson295189b2012-06-20 16:38:30 -070022245 @see
22246*/
22247void
22248WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022249(
Jeff Johnson295189b2012-06-20 16:38:30 -070022250 WDI_ControlBlockType* pWDICtx
22251)
22252{
Jeff Johnsone7245742012-09-05 17:12:55 -070022253 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22255
22256 /*-------------------------------------------------------------------------
22257 No Sanity check
22258 -------------------------------------------------------------------------*/
22259 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22260 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022261 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022262 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22263 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22264 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22265 }
22266}/*WDI_ResetAssocSessions*/
22267
22268/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022269 @brief Helper routine used to find a session based on the BSSID
22270
22271
22272 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022273 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022274 pSession: pointer to the session (if found)
22275
Jeff Johnson295189b2012-06-20 16:38:30 -070022276 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022277 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022278*/
22279wpt_uint8
22280WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022281(
Jeff Johnson295189b2012-06-20 16:38:30 -070022282 WDI_ControlBlockType* pWDICtx,
22283 wpt_macAddr macBSSID,
22284 WDI_BSSSessionType** ppSession
22285)
22286{
Jeff Johnsone7245742012-09-05 17:12:55 -070022287 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22289
22290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022291 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022292 -------------------------------------------------------------------------*/
22293 if ( NULL == ppSession )
22294 {
22295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022296 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022297 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022298 }
22299
Jeff Johnsone7245742012-09-05 17:12:55 -070022300 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022301
Jeff Johnsone7245742012-09-05 17:12:55 -070022302 /*------------------------------------------------------------------------
22303 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022304 ------------------------------------------------------------------------*/
22305 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22306 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022307 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22308 (eWLAN_PAL_TRUE ==
22309 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22310 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 {
22312 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022313 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022314 return i;
22315 }
22316 }
22317
Jeff Johnsone7245742012-09-05 17:12:55 -070022318 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022319}/*WDI_FindAssocSession*/
22320
22321/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022322 @brief Helper routine used to find a session based on the BSSID
22323
22324
22325 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022326 ucBSSIdx: BSS Index of the session
22327 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022328
Jeff Johnson295189b2012-06-20 16:38:30 -070022329 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022330 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022331*/
22332wpt_uint8
22333WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022334(
Jeff Johnson295189b2012-06-20 16:38:30 -070022335 WDI_ControlBlockType* pWDICtx,
22336 wpt_uint16 ucBSSIdx,
22337 WDI_BSSSessionType** ppSession
22338)
22339{
Jeff Johnsone7245742012-09-05 17:12:55 -070022340 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22342
22343 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022344 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022345 -------------------------------------------------------------------------*/
22346 if ( NULL == ppSession )
22347 {
22348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022349 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022350 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022351 }
22352
Jeff Johnsone7245742012-09-05 17:12:55 -070022353 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022354
Jeff Johnsone7245742012-09-05 17:12:55 -070022355 /*------------------------------------------------------------------------
22356 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022357 ------------------------------------------------------------------------*/
22358 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22359 {
22360 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22361 {
22362 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022363 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022364 return i;
22365 }
22366 }
22367
Jeff Johnsone7245742012-09-05 17:12:55 -070022368 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022369}/*WDI_FindAssocSessionByBSSIdx*/
22370
22371/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022372 @brief Helper routine used to find a session based on the BSSID
22373
22374
22375 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 ucBSSIdx: BSS Index of the session
22377 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022378
Jeff Johnson295189b2012-06-20 16:38:30 -070022379 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022380 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022381*/
22382wpt_uint8
22383WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022384(
Jeff Johnson295189b2012-06-20 16:38:30 -070022385 WDI_ControlBlockType* pWDICtx,
22386 wpt_uint16 usIdx,
22387 WDI_BSSSessionType** ppSession
22388)
22389{
22390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22391
22392 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022393 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022394 -------------------------------------------------------------------------*/
22395 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22396 {
22397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022398 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022399 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022400 }
22401
22402 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022403 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022404
22405 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022406
Jeff Johnson295189b2012-06-20 16:38:30 -070022407}/*WDI_FindAssocSessionByBSSIdx*/
22408
22409/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022410 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022411 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022412
22413
22414 @param pWDICtx: pointer to the WLAN DAL context
22415 pSession: pointer to the session (if found)
22416
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022418 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022419*/
22420wpt_uint8
22421WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022422(
Jeff Johnson295189b2012-06-20 16:38:30 -070022423 WDI_ControlBlockType* pWDICtx,
22424 WDI_BSSSessionType** ppSession
22425)
22426{
Jeff Johnsone7245742012-09-05 17:12:55 -070022427 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022430 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022431 -------------------------------------------------------------------------*/
22432 if ( NULL == ppSession )
22433 {
22434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022435 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022436 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 }
22438
Jeff Johnsone7245742012-09-05 17:12:55 -070022439 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022440
Jeff Johnsone7245742012-09-05 17:12:55 -070022441 /*------------------------------------------------------------------------
22442 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 ------------------------------------------------------------------------*/
22444 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22445 {
22446 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22447 {
22448 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022449 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022450 return i;
22451 }
22452 }
22453
Jeff Johnsone7245742012-09-05 17:12:55 -070022454 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022455}/*WDI_FindEmptySession*/
22456
22457
22458/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022459 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022460 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022461
22462
22463 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022464 macBSSID: pointer to BSSID. If NULL, get all the session.
22465 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22466 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22467 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022468 @see
22469 @return Number of sessions in use
22470*/
22471wpt_uint8
22472WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022473(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022474 WDI_ControlBlockType* pWDICtx,
22475 wpt_macAddr macBSSID,
22476 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022477)
22478{
Jeff Johnsone7245742012-09-05 17:12:55 -070022479 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022481
22482 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022483 Count all sessions in use
22484 ------------------------------------------------------------------------*/
22485 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22486 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022487 if ( macBSSID && skipBSSID &&
22488 (eWLAN_PAL_TRUE ==
22489 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22490 WDI_MAC_ADDR_LEN)))
22491 {
22492 continue;
22493 }
22494 else if ( pWDICtx->aBSSSessions[i].bInUse )
22495 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022496 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022497 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022498 }
22499
Jeff Johnsone7245742012-09-05 17:12:55 -070022500 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022501}/*WDI_GetActiveSessionsCount*/
22502
22503/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022504 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022505 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022506
22507
22508 @param pWDICtx: pointer to the WLAN DAL context
22509 pSession: pointer to the session (if found)
22510
Jeff Johnson295189b2012-06-20 16:38:30 -070022511 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022512 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022513*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022514void
Jeff Johnson295189b2012-06-20 16:38:30 -070022515WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022516(
Jeff Johnson295189b2012-06-20 16:38:30 -070022517 WDI_ControlBlockType* pWDICtx,
22518 WDI_BSSSessionType* ppSession
22519)
22520{
22521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022522 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022523 -------------------------------------------------------------------------*/
22524 if ( NULL == ppSession )
22525 {
22526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022527 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022528 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022529 }
22530
Jeff Johnsone7245742012-09-05 17:12:55 -070022531 /*------------------------------------------------------------------------
22532 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022533 ------------------------------------------------------------------------*/
22534 wpal_list_destroy(&ppSession->wptPendingQueue);
22535 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022536 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22537 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022538 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22539 wpal_list_init(&ppSession->wptPendingQueue);
22540
22541}/*WDI_DeleteSession*/
22542
22543/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022544 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022545 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022546 @param
22547
Jeff Johnson295189b2012-06-20 16:38:30 -070022548 WDI_AddStaParams: - pointer to the WDI Add STA params
22549 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022550
22551 @see
22552 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022553*/
22554void
22555WDI_AddBcastSTAtoSTATable
22556(
22557 WDI_ControlBlockType* pWDICtx,
22558 WDI_AddStaParams * staParams,
22559 wpt_uint16 usBcastStaIdx
22560)
22561{
22562 WDI_AddStaParams wdiAddSTAParam = {0};
22563 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22565
22566 /*---------------------------------------------------------------------
22567 Sanity check
22568 ---------------------------------------------------------------------*/
22569 if ( NULL == staParams )
22570 {
22571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022572 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022573
Jeff Johnsone7245742012-09-05 17:12:55 -070022574 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022575 }
22576
22577 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22578 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22579 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22580 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22581 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22582 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22583 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22584 WDI_MAC_ADDR_LEN );
22585 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22586 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22587 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22588 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22589 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22590 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22591 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022592
Jeff Johnson295189b2012-06-20 16:38:30 -070022593 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22594}
22595
22596/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022597 @brief NV blob will be divided into fragments of size 4kb and
22598 Sent to HAL
22599
22600 @param pWDICtx: pointer to the WLAN DAL context
22601 pEventData: pointer to the event information structure
22602
Jeff Johnson295189b2012-06-20 16:38:30 -070022603 @see
22604 @return Result of the function call
22605 */
22606
22607WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022608(
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 WDI_ControlBlockType* pWDICtx,
22610 WDI_EventInfoType* pEventData
22611)
22612{
22613
22614 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22615 wpt_uint8* pSendBuffer = NULL;
22616 wpt_uint16 usDataOffset = 0;
22617 wpt_uint16 usSendSize = 0;
22618 wpt_uint16 usCurrentFragmentSize =0;
22619 wpt_uint8* pSrcBuffer = NULL;
22620 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22621 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22622
22623 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22624 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22625 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22626
Jeff Johnsone7245742012-09-05 17:12:55 -070022627 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022628 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22629
22630 /* Update the current Fragment Number */
22631 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22632
22633 /*Update the HAL REQ structure */
22634 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22635 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22636 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22637
22638 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022639 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022640 image will be sent to HAL*/
22641
Jeff Johnsone7245742012-09-05 17:12:55 -070022642 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022643 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022644 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022645 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022646 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022647 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22648 usCurrentFragmentSize = FRAGMENT_SIZE;
22649
22650 /*Update the HAL REQ structure */
22651 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22652 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22653
22654 }
22655 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022656 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022657 usCurrentFragmentSize = FRAGMENT_SIZE;
22658
22659 /*Update the HAL REQ structure */
22660 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22661 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22662 }
22663
22664 /*-----------------------------------------------------------------------
22665 Get message buffer
22666 -----------------------------------------------------------------------*/
22667 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22668 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22669 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022670 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022671 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22672 {
22673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022674 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022675 pEventData, pwdiNvDownloadReqParams);
22676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022678 }
22679
22680 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022681 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022682 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22683
22684 /* Appending the NV image fragment */
22685 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22686 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22687 usCurrentFragmentSize);
22688
22689 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022690 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022691
Jeff Johnsone7245742012-09-05 17:12:55 -070022692 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22693 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022694 WDI_NV_DOWNLOAD_RESP);
22695
22696}
Jeff Johnsone7245742012-09-05 17:12:55 -070022697/*============================================================================
22698 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022699 ============================================================================*/
22700/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022701 @brief Helper routine used to find a session based on the BSSID
22702 @param pContext: pointer to the WLAN DAL context
22703 @param pDPContext: pointer to the Datapath context
22704
Jeff Johnson295189b2012-06-20 16:38:30 -070022705 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022706 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022707*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022708WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022709WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22710{
22711 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22712
22713 pCB->pDPContext = pDPContext;
22714 return;
22715}
22716
22717/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022718 @brief Helper routine used to find a session based on the BSSID
22719
22720
22721 @param pContext: pointer to the WLAN DAL context
22722
Jeff Johnson295189b2012-06-20 16:38:30 -070022723 @see
22724 @return pointer to Datapath context
22725*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022726WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022727WDI_DS_GetDatapathContext (void *pContext)
22728{
22729 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22730 return pCB->pDPContext;
22731}
22732/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022733 @brief Helper routine used to find a session based on the BSSID
22734
22735
22736 @param pContext: pointer to the WLAN DAL context
22737 @param pDTDriverContext: pointer to the Transport Driver context
22738
Jeff Johnson295189b2012-06-20 16:38:30 -070022739 @see
22740 @return void
22741*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022742WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022743WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22744{
22745 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22746
22747 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022748 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022749}
22750
22751/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022752 @brief Helper routine used to find a session based on the BSSID
22753
22754
22755 @param pWDICtx: pointer to the WLAN DAL context
22756
Jeff Johnson295189b2012-06-20 16:38:30 -070022757 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022758 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022759*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022760WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022761WDT_GetTransportDriverContext (void *pContext)
22762{
22763 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022764 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022765}
22766
Jeff Johnsone7245742012-09-05 17:12:55 -070022767/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022768 Helper inline converters
22769 ============================================================================*/
22770/*Convert WDI driver type into HAL driver type*/
22771WPT_STATIC WPT_INLINE WDI_Status
22772WDI_HAL_2_WDI_STATUS
22773(
22774 eHalStatus halStatus
22775)
22776{
Jeff Johnsone7245742012-09-05 17:12:55 -070022777 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022778 the chances of getting inlined*/
22779 switch( halStatus )
22780 {
22781 case eHAL_STATUS_SUCCESS:
22782 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22783 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22784 return WDI_STATUS_SUCCESS;
22785 case eHAL_STATUS_FAILURE:
22786 return WDI_STATUS_E_FAILURE;
22787 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022788 return WDI_STATUS_MEM_FAILURE;
22789 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022790 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022791 default:
22792 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22793 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022794
Jeff Johnsone7245742012-09-05 17:12:55 -070022795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022796}/*WDI_HAL_2_WDI_STATUS*/
22797
22798/*Convert WDI request type into HAL request type*/
22799WPT_STATIC WPT_INLINE tHalHostMsgType
22800WDI_2_HAL_REQ_TYPE
22801(
22802 WDI_RequestEnumType wdiReqType
22803)
22804{
Jeff Johnsone7245742012-09-05 17:12:55 -070022805 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022806 the chances of getting inlined*/
22807 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022808 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022809 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022810 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022811 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022812 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022813 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022814 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022815 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022816 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022817 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022818 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022819 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022820 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022821 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022822 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022823 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022824 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022825 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022826 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022827 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022828 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022829 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022830 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022831 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022832 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022833 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022834 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022835 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022836 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022837 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022838 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022839 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022840 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022841 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022842 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022843 return WLAN_HAL_RMV_STAKEY_REQ;
22844 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022845 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022846 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022847 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022848 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022849 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022850 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022851 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022852 case WDI_DEL_BA_REQ:
22853 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080022854#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070022855 case WDI_TSM_STATS_REQ:
22856 return WLAN_HAL_TSM_STATS_REQ;
22857#endif
22858 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022859 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022860 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022861 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022862 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022863 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022864 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022865 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022866 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022867 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022868 case WDI_ADD_BA_SESSION_REQ:
22869 return WLAN_HAL_ADD_BA_SESSION_REQ;
22870 case WDI_TRIGGER_BA_REQ:
22871 return WLAN_HAL_TRIGGER_BA_REQ;
22872 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022873 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022874 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022875 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022876 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22877 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22878 case WDI_SET_MAX_TX_POWER_REQ:
22879 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070022880 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
22881 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070022882 case WDI_SET_TX_POWER_REQ:
22883 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022884 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22885 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053022886#ifdef FEATURE_WLAN_TDLS
22887 case WDI_TDLS_LINK_ESTABLISH_REQ:
22888 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22889#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022890 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022891 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022892 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022893 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022894 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022895 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022896 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022897 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022898 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022899 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022900 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022901 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022902 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022903 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022904 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022905 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022906 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022907 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022908 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022909 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022910 case WDI_REM_BEACON_FILTER_REQ:
22911 return WLAN_HAL_REM_BCN_FILTER_REQ;
22912 case WDI_SET_RSSI_THRESHOLDS_REQ:
22913 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22914 case WDI_HOST_OFFLOAD_REQ:
22915 return WLAN_HAL_HOST_OFFLOAD_REQ;
22916 case WDI_WOWL_ADD_BC_PTRN_REQ:
22917 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22918 case WDI_WOWL_DEL_BC_PTRN_REQ:
22919 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22920 case WDI_WOWL_ENTER_REQ:
22921 return WLAN_HAL_ENTER_WOWL_REQ;
22922 case WDI_WOWL_EXIT_REQ:
22923 return WLAN_HAL_EXIT_WOWL_REQ;
22924 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22925 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22926 case WDI_NV_DOWNLOAD_REQ:
22927 return WLAN_HAL_DOWNLOAD_NV_REQ;
22928 case WDI_FLUSH_AC_REQ:
22929 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22930 case WDI_BTAMP_EVENT_REQ:
22931 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22932#ifdef WLAN_FEATURE_VOWIFI_11R
22933 case WDI_AGGR_ADD_TS_REQ:
22934 return WLAN_HAL_AGGR_ADD_TS_REQ;
22935#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022936 case WDI_FTM_CMD_REQ:
22937 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022938 case WDI_ADD_STA_SELF_REQ:
22939 return WLAN_HAL_ADD_STA_SELF_REQ;
22940 case WDI_DEL_STA_SELF_REQ:
22941 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022942#ifdef FEATURE_OEM_DATA_SUPPORT
22943 case WDI_START_OEM_DATA_REQ:
22944 return WLAN_HAL_START_OEM_DATA_REQ;
22945#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022946 case WDI_HOST_RESUME_REQ:
22947 return WLAN_HAL_HOST_RESUME_REQ;
22948 case WDI_HOST_SUSPEND_IND:
22949 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080022950 case WDI_TRAFFIC_STATS_IND:
22951 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070022952#ifdef WLAN_FEATURE_11W
22953 case WDI_EXCLUDE_UNENCRYPTED_IND:
22954 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22955#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022956 case WDI_KEEP_ALIVE_REQ:
22957 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070022958#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070022959 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22960 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070022961#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022962#ifdef FEATURE_WLAN_SCAN_PNO
22963 case WDI_SET_PREF_NETWORK_REQ:
22964 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22965 case WDI_SET_RSSI_FILTER_REQ:
22966 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22967 case WDI_UPDATE_SCAN_PARAMS_REQ:
22968 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22969#endif // FEATURE_WLAN_SCAN_PNO
22970 case WDI_SET_TX_PER_TRACKING_REQ:
22971 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22972#ifdef WLAN_FEATURE_PACKET_FILTERING
22973 case WDI_8023_MULTICAST_LIST_REQ:
22974 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22975 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022976 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022977 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22978 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22979 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22980 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22981#endif // WLAN_FEATURE_PACKET_FILTERING
22982 case WDI_HAL_DUMP_CMD_REQ:
22983 return WLAN_HAL_DUMP_COMMAND_REQ;
22984#ifdef WLAN_FEATURE_GTK_OFFLOAD
22985 case WDI_GTK_OFFLOAD_REQ:
22986 return WLAN_HAL_GTK_OFFLOAD_REQ;
22987 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22988 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22989#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22990
22991 case WDI_INIT_SCAN_CON_REQ:
22992 return WLAN_HAL_INIT_SCAN_CON_REQ;
22993 case WDI_SET_POWER_PARAMS_REQ:
22994 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22995 case WDI_SET_TM_LEVEL_REQ:
22996 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22997 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22998 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022999#ifdef WLAN_FEATURE_11AC
23000 case WDI_UPDATE_VHT_OP_MODE_REQ:
23001 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
23002#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023003 case WDI_GET_ROAM_RSSI_REQ:
23004 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053023005 case WDI_DHCP_START_IND:
23006 return WLAN_HAL_DHCP_START_IND;
23007 case WDI_DHCP_STOP_IND:
23008 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023009#ifdef FEATURE_WLAN_LPHB
23010 case WDI_LPHB_CFG_REQ:
23011 return WLAN_HAL_LPHB_CFG_REQ;
23012#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070023013 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
23014 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
23015 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
23016 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
23017
Rajeev79dbe4c2013-10-05 11:03:42 +053023018#ifdef FEATURE_WLAN_BATCH_SCAN
23019 case WDI_SET_BATCH_SCAN_REQ:
23020 return WLAN_HAL_BATCHSCAN_SET_REQ;
23021 case WDI_STOP_BATCH_SCAN_IND:
23022 return WLAN_HAL_BATCHSCAN_STOP_IND;
23023 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
23024 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
23025#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070023026 case WDI_RATE_UPDATE_IND:
23027 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053023028 case WDI_START_HT40_OBSS_SCAN_IND:
23029 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
23030 case WDI_STOP_HT40_OBSS_SCAN_IND:
23031 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023032 case WDI_UPDATE_CHAN_REQ:
23033 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023034 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023035 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023036 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023037
Jeff Johnson295189b2012-06-20 16:38:30 -070023038}/*WDI_2_HAL_REQ_TYPE*/
23039
23040/*Convert WDI response type into HAL response type*/
23041WPT_STATIC WPT_INLINE WDI_ResponseEnumType
23042HAL_2_WDI_RSP_TYPE
23043(
23044 tHalHostMsgType halMsg
23045)
23046{
Jeff Johnsone7245742012-09-05 17:12:55 -070023047 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023048 the chances of getting inlined*/
23049 switch( halMsg )
23050 {
23051 case WLAN_HAL_START_RSP:
23052 return WDI_START_RESP;
23053 case WLAN_HAL_STOP_RSP:
23054 return WDI_STOP_RESP;
23055 case WLAN_HAL_INIT_SCAN_RSP:
23056 return WDI_INIT_SCAN_RESP;
23057 case WLAN_HAL_START_SCAN_RSP:
23058 return WDI_START_SCAN_RESP;
23059 case WLAN_HAL_END_SCAN_RSP:
23060 return WDI_END_SCAN_RESP;
23061 case WLAN_HAL_FINISH_SCAN_RSP:
23062 return WDI_FINISH_SCAN_RESP;
23063 case WLAN_HAL_CONFIG_STA_RSP:
23064 return WDI_CONFIG_STA_RESP;
23065 case WLAN_HAL_DELETE_STA_RSP:
23066 return WDI_DEL_STA_RESP;
23067 case WLAN_HAL_CONFIG_BSS_RSP:
23068 return WDI_CONFIG_BSS_RESP;
23069 case WLAN_HAL_DELETE_BSS_RSP:
23070 return WDI_DEL_BSS_RESP;
23071 case WLAN_HAL_JOIN_RSP:
23072 return WDI_JOIN_RESP;
23073 case WLAN_HAL_POST_ASSOC_RSP:
23074 return WDI_POST_ASSOC_RESP;
23075 case WLAN_HAL_SET_BSSKEY_RSP:
23076 return WDI_SET_BSS_KEY_RESP;
23077 case WLAN_HAL_SET_STAKEY_RSP:
23078 return WDI_SET_STA_KEY_RESP;
23079 case WLAN_HAL_RMV_BSSKEY_RSP:
23080 return WDI_RMV_BSS_KEY_RESP;
23081 case WLAN_HAL_RMV_STAKEY_RSP:
23082 return WDI_RMV_STA_KEY_RESP;
23083 case WLAN_HAL_SET_BCASTKEY_RSP:
23084 return WDI_SET_STA_BCAST_KEY_RESP;
23085 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
23086 // return WDI_RMV_STA_BCAST_KEY_RESP;
23087 case WLAN_HAL_ADD_TS_RSP:
23088 return WDI_ADD_TS_RESP;
23089 case WLAN_HAL_DEL_TS_RSP:
23090 return WDI_DEL_TS_RESP;
23091 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
23092 return WDI_UPD_EDCA_PRMS_RESP;
23093 case WLAN_HAL_ADD_BA_RSP:
23094 return WDI_ADD_BA_RESP;
23095 case WLAN_HAL_DEL_BA_RSP:
23096 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023097#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023098 case WLAN_HAL_TSM_STATS_RSP:
23099 return WDI_TSM_STATS_RESP;
23100#endif
23101 case WLAN_HAL_CH_SWITCH_RSP:
23102 return WDI_CH_SWITCH_RESP;
23103 case WLAN_HAL_SET_LINK_ST_RSP:
23104 return WDI_SET_LINK_ST_RESP;
23105 case WLAN_HAL_GET_STATS_RSP:
23106 return WDI_GET_STATS_RESP;
23107 case WLAN_HAL_UPDATE_CFG_RSP:
23108 return WDI_UPDATE_CFG_RESP;
23109 case WLAN_HAL_ADD_BA_SESSION_RSP:
23110 return WDI_ADD_BA_SESSION_RESP;
23111 case WLAN_HAL_TRIGGER_BA_RSP:
23112 return WDI_TRIGGER_BA_RESP;
23113 case WLAN_HAL_UPDATE_BEACON_RSP:
23114 return WDI_UPD_BCON_PRMS_RESP;
23115 case WLAN_HAL_SEND_BEACON_RSP:
23116 return WDI_SND_BCON_RESP;
23117 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
23118 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
23119 /*Indications*/
23120 case WLAN_HAL_RSSI_NOTIFICATION_IND:
23121 return WDI_HAL_RSSI_NOTIFICATION_IND;
23122 case WLAN_HAL_MISSED_BEACON_IND:
23123 return WDI_HAL_MISSED_BEACON_IND;
23124 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
23125 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
23126 case WLAN_HAL_MIC_FAILURE_IND:
23127 return WDI_HAL_MIC_FAILURE_IND;
23128 case WLAN_HAL_FATAL_ERROR_IND:
23129 return WDI_HAL_FATAL_ERROR_IND;
23130 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
23131 return WDI_HAL_DEL_STA_IND;
23132 case WLAN_HAL_COEX_IND:
23133 return WDI_HAL_COEX_IND;
23134 case WLAN_HAL_OTA_TX_COMPL_IND:
23135 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023136 case WLAN_HAL_P2P_NOA_ATTR_IND:
23137 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080023138 case WLAN_HAL_P2P_NOA_START_IND:
23139 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023140 case WLAN_HAL_TX_PER_HIT_IND:
23141 return WDI_HAL_TX_PER_HIT_IND;
23142 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
23143 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023144 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
23145 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070023146 case WLAN_HAL_SET_TX_POWER_RSP:
23147 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023148 case WLAN_HAL_SET_P2P_GONOA_RSP:
23149 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023150#ifdef FEATURE_WLAN_TDLS
23151 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
23152 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
23153 case WLAN_HAL_TDLS_IND:
23154 return WDI_HAL_TDLS_IND;
23155#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023156 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023157 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023158 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023159 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023160 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023161 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023162 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023163 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023164 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023165 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023166 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023167 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023168 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023169 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023170 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023171 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023172 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023173 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023174 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23175 return WDI_SET_BEACON_FILTER_RESP;
23176 case WLAN_HAL_REM_BCN_FILTER_RSP:
23177 return WDI_REM_BEACON_FILTER_RESP;
23178 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23179 return WDI_SET_RSSI_THRESHOLDS_RESP;
23180 case WLAN_HAL_HOST_OFFLOAD_RSP:
23181 return WDI_HOST_OFFLOAD_RESP;
23182 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23183 return WDI_WOWL_ADD_BC_PTRN_RESP;
23184 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23185 return WDI_WOWL_DEL_BC_PTRN_RESP;
23186 case WLAN_HAL_ENTER_WOWL_RSP:
23187 return WDI_WOWL_ENTER_RESP;
23188 case WLAN_HAL_EXIT_WOWL_RSP:
23189 return WDI_WOWL_EXIT_RESP;
23190 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23191 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23192 case WLAN_HAL_DOWNLOAD_NV_RSP:
23193 return WDI_NV_DOWNLOAD_RESP;
23194 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23195 return WDI_FLUSH_AC_RESP;
23196 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23197 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023198 case WLAN_HAL_PROCESS_PTT_RSP:
23199 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023200 case WLAN_HAL_ADD_STA_SELF_RSP:
23201 return WDI_ADD_STA_SELF_RESP;
23202case WLAN_HAL_DEL_STA_SELF_RSP:
23203 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023204#ifdef FEATURE_OEM_DATA_SUPPORT
23205 case WLAN_HAL_START_OEM_DATA_RSP:
23206 return WDI_START_OEM_DATA_RESP;
23207#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023208 case WLAN_HAL_HOST_RESUME_RSP:
23209 return WDI_HOST_RESUME_RESP;
23210 case WLAN_HAL_KEEP_ALIVE_RSP:
23211 return WDI_KEEP_ALIVE_RESP;
23212#ifdef FEATURE_WLAN_SCAN_PNO
23213 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23214 return WDI_SET_PREF_NETWORK_RESP;
23215 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023216 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023217 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23218 return WDI_UPDATE_SCAN_PARAMS_RESP;
23219 case WLAN_HAL_PREF_NETW_FOUND_IND:
23220 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23221#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023222#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023223 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23224 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023225#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023226 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23227 return WDI_SET_TX_PER_TRACKING_RESP;
23228#ifdef WLAN_FEATURE_PACKET_FILTERING
23229 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23230 return WDI_8023_MULTICAST_LIST_RESP;
23231 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23232 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23233 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23234 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23235 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23236 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23237#endif // WLAN_FEATURE_PACKET_FILTERING
23238
23239 case WLAN_HAL_DUMP_COMMAND_RSP:
23240 return WDI_HAL_DUMP_CMD_RESP;
23241 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23242 return WDI_SET_POWER_PARAMS_RESP;
23243#ifdef WLAN_FEATURE_VOWIFI_11R
23244 case WLAN_HAL_AGGR_ADD_TS_RSP:
23245 return WDI_AGGR_ADD_TS_RESP;
23246#endif
23247
23248#ifdef WLAN_FEATURE_GTK_OFFLOAD
23249 case WLAN_HAL_GTK_OFFLOAD_RSP:
23250 return WDI_GTK_OFFLOAD_RESP;
23251 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23252 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23253#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23254#ifdef WLAN_WAKEUP_EVENTS
23255 case WLAN_HAL_WAKE_REASON_IND:
23256 return WDI_HAL_WAKE_REASON_IND;
23257#endif // WLAN_WAKEUP_EVENTS
23258
23259 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23260 return WDI_SET_TM_LEVEL_RESP;
23261 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23262 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023263#ifdef WLAN_FEATURE_11AC
23264 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23265 return WDI_UPDATE_VHT_OP_MODE_RESP;
23266#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023267#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023268 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23269 return WDI_GET_ROAM_RSSI_RESP;
23270#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023271
Leo Chang9056f462013-08-01 19:21:11 -070023272#ifdef FEATURE_WLAN_LPHB
23273 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070023274 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023275 case WLAN_HAL_LPHB_CFG_RSP:
23276 return WDI_LPHB_CFG_RESP;
23277#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023278
23279 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23280 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070023281 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23282 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023283
Rajeev79dbe4c2013-10-05 11:03:42 +053023284#ifdef FEATURE_WLAN_BATCH_SCAN
23285 case WLAN_HAL_BATCHSCAN_SET_RSP:
23286 return WDI_SET_BATCH_SCAN_RESP;
23287 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23288 return WDI_BATCHSCAN_RESULT_IND;
23289#endif // FEATURE_WLAN_BATCH_SCAN
23290
Leo Chang0b0e45a2013-12-15 15:18:55 -080023291#ifdef FEATURE_WLAN_CH_AVOID
23292 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23293 return WDI_HAL_CH_AVOID_IND;
23294#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023295 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
23296 return WDI_UPDATE_CHAN_RESP;
Leo Chang0b0e45a2013-12-15 15:18:55 -080023297
Jeff Johnson295189b2012-06-20 16:38:30 -070023298 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023299 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023300 }
23301
23302}/*HAL_2_WDI_RSP_TYPE*/
23303
23304
23305/*Convert WDI driver type into HAL driver type*/
23306WPT_STATIC WPT_INLINE tDriverType
23307WDI_2_HAL_DRV_TYPE
23308(
23309 WDI_DriverType wdiDriverType
23310)
23311{
Jeff Johnsone7245742012-09-05 17:12:55 -070023312 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023313 the chances of getting inlined*/
23314 switch( wdiDriverType )
23315 {
23316 case WDI_DRIVER_TYPE_PRODUCTION:
23317 return eDRIVER_TYPE_PRODUCTION;
23318 case WDI_DRIVER_TYPE_MFG:
23319 return eDRIVER_TYPE_MFG;
23320 case WDI_DRIVER_TYPE_DVT:
23321 return eDRIVER_TYPE_DVT;
23322 }
23323
Jeff Johnsone7245742012-09-05 17:12:55 -070023324 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023325}/*WDI_2_HAL_DRV_TYPE*/
23326
23327
23328/*Convert WDI stop reason into HAL stop reason*/
23329WPT_STATIC WPT_INLINE tHalStopType
23330WDI_2_HAL_STOP_REASON
23331(
23332 WDI_StopType wdiDriverType
23333)
23334{
Jeff Johnsone7245742012-09-05 17:12:55 -070023335 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023336 the chances of getting inlined*/
23337 switch( wdiDriverType )
23338 {
23339 case WDI_STOP_TYPE_SYS_RESET:
23340 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070023341 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23342 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023343 case WDI_STOP_TYPE_RF_KILL:
23344 return HAL_STOP_TYPE_RF_KILL;
23345 }
23346
Jeff Johnsone7245742012-09-05 17:12:55 -070023347 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023348}/*WDI_2_HAL_STOP_REASON*/
23349
23350
23351/*Convert WDI scan mode type into HAL scan mode type*/
23352WPT_STATIC WPT_INLINE eHalSysMode
23353WDI_2_HAL_SCAN_MODE
23354(
23355 WDI_ScanMode wdiScanMode
23356)
23357{
Jeff Johnsone7245742012-09-05 17:12:55 -070023358 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023359 the chances of getting inlined*/
23360 switch( wdiScanMode )
23361 {
23362 case WDI_SCAN_MODE_NORMAL:
23363 return eHAL_SYS_MODE_NORMAL;
23364 case WDI_SCAN_MODE_LEARN:
23365 return eHAL_SYS_MODE_LEARN;
23366 case WDI_SCAN_MODE_SCAN:
23367 return eHAL_SYS_MODE_SCAN;
23368 case WDI_SCAN_MODE_PROMISC:
23369 return eHAL_SYS_MODE_PROMISC;
23370 case WDI_SCAN_MODE_SUSPEND_LINK:
23371 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023372 case WDI_SCAN_MODE_ROAM_SCAN:
23373 return eHAL_SYS_MODE_ROAM_SCAN;
23374 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23375 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023376 }
23377
Jeff Johnsone7245742012-09-05 17:12:55 -070023378 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023379}/*WDI_2_HAL_SCAN_MODE*/
23380
23381/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023382WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023383WDI_2_HAL_SEC_CH_OFFSET
23384(
23385 WDI_HTSecondaryChannelOffset wdiSecChOffset
23386)
23387{
Jeff Johnsone7245742012-09-05 17:12:55 -070023388 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023389 the chances of getting inlined*/
23390 switch( wdiSecChOffset )
23391 {
23392 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023393 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023394 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023395 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023396 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023397 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23398#ifdef WLAN_FEATURE_11AC
23399 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23400 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23401 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23402 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23403 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23404 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23405 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23406 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23407 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23408 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23409 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23410 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23411 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23412 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23413#endif
23414 default:
23415 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023416 }
23417
Jeff Johnsone7245742012-09-05 17:12:55 -070023418 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023419}/*WDI_2_HAL_SEC_CH_OFFSET*/
23420
23421/*Convert WDI BSS type into HAL BSS type*/
23422WPT_STATIC WPT_INLINE tSirBssType
23423WDI_2_HAL_BSS_TYPE
23424(
23425 WDI_BssType wdiBSSType
23426)
23427{
Jeff Johnsone7245742012-09-05 17:12:55 -070023428 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023429 the chances of getting inlined*/
23430 switch( wdiBSSType )
23431 {
23432 case WDI_INFRASTRUCTURE_MODE:
23433 return eSIR_INFRASTRUCTURE_MODE;
23434 case WDI_INFRA_AP_MODE:
23435 return eSIR_INFRA_AP_MODE;
23436 case WDI_IBSS_MODE:
23437 return eSIR_IBSS_MODE;
23438 case WDI_BTAMP_STA_MODE:
23439 return eSIR_BTAMP_STA_MODE;
23440 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023441 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023442 case WDI_BSS_AUTO_MODE:
23443 return eSIR_AUTO_MODE;
23444 }
23445
Jeff Johnsone7245742012-09-05 17:12:55 -070023446 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023447}/*WDI_2_HAL_BSS_TYPE*/
23448
23449/*Convert WDI NW type into HAL NW type*/
23450WPT_STATIC WPT_INLINE tSirNwType
23451WDI_2_HAL_NW_TYPE
23452(
23453 WDI_NwType wdiNWType
23454)
23455{
Jeff Johnsone7245742012-09-05 17:12:55 -070023456 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023457 the chances of getting inlined*/
23458 switch( wdiNWType )
23459 {
23460 case WDI_11A_NW_TYPE:
23461 return eSIR_11A_NW_TYPE;
23462 case WDI_11B_NW_TYPE:
23463 return eSIR_11B_NW_TYPE;
23464 case WDI_11G_NW_TYPE:
23465 return eSIR_11G_NW_TYPE;
23466 case WDI_11N_NW_TYPE:
23467 return eSIR_11N_NW_TYPE;
23468 }
23469
Jeff Johnsone7245742012-09-05 17:12:55 -070023470 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023471}/*WDI_2_HAL_NW_TYPE*/
23472
23473/*Convert WDI chanel bonding type into HAL cb type*/
23474WPT_STATIC WPT_INLINE ePhyChanBondState
23475WDI_2_HAL_CB_STATE
23476(
23477 WDI_PhyChanBondState wdiCbState
23478)
23479{
Jeff Johnsone7245742012-09-05 17:12:55 -070023480 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023481 the chances of getting inlined*/
23482 switch ( wdiCbState )
23483 {
23484 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23485 return PHY_SINGLE_CHANNEL_CENTERED;
23486 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23487 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23488 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23489 return PHY_DOUBLE_CHANNEL_CENTERED;
23490 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23491 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023492#ifdef WLAN_FEATURE_11AC
23493 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23494 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23495 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23496 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23497 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23498 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23499 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23500 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23501 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23502 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23503 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23504 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23505 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23506 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23507#endif
23508 case WDI_MAX_CB_STATE:
23509 default:
23510 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023511 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023512
Jeff Johnson295189b2012-06-20 16:38:30 -070023513 return PHY_CHANNEL_BONDING_STATE_MAX;
23514}/*WDI_2_HAL_CB_STATE*/
23515
23516/*Convert WDI chanel bonding type into HAL cb type*/
23517WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23518WDI_2_HAL_HT_OPER_MODE
23519(
23520 WDI_HTOperatingMode wdiHTOperMode
23521)
23522{
Jeff Johnsone7245742012-09-05 17:12:55 -070023523 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023524 the chances of getting inlined*/
23525 switch ( wdiHTOperMode )
23526 {
23527 case WDI_HT_OP_MODE_PURE:
23528 return eSIR_HT_OP_MODE_PURE;
23529 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23530 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23531 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23532 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23533 case WDI_HT_OP_MODE_MIXED:
23534 return eSIR_HT_OP_MODE_MIXED;
23535 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023536
Jeff Johnson295189b2012-06-20 16:38:30 -070023537 return eSIR_HT_OP_MODE_MAX;
23538}/*WDI_2_HAL_HT_OPER_MODE*/
23539
23540/*Convert WDI mimo PS type into HAL mimo PS type*/
23541WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23542WDI_2_HAL_MIMO_PS
23543(
23544 WDI_HTMIMOPowerSaveState wdiHTOperMode
23545)
23546{
Jeff Johnsone7245742012-09-05 17:12:55 -070023547 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023548 the chances of getting inlined*/
23549 switch ( wdiHTOperMode )
23550 {
23551 case WDI_HT_MIMO_PS_STATIC:
23552 return eSIR_HT_MIMO_PS_STATIC;
23553 case WDI_HT_MIMO_PS_DYNAMIC:
23554 return eSIR_HT_MIMO_PS_DYNAMIC;
23555 case WDI_HT_MIMO_PS_NA:
23556 return eSIR_HT_MIMO_PS_NA;
23557 case WDI_HT_MIMO_PS_NO_LIMIT:
23558 return eSIR_HT_MIMO_PS_NO_LIMIT;
23559 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023560
Jeff Johnson295189b2012-06-20 16:38:30 -070023561 return eSIR_HT_MIMO_PS_MAX;
23562}/*WDI_2_HAL_MIMO_PS*/
23563
23564/*Convert WDI ENC type into HAL ENC type*/
23565WPT_STATIC WPT_INLINE tAniEdType
23566WDI_2_HAL_ENC_TYPE
23567(
23568 WDI_EncryptType wdiEncType
23569)
23570{
Jeff Johnsone7245742012-09-05 17:12:55 -070023571 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023572 the chances of getting inlined*/
23573 switch ( wdiEncType )
23574 {
23575 case WDI_ENCR_NONE:
23576 return eSIR_ED_NONE;
23577
23578 case WDI_ENCR_WEP40:
23579 return eSIR_ED_WEP40;
23580
23581 case WDI_ENCR_WEP104:
23582 return eSIR_ED_WEP104;
23583
23584 case WDI_ENCR_TKIP:
23585 return eSIR_ED_TKIP;
23586
23587 case WDI_ENCR_CCMP:
23588 return eSIR_ED_CCMP;
23589
23590 case WDI_ENCR_AES_128_CMAC:
23591 return eSIR_ED_AES_128_CMAC;
23592#if defined(FEATURE_WLAN_WAPI)
23593 case WDI_ENCR_WPI:
23594 return eSIR_ED_WPI;
23595#endif
23596 default:
23597 return eSIR_ED_NOT_IMPLEMENTED;
23598 }
23599
23600}/*WDI_2_HAL_ENC_TYPE*/
23601
23602/*Convert WDI WEP type into HAL WEP type*/
23603WPT_STATIC WPT_INLINE tAniWepType
23604WDI_2_HAL_WEP_TYPE
23605(
23606 WDI_WepType wdiWEPType
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 ( wdiWEPType )
23612 {
23613 case WDI_WEP_STATIC:
23614 return eSIR_WEP_STATIC;
23615
23616 case WDI_WEP_DYNAMIC:
23617 return eSIR_WEP_DYNAMIC;
23618 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023619
Jeff Johnson295189b2012-06-20 16:38:30 -070023620 return eSIR_WEP_MAX;
23621}/*WDI_2_HAL_WEP_TYPE*/
23622
23623WPT_STATIC WPT_INLINE tSirLinkState
23624WDI_2_HAL_LINK_STATE
23625(
23626 WDI_LinkStateType wdiLinkState
23627)
23628{
Jeff Johnsone7245742012-09-05 17:12:55 -070023629 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023630 the chances of getting inlined*/
23631 switch ( wdiLinkState )
23632 {
23633 case WDI_LINK_IDLE_STATE:
23634 return eSIR_LINK_IDLE_STATE;
23635
23636 case WDI_LINK_PREASSOC_STATE:
23637 return eSIR_LINK_PREASSOC_STATE;
23638
23639 case WDI_LINK_POSTASSOC_STATE:
23640 return eSIR_LINK_POSTASSOC_STATE;
23641
23642 case WDI_LINK_AP_STATE:
23643 return eSIR_LINK_AP_STATE;
23644
23645 case WDI_LINK_IBSS_STATE:
23646 return eSIR_LINK_IBSS_STATE;
23647
23648 case WDI_LINK_BTAMP_PREASSOC_STATE:
23649 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23650
23651 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23652 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23653
23654 case WDI_LINK_BTAMP_AP_STATE:
23655 return eSIR_LINK_BTAMP_AP_STATE;
23656
23657 case WDI_LINK_BTAMP_STA_STATE:
23658 return eSIR_LINK_BTAMP_STA_STATE;
23659
23660 case WDI_LINK_LEARN_STATE:
23661 return eSIR_LINK_LEARN_STATE;
23662
23663 case WDI_LINK_SCAN_STATE:
23664 return eSIR_LINK_SCAN_STATE;
23665
23666 case WDI_LINK_FINISH_SCAN_STATE:
23667 return eSIR_LINK_FINISH_SCAN_STATE;
23668
23669 case WDI_LINK_INIT_CAL_STATE:
23670 return eSIR_LINK_INIT_CAL_STATE;
23671
23672 case WDI_LINK_FINISH_CAL_STATE:
23673 return eSIR_LINK_FINISH_CAL_STATE;
23674
Jeff Johnson295189b2012-06-20 16:38:30 -070023675 case WDI_LINK_LISTEN_STATE:
23676 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023677
Gopichand Nakkala924e4552013-05-08 19:18:14 +053023678 case WDI_LINK_SEND_ACTION_STATE:
23679 return eSIR_LINK_SEND_ACTION_STATE;
23680
Jeff Johnson295189b2012-06-20 16:38:30 -070023681 default:
23682 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023683 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023684}
23685
Jeff Johnsone7245742012-09-05 17:12:55 -070023686/*Translate a STA Context from WDI into HAL*/
23687WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023688void
23689WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023690(
Jeff Johnson295189b2012-06-20 16:38:30 -070023691 tConfigStaParams* phalConfigSta,
23692 WDI_ConfigStaReqInfoType* pwdiConfigSta
23693)
23694{
23695 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023696#ifdef WLAN_FEATURE_11AC
23697 /* Get the Version 1 Handler */
23698 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23699 if (WDI_getFwWlanFeatCaps(DOT11AC))
23700 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023701 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023702 }
23703#endif
23704 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023705 the chances of getting inlined*/
23706
Jeff Johnsone7245742012-09-05 17:12:55 -070023707 wpalMemoryCopy(phalConfigSta->bssId,
23708 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23709
23710 wpalMemoryCopy(phalConfigSta->staMac,
23711 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023712
23713 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23714 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23715 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23716 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23717 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23718 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23719 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23720 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23721 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23722 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23723 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23724 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23725 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23726 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23727 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23728 phalConfigSta->action = pwdiConfigSta->wdiAction;
23729 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23730 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23731 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23732 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23733 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23734 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23735 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023736
Jeff Johnson295189b2012-06-20 16:38:30 -070023737 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23738
Jeff Johnsone7245742012-09-05 17:12:55 -070023739 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023740 pwdiConfigSta->wdiSupportedRates.opRateMode;
23741 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23742 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023743 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023744 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23745 }
23746 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23747 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023748 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023749 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23750 }
23751 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23752 {
23753 phalConfigSta->supportedRates.aniLegacyRates[i] =
23754 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23755 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023756 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023757 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23758 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23759 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023760 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023761 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23762 }
23763 phalConfigSta->supportedRates.rxHighestDataRate =
23764 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23765
Jeff Johnsone7245742012-09-05 17:12:55 -070023766#ifdef WLAN_FEATURE_11AC
23767 if(phalConfigSta_V1 != NULL)
23768 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023769 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23770 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23771 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23772 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023773 }
23774#endif
23775
Jeff Johnson295189b2012-06-20 16:38:30 -070023776 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023777
Jeff Johnsone7245742012-09-05 17:12:55 -070023778#ifdef WLAN_FEATURE_11AC
23779 if(phalConfigSta_V1 != NULL)
23780 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023781 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23782 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080023783 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080023784 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23785 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23786
Jeff Johnsone7245742012-09-05 17:12:55 -070023787 }
23788#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023789}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023790
23791/*Translate a Rate set info from WDI into HAL*/
23792WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023793WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023794(
Jeff Johnson295189b2012-06-20 16:38:30 -070023795 tSirMacRateSet* pHalRateSet,
23796 WDI_RateSet* pwdiRateSet
23797)
23798{
Jeff Johnsone7245742012-09-05 17:12:55 -070023799 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23801
23802 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23803 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23804
23805 for ( i = 0; i < pHalRateSet->numRates; i++ )
23806 {
23807 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23808 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023809
Jeff Johnson295189b2012-06-20 16:38:30 -070023810}/*WDI_CopyWDIRateSetToHALRateSet*/
23811
23812
23813/*Translate an EDCA Parameter Record from WDI into HAL*/
23814WPT_STATIC WPT_INLINE void
23815WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023816(
Jeff Johnson295189b2012-06-20 16:38:30 -070023817 tSirMacEdcaParamRecord* phalEdcaParam,
23818 WDI_EdcaParamRecord* pWDIEdcaParam
23819)
23820{
Jeff Johnsone7245742012-09-05 17:12:55 -070023821 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023822 the chances of getting inlined*/
23823
23824 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23825 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23826 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23827 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23828
23829 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23830 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23831 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23832}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23833
23834
23835/*Copy a management frame header from WDI fmt into HAL fmt*/
23836WPT_STATIC WPT_INLINE void
23837WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23838(
23839 tSirMacMgmtHdr* pmacMgmtHdr,
23840 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23841)
23842{
23843 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23844 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23845 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23846 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23847 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23848 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23849 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23850 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23851 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23852 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23853 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23854
23855 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23856 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23857
Jeff Johnsone7245742012-09-05 17:12:55 -070023858 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023859 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023860 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023861 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023862 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023863 pwdiMacMgmtHdr->bssId, 6);
23864
23865 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23866 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23867 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23868
23869}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23870
23871
23872/*Copy config bss parameters from WDI fmt into HAL fmt*/
23873WPT_STATIC WPT_INLINE void
23874WDI_CopyWDIConfigBSSToHALConfigBSS
23875(
23876 tConfigBssParams* phalConfigBSS,
23877 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23878)
23879{
23880
23881 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023882#ifdef WLAN_FEATURE_11AC
23883 /* Get the Version 1 Handler */
23884 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23885 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023886 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023887#endif
23888
Jeff Johnson295189b2012-06-20 16:38:30 -070023889 wpalMemoryCopy( phalConfigBSS->bssId,
23890 pwdiConfigBSS->macBSSID,
23891 WDI_MAC_ADDR_LEN);
23892
23893#ifdef HAL_SELF_STA_PER_BSS
23894 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23895 pwdiConfigBSS->macSelfAddr,
23896 WDI_MAC_ADDR_LEN);
23897#endif
23898
23899 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23900
23901 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23902 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23903
Jeff Johnsone7245742012-09-05 17:12:55 -070023904 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023905 pwdiConfigBSS->ucShortSlotTimeSupported;
23906 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23907 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23908 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23909 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23910 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023911 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023912 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23913 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23914 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23915 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23916 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23917 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23918 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23919 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23920 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23921 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23922 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23923
Jeff Johnsone7245742012-09-05 17:12:55 -070023924 phalConfigBSS->htOperMode =
23925 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023926
23927 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23928 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23929 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23930 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23931
23932#ifdef WLAN_FEATURE_VOWIFI
23933 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23934#endif
23935
23936 /*! Used 32 as magic number because that is how the ssid is declared inside the
23937 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023938 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023939 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23940 pwdiConfigBSS->wdiSSID.ucLength : 32;
23941 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023942 pwdiConfigBSS->wdiSSID.sSSID,
23943 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023944
23945 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23946 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023947
Jeff Johnson295189b2012-06-20 16:38:30 -070023948 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23949 &pwdiConfigBSS->wdiRateSet);
23950
23951 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23952
23953 if(phalConfigBSS->edcaParamsValid)
23954 {
23955 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23956 &pwdiConfigBSS->wdiBEEDCAParams);
23957 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23958 &pwdiConfigBSS->wdiBKEDCAParams);
23959 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23960 &pwdiConfigBSS->wdiVIEDCAParams);
23961 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23962 &pwdiConfigBSS->wdiVOEDCAParams);
23963 }
23964
Jeff Johnsone7245742012-09-05 17:12:55 -070023965 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023966
23967 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23968
23969#ifdef WLAN_FEATURE_VOWIFI_11R
23970
Jeff Johnsone7245742012-09-05 17:12:55 -070023971 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023972 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023973
Jeff Johnson295189b2012-06-20 16:38:30 -070023974 if( phalConfigBSS->extSetStaKeyParamValid )
23975 {
23976 /*-----------------------------------------------------------------------
23977 Copy the STA Key parameters into the HAL message
23978 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023979 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023980 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23981
Jeff Johnsone7245742012-09-05 17:12:55 -070023982 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023983 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23984
23985 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23986
23987 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23988
23989 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23990
Jeff Johnson295189b2012-06-20 16:38:30 -070023991 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23992 keyIndex++)
23993 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023994 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23996 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23997 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23998 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23999 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
24000 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070024001 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070024002 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070024003 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070024004 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070024005 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070024006 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
24007 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070024008 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070024009 WDI_MAX_KEY_LENGTH);
24010 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024011 }
24012 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
24013 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024014 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070024015 sizeof(phalConfigBSS->extSetStaKeyParam) );
24016 }
24017
24018#endif /*WLAN_FEATURE_VOWIFI_11R*/
24019
Jeff Johnsone7245742012-09-05 17:12:55 -070024020#ifdef WLAN_FEATURE_11AC
24021 if(phalConfigBSS_V1 != NULL)
24022 {
24023 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
24024 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
24025 }
24026#endif
24027
Jeff Johnson295189b2012-06-20 16:38:30 -070024028}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
24029
24030
Jeff Johnsone7245742012-09-05 17:12:55 -070024031/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024032 pointed to by user data */
24033WPT_STATIC WPT_INLINE void
24034WDI_ExtractRequestCBFromEvent
24035(
24036 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070024037 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070024038 void** ppUserData
24039)
24040{
24041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24042 switch ( pEvent->wdiRequest )
24043 {
24044 case WDI_START_REQ:
24045 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24046 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
24047 break;
24048 case WDI_STOP_REQ:
24049 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24050 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
24051 break;
24052 case WDI_INIT_SCAN_REQ:
24053 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24054 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
24055 break;
24056 case WDI_START_SCAN_REQ:
24057 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24058 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
24059 break;
24060 case WDI_END_SCAN_REQ:
24061 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24062 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
24063 break;
24064 case WDI_FINISH_SCAN_REQ:
24065 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24066 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
24067 break;
24068 case WDI_JOIN_REQ:
24069 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24070 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
24071 break;
24072 case WDI_CONFIG_BSS_REQ:
24073 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24074 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
24075 break;
24076 case WDI_DEL_BSS_REQ:
24077 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24078 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
24079 break;
24080 case WDI_POST_ASSOC_REQ:
24081 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24082 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
24083 break;
24084 case WDI_DEL_STA_REQ:
24085 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24086 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
24087 break;
24088 case WDI_DEL_STA_SELF_REQ:
24089 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24090 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
24091 break;
24092
24093 case WDI_SET_BSS_KEY_REQ:
24094 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24095 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24096 break;
24097 case WDI_RMV_BSS_KEY_REQ:
24098 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24099 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24100 break;
24101 case WDI_SET_STA_KEY_REQ:
24102 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24103 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24104 break;
24105 case WDI_RMV_STA_KEY_REQ:
24106 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24107 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24108 break;
24109 case WDI_ADD_TS_REQ:
24110 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24111 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
24112 break;
24113 case WDI_DEL_TS_REQ:
24114 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24115 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
24116 break;
24117 case WDI_UPD_EDCA_PRMS_REQ:
24118 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24119 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
24120 break;
24121 case WDI_ADD_BA_SESSION_REQ:
24122 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24123 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
24124 break;
24125 case WDI_DEL_BA_REQ:
24126 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24127 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
24128 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024129#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024130 case WDI_TSM_STATS_REQ:
24131 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24132 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
24133 break;
24134#endif
24135 case WDI_CH_SWITCH_REQ:
24136 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24137 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
24138 break;
24139 case WDI_CONFIG_STA_REQ:
24140 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24141 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
24142 break;
24143 case WDI_SET_LINK_ST_REQ:
24144 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24145 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
24146 break;
24147 case WDI_GET_STATS_REQ:
24148 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24149 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
24150 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024151#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024152 case WDI_GET_ROAM_RSSI_REQ:
24153 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24154 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
24155 break;
24156#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024157 case WDI_UPDATE_CFG_REQ:
24158 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24159 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
24160 break;
24161 case WDI_ADD_BA_REQ:
24162 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24163 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
24164 break;
24165 case WDI_TRIGGER_BA_REQ:
24166 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24167 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
24168 break;
24169 case WDI_UPD_BCON_PRMS_REQ:
24170 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24171 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
24172 break;
24173 case WDI_SND_BCON_REQ:
24174 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24175 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
24176 break;
24177 case WDI_ENTER_BMPS_REQ:
24178 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24179 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24180 break;
24181 case WDI_EXIT_BMPS_REQ:
24182 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24183 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24184 break;
24185 case WDI_ENTER_UAPSD_REQ:
24186 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24187 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24188 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024189 case WDI_EXIT_UAPSD_REQ:
24190 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24191 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24192 break;
24193 case WDI_SET_UAPSD_PARAM_REQ:
24194 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24195 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24196 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024197 case WDI_UPDATE_UAPSD_PARAM_REQ:
24198 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24199 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24200 break;
24201 case WDI_CONFIGURE_RXP_FILTER_REQ:
24202 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24203 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24204 break;
24205 case WDI_SET_BEACON_FILTER_REQ:
24206 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24207 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24208 break;
24209 case WDI_REM_BEACON_FILTER_REQ:
24210 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24211 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024212 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024213 case WDI_SET_RSSI_THRESHOLDS_REQ:
24214 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24215 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24216 break;
24217 case WDI_HOST_OFFLOAD_REQ:
24218 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24219 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24220 break;
24221 case WDI_WOWL_ADD_BC_PTRN_REQ:
24222 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24223 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24224 break;
24225 case WDI_WOWL_DEL_BC_PTRN_REQ:
24226 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24227 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24228 break;
24229 case WDI_WOWL_ENTER_REQ:
24230 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24231 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24232 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024233 case WDI_WOWL_EXIT_REQ:
24234 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24235 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24236 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024237 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24238 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24239 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24240 break;
24241 case WDI_FLUSH_AC_REQ:
24242 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24243 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24244 break;
24245 case WDI_BTAMP_EVENT_REQ:
24246 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24247 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24248 break;
24249 case WDI_KEEP_ALIVE_REQ:
24250 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24251 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24252 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024253#if defined FEATURE_WLAN_SCAN_PNO
24254 case WDI_SET_PREF_NETWORK_REQ:
24255 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24256 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24257 break;
24258 case WDI_SET_RSSI_FILTER_REQ:
24259 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24260 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24261 break;
24262 case WDI_UPDATE_SCAN_PARAMS_REQ:
24263 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24264 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24265 break;
24266#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024267 case WDI_SET_TX_PER_TRACKING_REQ:
24268 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24269 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024270 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024271#if defined WLAN_FEATURE_PACKET_FILTERING
24272 case WDI_8023_MULTICAST_LIST_REQ:
24273 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24274 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24275 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024276 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24277 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24278 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24279 break;
24280 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24281 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24282 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24283 break;
24284 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24285 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24286 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24287 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024288#endif
24289 case WDI_SET_POWER_PARAMS_REQ:
24290 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24291 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24292 break;
24293#if defined WLAN_FEATURE_GTK_OFFLOAD
24294 case WDI_GTK_OFFLOAD_REQ:
24295 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24296 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24297 break;
24298 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24299 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24300 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24301 break;
24302#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024303
Jeff Johnson295189b2012-06-20 16:38:30 -070024304 default:
24305 *ppfnReqCB = NULL;
24306 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024307 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024308 }
24309}/*WDI_ExtractRequestCBFromEvent*/
24310
24311
24312/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024313 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024314 frame xtl is enabled for a particular STA.
24315
24316 WDI_PostAssocReq must have been called.
24317
Jeff Johnsone7245742012-09-05 17:12:55 -070024318 @param uSTAIdx: STA index
24319
Jeff Johnson295189b2012-06-20 16:38:30 -070024320 @see WDI_PostAssocReq
24321 @return Result of the function call
24322*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024323wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024324WDI_IsHwFrameTxTranslationCapable
24325(
24326 wpt_uint8 uSTAIdx
24327)
24328{
Jeff Johnsone7245742012-09-05 17:12:55 -070024329 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024330 uma value*/
24331 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024332 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024333 ------------------------------------------------------------------------*/
24334 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24335 {
24336 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24337 "WDI API call before module is initialized - Fail request");
24338
Jeff Johnsone7245742012-09-05 17:12:55 -070024339 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024340 }
24341
Gopichand Nakkala976e3252013-01-03 15:45:56 -080024342#ifdef WLAN_SOFTAP_VSTA_FEATURE
24343 if (IS_VSTA_IDX(uSTAIdx))
24344 {
24345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24346 "STA %d is a Virtual STA, "
24347 "HW frame translation disabled", uSTAIdx);
24348 return eWLAN_PAL_FALSE;
24349 }
24350#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024351
Jeff Johnson295189b2012-06-20 16:38:30 -070024352 return gWDICb.bFrameTransEnabled;
24353}/*WDI_IsHwFrameTxTranslationCapable*/
24354
24355#ifdef FEATURE_WLAN_SCAN_PNO
24356/**
24357 @brief WDI_SetPreferredNetworkList
24358
Jeff Johnsone7245742012-09-05 17:12:55 -070024359 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024360 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024361
Jeff Johnson295189b2012-06-20 16:38:30 -070024362 wdiPNOScanCb: callback for passing back the response
24363 of the Set PNO operation received from the
24364 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024365
Jeff Johnson295189b2012-06-20 16:38:30 -070024366 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024367 callback
24368
Jeff Johnson295189b2012-06-20 16:38:30 -070024369 @return Result of the function call
24370*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024371WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024372WDI_SetPreferredNetworkReq
24373(
24374 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24375 WDI_PNOScanCb wdiPNOScanCb,
24376 void* pUserData
24377)
24378{
24379 WDI_EventInfoType wdiEventData = {{0}};
24380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24381
24382 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024383 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024384 ------------------------------------------------------------------------*/
24385 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24386 {
24387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24388 "WDI API call before module is initialized - Fail request");
24389
Jeff Johnsone7245742012-09-05 17:12:55 -070024390 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024391 }
24392
Vinay Krishna Erannaf0e523b2014-03-01 21:00:16 +053024393 /*----------------------------------------------------------------------
24394 Avoid Enable PNO during any active session or an ongoing session
24395 ----------------------------------------------------------------------*/
24396 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
24397 WDI_GetActiveSessionsCount(&gWDICb, NULL, eWLAN_PAL_FALSE)) )
24398 {
24399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24400 "%s:(Active/Ongoing Session) - Fail request", __func__);
24401
24402 return WDI_STATUS_E_NOT_ALLOWED;
24403 }
24404
Jeff Johnson295189b2012-06-20 16:38:30 -070024405 /*------------------------------------------------------------------------
24406 Fill in Event data and post to the Main FSM
24407 ------------------------------------------------------------------------*/
24408 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024409 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024410 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024411 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 wdiEventData.pUserData = pUserData;
24413
24414 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24415}
24416
24417
24418/**
24419 @brief WDI_SetRssiFilterReq
24420
Jeff Johnsone7245742012-09-05 17:12:55 -070024421 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024422 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024423
Jeff Johnson295189b2012-06-20 16:38:30 -070024424 wdiRssiFilterCb: callback for passing back the response
24425 of the Set RSSI Filter operation received from the
24426 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024427
Jeff Johnson295189b2012-06-20 16:38:30 -070024428 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024429 callback
24430
Jeff Johnson295189b2012-06-20 16:38:30 -070024431 @return Result of the function call
24432*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024433WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024434WDI_SetRssiFilterReq
24435(
24436 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24437 WDI_RssiFilterCb wdiRssiFilterCb,
24438 void* pUserData
24439)
24440{
24441 WDI_EventInfoType wdiEventData = {{0}};
24442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24443
24444 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024445 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024446 ------------------------------------------------------------------------*/
24447 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24448 {
24449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24450 "WDI API call before module is initialized - Fail request");
24451
Jeff Johnsone7245742012-09-05 17:12:55 -070024452 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024453 }
24454
24455 /*------------------------------------------------------------------------
24456 Fill in Event data and post to the Main FSM
24457 ------------------------------------------------------------------------*/
24458 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024459 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024460 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024461 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024462 wdiEventData.pUserData = pUserData;
24463
24464 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24465}/*WDI_SetRssiFilterReq*/
24466
24467/**
24468 @brief WDI_UpdateScanParamsReq
24469
Jeff Johnsone7245742012-09-05 17:12:55 -070024470 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024471 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024472
Jeff Johnson295189b2012-06-20 16:38:30 -070024473 wdiUpdateScanParamsCb: callback for passing back the response
24474 of the Set PNO operation received from the
24475 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024476
Jeff Johnson295189b2012-06-20 16:38:30 -070024477 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024478 callback
24479
Jeff Johnson295189b2012-06-20 16:38:30 -070024480 @return Result of the function call
24481*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024482WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024483WDI_UpdateScanParamsReq
24484(
24485 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24486 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24487 void* pUserData
24488)
24489{
24490 WDI_EventInfoType wdiEventData = {{0}};
24491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24492
24493 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024494 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024495 ------------------------------------------------------------------------*/
24496 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24497 {
24498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24499 "WDI API call before module is initialized - Fail request");
24500
Jeff Johnsone7245742012-09-05 17:12:55 -070024501 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024502 }
24503
24504 /*------------------------------------------------------------------------
24505 Fill in Event data and post to the Main FSM
24506 ------------------------------------------------------------------------*/
24507 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024508 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024509 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024510 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024511 wdiEventData.pUserData = pUserData;
24512
24513 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24514}
24515
24516/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024517 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024518 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024519
24520 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024521 pwdiPNOScanReqParams: pointer to the info received
24522 from upper layers
24523 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024524 and its size
24525
Jeff Johnson295189b2012-06-20 16:38:30 -070024526 @return Result of the function call
24527*/
24528
24529WDI_Status
24530WDI_PackPreferredNetworkList
24531(
24532 WDI_ControlBlockType* pWDICtx,
24533 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24534 wpt_uint8** ppSendBuffer,
24535 wpt_uint16* pSize
24536)
24537{
Jeff Johnsone7245742012-09-05 17:12:55 -070024538 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024539 wpt_uint16 usDataOffset = 0;
24540 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024541 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024542 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024543 /*-----------------------------------------------------------------------
24544 Get message buffer
24545 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024546 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024547 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024548 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024549 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024550 {
24551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024552 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024553 pwdiPNOScanReqParams);
24554 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024556 }
24557
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024558 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24559
Jeff Johnson295189b2012-06-20 16:38:30 -070024560 /*-------------------------------------------------------------------------
24561 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24562 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024563 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024564 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024565 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024566 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24567
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024568 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024569 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024570 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024571 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024572 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24573
24574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024575 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024576 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24577 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24578 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24579
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024580 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024581 {
24582 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024583 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024584 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24585
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024586 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024587 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024588 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024589
24590 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024591 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024592 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024593
24594 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024595 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024596 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024597
Jeff Johnsone7245742012-09-05 17:12:55 -070024598 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024599 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024600 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024601 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24602 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24603 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24604 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024605
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024606 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024607 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024608 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024609
24610 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024611 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024612 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24613
24614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024615 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024616 pPrefNetwListParams->aNetworks[i].ssId.length,
24617 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024618 }
24619
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024620 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024621 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024622 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24623 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24624 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24625
24626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024627 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024628 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024629 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24630 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24631
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024632 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024633 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024634 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024635 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024636 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024637 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24638 }
24639
24640 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024641 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024642 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24643 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24644 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024645 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024646
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024647 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024648 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024649 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024650
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024651 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024652 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24653 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24654 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024655 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024656
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024657 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024658 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024659 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024660
24661 /*Set the output values*/
24662 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024663 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024664
24665 return WDI_STATUS_SUCCESS;
24666}/*WDI_PackPreferredNetworkList*/
24667
24668/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024669 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024670 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024671
24672 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024673 pwdiPNOScanReqParams: pointer to the info received
24674 from upper layers
24675 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024676 and its size
24677
Jeff Johnson295189b2012-06-20 16:38:30 -070024678 @return Result of the function call
24679*/
24680
24681WDI_Status
24682WDI_PackPreferredNetworkListNew
24683(
24684 WDI_ControlBlockType* pWDICtx,
24685 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24686 wpt_uint8** ppSendBuffer,
24687 wpt_uint16* pSize
24688)
24689{
Jeff Johnsone7245742012-09-05 17:12:55 -070024690 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024691 wpt_uint16 usDataOffset = 0;
24692 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024693 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024694 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024695
24696 /*-----------------------------------------------------------------------
24697 Get message buffer
24698 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024699 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024700 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024701 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024702 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024703 {
24704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024705 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024706 pwdiPNOScanReqParams);
24707 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024708 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024709 }
24710
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024711 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24712
Jeff Johnson295189b2012-06-20 16:38:30 -070024713 /*-------------------------------------------------------------------------
24714 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24715 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024716 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024717 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024718 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024719 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24720
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024721 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024722 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024723 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024724 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024725 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24726
24727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024728 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024729 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24730 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24731 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24732
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024733 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024734 {
24735 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024736 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024737 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24738
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024739 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024740 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024741 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024742
24743 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024744 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024745 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024746
24747 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024748 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024749 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024750
24751 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024752 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024753 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024754
Jeff Johnsone7245742012-09-05 17:12:55 -070024755 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024756 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024757 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024758 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24759
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024760 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024761 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024762 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024763
24764 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024765 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024766 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24767
24768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024769 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024770 pPrefNetwListParams->aNetworks[i].ssId.length,
24771 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024772 }
24773
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024774 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024775 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024776 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24777 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24778 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24779
24780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024781 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024782 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024783 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24784 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24785
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024786 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024787 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024788 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024789 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024790 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024791 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24792 }
24793
24794 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024795 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024796 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24797 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24798 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024799 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024800
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024801 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024802 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024803 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024804
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024805 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024806 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24807 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24808 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024809 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024810
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024811 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024812 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024813 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024814
Jeff Johnson295189b2012-06-20 16:38:30 -070024815
24816 /*Set the output values*/
24817 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024818 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024819
24820 return WDI_STATUS_SUCCESS;
24821}/*WDI_PackPreferredNetworkListNew*/
24822
24823/**
24824 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024825
24826 @param pWDICtx: pointer to the WLAN DAL context
24827 pEventData: pointer to the event information structure
24828
Jeff Johnson295189b2012-06-20 16:38:30 -070024829 @return Result of the function call
24830*/
24831WDI_Status
24832WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024833(
Jeff Johnson295189b2012-06-20 16:38:30 -070024834 WDI_ControlBlockType* pWDICtx,
24835 WDI_EventInfoType* pEventData
24836)
24837{
24838 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24839 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024840 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024841 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024842 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024843
24844 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024845 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024846 -------------------------------------------------------------------------*/
24847 if (( NULL == pEventData ) ||
24848 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24849 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24850 {
24851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024852 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024853 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024855 }
24856
24857 /*-------------------------------------------------------------------------
24858 Pack the PNO request structure based on version
24859 -------------------------------------------------------------------------*/
24860 if ( pWDICtx->wdiPNOVersion > 0 )
24861 {
24862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024863 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024864 pWDICtx->wdiPNOVersion);
24865
24866 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24867 &pSendBuffer, &usSendSize);
24868 }
24869 else
24870 {
24871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024872 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024873 pWDICtx->wdiPNOVersion);
24874
24875 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24876 &pSendBuffer, &usSendSize);
24877 }
24878
24879 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24880 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24881 {
24882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024883 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024885 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024886 }
24887
24888 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024889 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024890
24891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024892 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024893 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024894 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24895 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024896}
24897
24898/**
24899 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024900
24901 @param pWDICtx: pointer to the WLAN DAL context
24902 pEventData: pointer to the event information structure
24903
Jeff Johnson295189b2012-06-20 16:38:30 -070024904 @see
24905 @return Result of the function call
24906*/
24907WDI_Status
24908WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024909(
Jeff Johnson295189b2012-06-20 16:38:30 -070024910 WDI_ControlBlockType* pWDICtx,
24911 WDI_EventInfoType* pEventData
24912)
24913{
24914 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24915 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024916 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024917 wpt_uint16 usDataOffset = 0;
24918 wpt_uint16 usSendSize = 0;
24919 wpt_uint8 ucRssiThreshold;
24920
24921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024922 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024923 -------------------------------------------------------------------------*/
24924 if (( NULL == pEventData ) ||
24925 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24926 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24927 {
24928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024929 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024930 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024931 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024932 }
24933
24934 /*-----------------------------------------------------------------------
24935 Get message buffer
24936 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024937 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024938 sizeof(ucRssiThreshold),
24939 &pSendBuffer, &usDataOffset, &usSendSize))||
24940 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24941 {
24942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024943 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024944 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024947 }
24948
24949 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24950
Jeff Johnsone7245742012-09-05 17:12:55 -070024951 wpalMemoryCopy( pSendBuffer+usDataOffset,
24952 &ucRssiThreshold,
24953 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024954
24955 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024956 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024957
24958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024959 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024960 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024961 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24962 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024963}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024964#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24965/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024966 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024967
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024968 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024969 by the Device Interface
24970
24971 wdiRoamOffloadScancb: callback for passing back the response
24972 of the Roam Candidate Lookup Req operation received from the
24973 device
24974
24975 pUserData: user data will be passed back with the
24976 callback
24977 @return Result of the function call
24978*/
24979WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024980WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024981(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024982 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024983 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24984 void* pUserData
24985)
24986{
24987 WDI_EventInfoType wdiEventData = {{0}};
24988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24989
24990 /*------------------------------------------------------------------------
24991 Sanity Check
24992 ------------------------------------------------------------------------*/
24993 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24994 {
24995 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24996 "WDI API call before module is initialized - Fail request");
24997
24998 return WDI_STATUS_E_NOT_ALLOWED;
24999 }
25000
25001 /*------------------------------------------------------------------------
25002 Fill in Event data and post to the Main FSM
25003 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025004 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
25005 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
25006 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025007 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
25008 wdiEventData.pUserData = pUserData;
25009
25010 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25011}
25012
25013void
25014WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
25015{
25016 switch (wdiEdType)
25017 {
25018 case WDI_ED_NONE:
25019 *EdType = eED_NONE;
25020 break;
25021 case WDI_ED_WEP40:
25022 case WDI_ED_WEP104:
25023 *EdType = eED_WEP;
25024 break;
25025 case WDI_ED_TKIP:
25026 *EdType = eED_TKIP;
25027 break;
25028 case WDI_ED_CCMP:
25029#ifdef WLAN_FEATURE_11W
25030 case WDI_ED_AES_128_CMAC:
25031#endif
25032 *EdType = eED_CCMP;
25033 break;
25034#ifdef FEATURE_WLAN_WAPI
25035 case WDI_ED_WPI:
25036 *EdType = eED_WPI;
25037 break;
25038#endif
25039 case WDI_ED_ANY:
25040 *EdType = eED_ANY;
25041 break;
25042
25043 default:
25044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25045 "%s: Unknown Encryption Type", __func__);
25046 break;
25047 }
25048}
25049
25050/**
25051 @brief Helper function to pack Start Roam Candidate Lookup
25052 Request parameters
25053
25054 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025055 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025056 from upper layers
25057 ppSendBuffer, pSize - out pointers of the packed buffer
25058 and its size
25059
25060 @return Result of the function call
25061*/
25062
25063WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025064WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025065(
25066 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025067 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025068 wpt_uint8** ppSendBuffer,
25069 wpt_uint16* pSize
25070)
25071{
25072 wpt_uint8* pSendBuffer = NULL;
25073 wpt_uint16 usDataOffset = 0;
25074 wpt_uint16 usSendSize = 0;
25075 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
25076 wpt_uint8 i;
25077 /*-----------------------------------------------------------------------
25078 Get message buffer
25079 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025080 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025081 sizeof(tRoamCandidateListParams),
25082 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025083 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025084 {
25085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025086 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025087 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025088 WDI_ASSERT(0);
25089 return WDI_STATUS_E_FAILURE;
25090 }
25091 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025092 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025093 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025094 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025095 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025096 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025097 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025098 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025099 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025100 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025101 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025102
25103 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025104 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025105 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025106 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025107 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
25108 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025109 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
25110 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
25111 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
25112 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
25113 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080025114 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025115 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080025116 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025117 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
25118 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
25119 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
25120 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
25121 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
25122 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
25123 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025124 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025125 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025126 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
25127 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
25128 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025129
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
25131 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
25132 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
25133 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
25134 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
25135 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080025136 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025137 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
25138 pRoamCandidateListParams->RoamScanOffloadEnabled,
25139 pRoamCandidateListParams->Command,
25140 pRoamCandidateListParams->StartScanReason,
25141 pRoamCandidateListParams->NeighborScanTimerPeriod,
25142 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
25143 pRoamCandidateListParams->NeighborScanChannelMinTime,
25144 pRoamCandidateListParams->NeighborScanChannelMaxTime,
25145 pRoamCandidateListParams->EmptyRefreshScanPeriod,
25146 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
25147 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
25148 pRoamCandidateListParams->ConnectedNetwork.authentication,
25149 pRoamCandidateListParams->ConnectedNetwork.encryption,
25150 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
25151 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
25152 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025153 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025154 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025155 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025156 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025157 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25158 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025159 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025160 pRoamCandidateListParams->us24GProbeSize);
25161 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025162 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025163 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025164 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025165 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25166 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025167 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025168 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025169 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
25170 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
25171 pRoamCandidateListParams->nProbes =
25172 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
25173 pRoamCandidateListParams->HomeAwayTime =
25174 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
25175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025176 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
25177 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025179 }
25180
25181
25182 /*Set the output values*/
25183 *ppSendBuffer = pSendBuffer;
25184 *pSize = usSendSize;
25185 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025186}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025187
25188/**
25189 @brief Process Start Roam Candidate Lookup Request function
25190
25191 @param pWDICtx: pointer to the WLAN DAL context
25192 pEventData: pointer to the event information structure
25193
25194 @return Result of the function call
25195*/
25196WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025197WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025198(
25199 WDI_ControlBlockType* pWDICtx,
25200 WDI_EventInfoType* pEventData
25201)
25202{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025203 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025204 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25205 wpt_uint8* pSendBuffer = NULL;
25206 wpt_uint16 usSendSize = 0;
25207 WDI_Status wdiStatus;
25208 /*-------------------------------------------------------------------------
25209 Sanity check
25210 -------------------------------------------------------------------------*/
25211 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025212 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025213 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25214 {
25215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25216 "%s: Invalid parameters", __func__);
25217 WDI_ASSERT(0);
25218 return WDI_STATUS_E_FAILURE;
25219 }
25220
25221 /*-------------------------------------------------------------------------
25222 Pack the Start Roam Candidate Lookup request structure based on version
25223 -------------------------------------------------------------------------*/
25224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25225 "%s: Packing Roam Candidate Lookup request ", __func__);
25226
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025227 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025228 &pSendBuffer, &usSendSize);
25229
25230 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25231 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25232 {
25233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25234 "%s: failed to pack request parameters", __func__);
25235 WDI_ASSERT(0);
25236 return wdiStatus;
25237 }
25238
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025239 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25240 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025241
25242 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025243 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025244 -------------------------------------------------------------------------*/
25245 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025246 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025247}
25248
25249/**
25250 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25251 response is being received over the bus from HAL)
25252
25253 @param pWDICtx: pointer to the WLAN DAL context
25254 pEventData: pointer to the event information structure
25255
25256 @see
25257 @return Result of the function call
25258*/
25259WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025260WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025261(
25262 WDI_ControlBlockType* pWDICtx,
25263 WDI_EventInfoType* pEventData
25264)
25265{
25266 WDI_Status wdiStatus;
25267 eHalStatus halStatus;
25268 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25269
25270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25271
25272 /*-------------------------------------------------------------------------
25273 Sanity check
25274 -------------------------------------------------------------------------*/
25275 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25276 ( NULL == pEventData->pEventData ))
25277 {
25278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25279 "%s: Invalid parameters", __func__);
25280 WDI_ASSERT(0);
25281 return WDI_STATUS_E_FAILURE;
25282 }
25283
25284 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25285
25286 /*-------------------------------------------------------------------------
25287 Extract response and send it to UMAC
25288 -------------------------------------------------------------------------*/
25289 halStatus = *((eHalStatus*)pEventData->pEventData);
25290 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25291
25292 /*Notify UMAC*/
25293 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25294
25295 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025296}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025297#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025298
25299/**
25300 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025301
25302 @param pWDICtx: pointer to the WLAN DAL context
25303 pEventData: pointer to the event information structure
25304
Jeff Johnson295189b2012-06-20 16:38:30 -070025305 @see
25306 @return Result of the function call
25307*/
25308WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025309WDI_PackUpdateScanParamsReq
25310(
25311 WDI_ControlBlockType* pWDICtx,
25312 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25313 wpt_uint8** ppSendBuffer,
25314 wpt_uint16* pSize
25315)
25316{
25317 wpt_uint8* pSendBuffer = NULL;
25318 wpt_uint16 usDataOffset = 0;
25319 wpt_uint16 usSendSize = 0;
25320 tUpdateScanParams updateScanParams = {0};
25321
25322
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025324 "Begin WDI Update Scan Parameters Old Style Params");
25325 /*-----------------------------------------------------------------------
25326 Get message buffer
25327 -----------------------------------------------------------------------*/
25328 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25329 sizeof(updateScanParams),
25330 &pSendBuffer, &usDataOffset, &usSendSize))||
25331 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25332 {
25333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025334 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025335 pwdiUpdateScanParams);
25336 WDI_ASSERT(0);
25337 return WDI_STATUS_E_FAILURE;
25338 }
25339
25340 //
25341 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25342 //
25343
25344 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25345 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25346
25347 updateScanParams.ucChannelCount =
25348 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25349 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25350 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25351 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
25352
25353 wpalMemoryCopy( updateScanParams.aChannels,
25354 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25355 updateScanParams.ucChannelCount);
25356
25357
25358 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25359 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25360 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25361 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25362 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25363
25364 wpalMemoryCopy( pSendBuffer+usDataOffset,
25365 &updateScanParams,
25366 sizeof(updateScanParams));
25367
25368 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25369 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25370
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025372 "End Update Scan Parameters Old Style");
25373
25374 /*Set the output values*/
25375 *ppSendBuffer = pSendBuffer;
25376 *pSize = usSendSize;
25377
25378 return WDI_STATUS_SUCCESS;
25379}
25380
25381/**
25382 @brief Process Update Scan Params function
25383
25384 @param pWDICtx: pointer to the WLAN DAL context
25385 pEventData: pointer to the event information structure
25386
25387 @see
25388 @return Result of the function call
25389*/
25390WDI_Status
25391WDI_PackUpdateScanParamsReqEx
25392(
25393 WDI_ControlBlockType* pWDICtx,
25394 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25395 wpt_uint8** ppSendBuffer,
25396 wpt_uint16* pSize
25397)
25398{
25399 wpt_uint8* pSendBuffer = NULL;
25400 wpt_uint16 usDataOffset = 0;
25401 wpt_uint16 usSendSize = 0;
25402 tUpdateScanParamsEx updateScanParams = {0};
25403
25404
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025405 /*-----------------------------------------------------------------------
25406 Get message buffer
25407 -----------------------------------------------------------------------*/
25408 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25409 sizeof(updateScanParams),
25410 &pSendBuffer, &usDataOffset, &usSendSize))||
25411 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25412 {
25413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025414 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025415 pwdiUpdateScanParams);
25416 WDI_ASSERT(0);
25417 return WDI_STATUS_E_FAILURE;
25418 }
25419
25420 //
25421 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25422 //
25423
25424 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25425 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25426
25427 updateScanParams.ucChannelCount =
25428 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25429 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25430 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25431 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25432
25433 wpalMemoryCopy( updateScanParams.aChannels,
25434 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25435 updateScanParams.ucChannelCount);
25436
25437
25438 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25439 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25440 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25441 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25442 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25443
25444 wpalMemoryCopy( pSendBuffer+usDataOffset,
25445 &updateScanParams,
25446 sizeof(updateScanParams));
25447
25448 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25449 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25450
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025451 /*Set the output values*/
25452 *ppSendBuffer = pSendBuffer;
25453 *pSize = usSendSize;
25454
25455 return WDI_STATUS_SUCCESS;
25456}
25457
25458/**
25459 @brief Process Update Scan Params function
25460
25461 @param pWDICtx: pointer to the WLAN DAL context
25462 pEventData: pointer to the event information structure
25463
25464 @see
25465 @return Result of the function call
25466*/
25467WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025468WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025469(
Jeff Johnson295189b2012-06-20 16:38:30 -070025470 WDI_ControlBlockType* pWDICtx,
25471 WDI_EventInfoType* pEventData
25472)
25473{
25474 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25475 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025476 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025477 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025478 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025479
25480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025481 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025482 -------------------------------------------------------------------------*/
25483 if (( NULL == pEventData ) ||
25484 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25485 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25486 {
25487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025491 }
25492
25493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25494 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025495
25496 //
25497 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25498 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025499 if ( pWDICtx->wlanVersion.revision < 1 )
25500 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025501 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025502 &pSendBuffer, &usSendSize);
25503 }
25504 else
25505 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025506 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25507 &pSendBuffer, &usSendSize);
25508 }
25509
25510 if(WDI_STATUS_SUCCESS != wdiStatus)
25511 {
25512 //memory allocation failed
25513 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025514 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025515
Jeff Johnson295189b2012-06-20 16:38:30 -070025516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025517 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025518 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025519 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025520 wdiUpdateScanParamsCb, pEventData->pUserData,
25521 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025522}
25523
25524/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080025525 @brief Process Update Channel Params function
25526
25527 @param pWDICtx: pointer to the WLAN DAL context
25528 pEventData: pointer to the event information structure
25529
25530 @see
25531 @return Result of the function call
25532*/
25533WDI_Status
25534WDI_ProcessUpdateChannelParamsReq
25535(
25536 WDI_ControlBlockType* pWDICtx,
25537 WDI_EventInfoType* pEventData
25538)
25539{
25540 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
25541 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
25542 wpt_uint8* pSendBuffer = NULL;
25543 wpt_uint16 usDataOffset = 0;
25544 wpt_uint16 usSendSize = 0;
25545 tUpdateChannelReqType *updateChannelParams;
25546 wpt_uint32 usUpdateChanParamSize;
25547 wpt_uint8 num_channels = 0;
25548
25549 /*-------------------------------------------------------------------------
25550 Sanity check
25551 -------------------------------------------------------------------------*/
25552 if (( NULL == pEventData ) ||
25553 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
25554 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
25555 {
25556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25557 "%s: Invalid parameters", __func__);
25558 WDI_ASSERT(0);
25559 return WDI_STATUS_E_FAILURE;
25560 }
25561 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
25562 usUpdateChanParamSize = (sizeof(tUpdateChannelReqType) -
25563 ((WLAN_HAL_ROAM_SCAN_MAX_CHANNELS - num_channels) *
25564 sizeof(tUpdateChannelParam)));
25565
25566 /*-----------------------------------------------------------------------
25567 Get message buffer
25568 -----------------------------------------------------------------------*/
25569 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25570 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
25571 &pSendBuffer, &usDataOffset, &usSendSize))||
25572 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
25573 {
25574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25575 "Unable to get send buffer in Update Channel Params req %p",
25576 pwdiUpdateChanListParams);
25577 WDI_ASSERT(0);
25578 return WDI_STATUS_E_FAILURE;
25579 }
25580 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
25581
25582 updateChannelParams->numChan = num_channels;
25583 wpalMemoryCopy(&updateChannelParams->chanParam,
25584 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
25585 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
25586
25587 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
25588 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
25589
25590 /*-------------------------------------------------------------------------
25591 Send Update channel request to fw
25592 -------------------------------------------------------------------------*/
25593 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
25594 wdiUpdateChanParamsCb, pEventData->pUserData,
25595 WDI_UPDATE_CHAN_RESP);
25596}
25597
25598/**
Jeff Johnson295189b2012-06-20 16:38:30 -070025599 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025600
25601 @param pWDICtx: pointer to the WLAN DAL context
25602 pEventData: pointer to the event information structure
25603
Jeff Johnson295189b2012-06-20 16:38:30 -070025604 @see
25605 @return Result of the function call
25606*/
25607WDI_Status
25608WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025609(
Jeff Johnson295189b2012-06-20 16:38:30 -070025610 WDI_ControlBlockType* pWDICtx,
25611 WDI_EventInfoType* pEventData
25612)
25613{
Srikant Kuppa066904f2013-05-07 13:56:02 -070025614 WDI_LowLevelIndType wdiInd;
25615 tpPrefNetwFoundParams pNetwFoundParams;
25616 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025617
25618
25619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025620 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025621 -------------------------------------------------------------------------*/
25622 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25623 ( NULL == pEventData->pEventData ))
25624 {
25625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025626 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025627 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025629 }
25630
25631 /*-------------------------------------------------------------------------
25632 Extract indication and send it to UMAC
25633 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070025634 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25635
25636 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25637 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25638 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25639
25640 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25641 {
25642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25643 "%s: fail to allocate memory", __func__);
25644 return WDI_STATUS_MEM_FAILURE;
25645 }
25646
25647 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25648 (pNetwFoundParams->ssId.length < 32 )?
25649 pNetwFoundParams->ssId.length : 32;
25650 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25651 pNetwFoundParams->ssId.ssId,
25652 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25653 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25654 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25655 pNetwFoundParams->frameLength;
25656 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25657 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25658 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025659
25660 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025661 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025662
Jeff Johnson295189b2012-06-20 16:38:30 -070025663 // DEBUG
25664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang56002a22013-08-28 17:55:56 -070025665 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025666 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070025667 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025668 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070025669 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025670 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25671
ltimariub77f24b2013-01-24 18:54:33 -080025672 if ( pWDICtx->wdiLowLevelIndCB )
25673 {
25674 /*Notify UMAC*/
25675 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25676 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025677
25678 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025679}
25680
25681/**
25682 @brief Process PNO Rsp function (called when a
25683 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025684
25685 @param pWDICtx: pointer to the WLAN DAL context
25686 pEventData: pointer to the event information structure
25687
Jeff Johnson295189b2012-06-20 16:38:30 -070025688 @see
25689 @return Result of the function call
25690*/
25691WDI_Status
25692WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025693(
Jeff Johnson295189b2012-06-20 16:38:30 -070025694 WDI_ControlBlockType* pWDICtx,
25695 WDI_EventInfoType* pEventData
25696)
25697{
25698 WDI_Status wdiStatus;
25699 eHalStatus halStatus;
25700 WDI_PNOScanCb wdiPNOScanCb = NULL;
25701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25702
25703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025704 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025705 -------------------------------------------------------------------------*/
25706 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25707 ( NULL == pEventData->pEventData ))
25708 {
25709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025710 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025713 }
25714
25715
Jeff Johnsone7245742012-09-05 17:12:55 -070025716 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025717
25718 /*-------------------------------------------------------------------------
25719 Extract response and send it to UMAC
25720 -------------------------------------------------------------------------*/
25721 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025722 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025723
25724 /*Notify UMAC*/
25725 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25726
Jeff Johnsone7245742012-09-05 17:12:55 -070025727 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025728}/*WDI_ProcessSetPreferredNetworkRsp*/
25729
25730/**
25731 @brief Process RSSI Filter Rsp function (called when a
25732 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025733
25734 @param pWDICtx: pointer to the WLAN DAL context
25735 pEventData: pointer to the event information structure
25736
Jeff Johnson295189b2012-06-20 16:38:30 -070025737 @see
25738 @return Result of the function call
25739*/
25740WDI_Status
25741WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025742(
Jeff Johnson295189b2012-06-20 16:38:30 -070025743 WDI_ControlBlockType* pWDICtx,
25744 WDI_EventInfoType* pEventData
25745)
25746{
25747 WDI_Status wdiStatus;
25748 eHalStatus halStatus;
25749 WDI_RssiFilterCb wdiRssiFilterCb;
25750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25751
25752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025754 -------------------------------------------------------------------------*/
25755 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25756 ( NULL == pEventData->pEventData ))
25757 {
25758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025759 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025762 }
25763
Jeff Johnsone7245742012-09-05 17:12:55 -070025764 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025765
25766 /*-------------------------------------------------------------------------
25767 Extract response and send it to UMAC
25768 -------------------------------------------------------------------------*/
25769 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025770 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025771
25772 /*Notify UMAC*/
25773 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25774
Jeff Johnsone7245742012-09-05 17:12:55 -070025775 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025776}/*WDI_ProcessSetRssiFilterRsp*/
25777
25778/**
25779 @brief Process Update Scan Params Rsp function (called when a
25780 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025781
25782 @param pWDICtx: pointer to the WLAN DAL context
25783 pEventData: pointer to the event information structure
25784
Jeff Johnson295189b2012-06-20 16:38:30 -070025785 @see
25786 @return Result of the function call
25787*/
25788WDI_Status
25789WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025790(
Jeff Johnson295189b2012-06-20 16:38:30 -070025791 WDI_ControlBlockType* pWDICtx,
25792 WDI_EventInfoType* pEventData
25793)
25794{
25795 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025796 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025797 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025798 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25800
25801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025803 -------------------------------------------------------------------------*/
25804 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25805 ( NULL == pEventData->pEventData ))
25806 {
25807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025811 }
25812
25813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025814 "%s: Process UPD scan params ptr : %p",
25815 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025816
Jeff Johnsone7245742012-09-05 17:12:55 -070025817 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025818
25819 /*-------------------------------------------------------------------------
25820 Extract response and send it to UMAC
25821 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025822 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25823 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025824 sizeof(halUpdScanParams.status));
25825
25826 uStatus = halUpdScanParams.status;
25827
25828 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025829 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025830
25831 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025832 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025833
Jeff Johnsone7245742012-09-05 17:12:55 -070025834 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025835
25836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025837 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025838 halUpdScanParams.status);
25839
25840 /*Notify UMAC*/
25841 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25842
Jeff Johnsone7245742012-09-05 17:12:55 -070025843 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025844}
25845#endif // FEATURE_WLAN_SCAN_PNO
25846
25847#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025848WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025849WDI_8023MulticastListReq
25850(
25851 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25852 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25853 void* pUserData
25854)
25855{
25856 WDI_EventInfoType wdiEventData;
25857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25858
25859 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025860 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025861
25862 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025863 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025864 ------------------------------------------------------------------------*/
25865 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25866 {
25867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25868 "WDI API call before module is initialized - Fail request");
25869
Jeff Johnsone7245742012-09-05 17:12:55 -070025870 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025871 }
25872
25873 /*------------------------------------------------------------------------
25874 Fill in Event data and post to the Main FSM
25875 ------------------------------------------------------------------------*/
25876 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025877 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025878 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025879 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025880 wdiEventData.pUserData = pUserData;
25881
25882 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25883}
25884
Jeff Johnsone7245742012-09-05 17:12:55 -070025885WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025886WDI_ReceiveFilterSetFilterReq
25887(
25888 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25889 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25890 void* pUserData
25891)
25892{
25893 WDI_EventInfoType wdiEventData;
25894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25895
25896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025897 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025898
25899 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025900 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025901 ------------------------------------------------------------------------*/
25902 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25903 {
25904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25905 "WDI API call before module is initialized - Fail request");
25906
Jeff Johnsone7245742012-09-05 17:12:55 -070025907 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025908 }
25909
25910 /*------------------------------------------------------------------------
25911 Fill in Event data and post to the Main FSM
25912 ------------------------------------------------------------------------*/
25913 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025914 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25915 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070025916 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25917 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025918 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025919 wdiEventData.pUserData = pUserData;
25920
25921
25922 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25923}
25924
Jeff Johnsone7245742012-09-05 17:12:55 -070025925WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025926WDI_FilterMatchCountReq
25927(
25928 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25929 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25930 void* pUserData
25931)
25932{
25933 WDI_EventInfoType wdiEventData;
25934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25935
25936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025937 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025938
25939 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025940 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025941 ------------------------------------------------------------------------*/
25942 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25943 {
25944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25945 "WDI API call before module is initialized - Fail request");
25946
Jeff Johnsone7245742012-09-05 17:12:55 -070025947 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025948 }
25949
25950 /*------------------------------------------------------------------------
25951 Fill in Event data and post to the Main FSM
25952 ------------------------------------------------------------------------*/
25953 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025954 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025955 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025956 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025957 wdiEventData.pUserData = pUserData;
25958
25959
25960 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25961}
25962
Jeff Johnsone7245742012-09-05 17:12:55 -070025963WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025964WDI_ReceiveFilterClearFilterReq
25965(
25966 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25967 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25968 void* pUserData
25969)
25970{
25971 WDI_EventInfoType wdiEventData;
25972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25973
25974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025975 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025976
25977 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025978 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025979 ------------------------------------------------------------------------*/
25980 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25981 {
25982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25983 "WDI API call before module is initialized - Fail request");
25984
Jeff Johnsone7245742012-09-05 17:12:55 -070025985 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025986 }
25987
25988 /*------------------------------------------------------------------------
25989 Fill in Event data and post to the Main FSM
25990 ------------------------------------------------------------------------*/
25991 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025992 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025993 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025994 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025995 wdiEventData.pUserData = pUserData;
25996
25997
25998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25999}
26000
26001/**
26002 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026003
26004 @param pWDICtx: pointer to the WLAN DAL context
26005 pEventData: pointer to the event information structure
26006
Jeff Johnson295189b2012-06-20 16:38:30 -070026007 @see
26008 @return Result of the function call
26009*/
26010WDI_Status
26011WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026012(
Jeff Johnson295189b2012-06-20 16:38:30 -070026013 WDI_ControlBlockType* pWDICtx,
26014 WDI_EventInfoType* pEventData
26015)
26016{
26017 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
26018 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026019 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026020 wpt_uint16 usDataOffset = 0;
26021 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026022 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026023 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026024 wpt_uint8 ucCurrentBSSSesIdx = 0;
26025 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026026
26027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026028 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026029
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026030 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
26031 if( NULL == pRcvFltMcAddrListType )
26032 {
26033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26034 "Failed to alloc in WDI_Process8023MulticastListReq");
26035 return WDI_STATUS_E_FAILURE;
26036 }
26037
Jeff Johnson295189b2012-06-20 16:38:30 -070026038 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026039 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026040 -------------------------------------------------------------------------*/
26041 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026042 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026043 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026044 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026045 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
26046 {
26047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026048 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026049 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026051 return WDI_STATUS_E_FAILURE;
26052 }
26053
26054 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26055 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
26056 &pBSSSes);
26057 if ( NULL == pBSSSes )
26058 {
26059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026060 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026061 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026063 }
26064
26065 /*-----------------------------------------------------------------------
26066 Get message buffer
26067 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026068 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26069 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026070 sizeof(tHalRcvFltMcAddrListType),
26071 &pSendBuffer, &usDataOffset, &usSendSize))||
26072 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
26073 {
26074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26075 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026076 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026077 pEventData, pwdiFltPktSetMcListReqParamsType,
26078 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070026079 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026082 }
26083
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026084 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070026085 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026086 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026087 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026088 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070026089 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
26090 sizeof(tSirMacAddr));
26091 }
26092
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026093 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026094 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026095 pRcvFltMcAddrListType,
26096 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070026097
26098 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026099 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026100
26101
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026102 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026104 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026105 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026106 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026107 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026108 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026109}
26110
26111/**
26112 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026113
26114 @param pWDICtx: pointer to the WLAN DAL context
26115 pEventData: pointer to the event information structure
26116
Jeff Johnson295189b2012-06-20 16:38:30 -070026117 @see
26118 @return Result of the function call
26119*/
26120WDI_Status
26121WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026122(
Jeff Johnson295189b2012-06-20 16:38:30 -070026123 WDI_ControlBlockType* pWDICtx,
26124 WDI_EventInfoType* pEventData
26125)
26126{
26127 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
26128 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026129 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026130 wpt_uint16 usDataOffset = 0;
26131 wpt_uint16 usSendSize = 0;
26132 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026133 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026134 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026135 wpt_uint8 ucCurrentBSSSesIdx = 0;
26136 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026137 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
26138 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026139
26140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026141 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026142
26143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026144 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026145 -------------------------------------------------------------------------*/
26146 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026147 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070026148 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026149 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026150 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
26151 {
26152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026153 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026155 return WDI_STATUS_E_FAILURE;
26156 }
26157
26158 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26159 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
26160 &pBSSSes);
26161 if ( NULL == pBSSSes )
26162 {
26163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026164 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026166 }
26167
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026168 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
26169 {
Jeff Johnson295189b2012-06-20 16:38:30 -070026170
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026171 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
26172 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26173 * sizeof(tHalSessionizedRcvPktFilterCfgType));
26174
26175 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
26176 usSessRcvPktFilterCfgSize);
26177
26178 if(NULL == pSessRcvPktFilterCfg)
26179 {
26180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26181 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026182 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026183 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026184 WDI_ASSERT(0);
26185 return WDI_STATUS_E_FAILURE;
26186 }
26187
26188 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
26189
26190 /*-----------------------------------------------------------------------
26191 Get message buffer
26192 -----------------------------------------------------------------------*/
26193
26194 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
26195 usSessRcvPktFilterCfgSize,
26196 &pSendBuffer, &usDataOffset, &usSendSize))||
26197 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
26198 {
26199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26200 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026201 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026202 pEventData, pwdiSetRcvPktFilterReqInfo,
26203 wdiReceiveFilterSetFilterCb);
26204 WDI_ASSERT(0);
26205 wpalMemoryFree(pSessRcvPktFilterCfg);
26206 return WDI_STATUS_E_FAILURE;
26207 }
26208
26209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026210 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026211 usSendSize,pSessRcvPktFilterCfg);
26212
26213 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26214 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26215 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26216 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
26217
26218 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
26219
26220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26221 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
26222 pSessRcvPktFilterCfg->filterType);
26223 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26224 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
26225 pSessRcvPktFilterCfg->coleasceTime);
26226
26227 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
26228 {
26229 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
26230 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26231 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
26232 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26233 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
26234 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26235 pSessRcvPktFilterCfg->paramsData[i].dataLength =
26236 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
26237
26238 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
26239 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26240 8);
26241 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
26242 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26243 8);
26244
26245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026246 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026247 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
26248 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
26249
26250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026251 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026252 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
26253 pSessRcvPktFilterCfg->paramsData[i].dataLength);
26254
26255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026256 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026257 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
26258 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
26259 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
26260 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
26261 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
26262 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
26263
26264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026265 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026266 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26267 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26268 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26269 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26270 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26271 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26272 }
26273
26274 wpalMemoryCopy( pSendBuffer+usDataOffset,
26275 pSessRcvPktFilterCfg,
26276 usSessRcvPktFilterCfgSize);
26277
26278
26279 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26280 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26281
26282 wpalMemoryFree(pSessRcvPktFilterCfg);
26283
26284 }
26285 /*If SLM_SESSIONIZATION is not supported then do this */
26286 else
26287 {
26288 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26289 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26290 * sizeof(tHalRcvPktFilterParams));
26291
26292 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026293 usRcvPktFilterCfgSize);
26294
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026295 if(NULL == pRcvPktFilterCfg)
26296 {
26297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26298 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026299 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026300 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026301 WDI_ASSERT(0);
26302 return WDI_STATUS_E_FAILURE;
26303 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026304
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026305 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026306
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026307 /*-----------------------------------------------------------------------
26308 Get message buffer
26309 -----------------------------------------------------------------------*/
26310 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026311 usRcvPktFilterCfgSize,
26312 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026313 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26314 {
26315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026316 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026317 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026318 pEventData, pwdiSetRcvPktFilterReqInfo,
26319 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026320 WDI_ASSERT(0);
26321 wpalMemoryFree(pRcvPktFilterCfg);
26322 return WDI_STATUS_E_FAILURE;
26323 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026324
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026326 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026327 usSendSize,usRcvPktFilterCfgSize);
26328
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026329 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26330 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26331 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26332 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026333
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026335 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026336 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026338 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026339 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026340
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026341 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26342 {
26343 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26344 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26345 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26346 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26347 pRcvPktFilterCfg->paramsData[i].dataOffset =
26348 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26349 pRcvPktFilterCfg->paramsData[i].dataLength =
26350 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070026351
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026352 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026353 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26354 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026355 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070026356 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26357 8);
26358
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026360 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070026361 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070026362 pRcvPktFilterCfg->paramsData[i].cmpFlag);
26363
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026365 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026366 pRcvPktFilterCfg->paramsData[i].dataOffset,
26367 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026368
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026370 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026371 pRcvPktFilterCfg->paramsData[i].compareData[0],
26372 pRcvPktFilterCfg->paramsData[i].compareData[1],
26373 pRcvPktFilterCfg->paramsData[i].compareData[2],
26374 pRcvPktFilterCfg->paramsData[i].compareData[3],
26375 pRcvPktFilterCfg->paramsData[i].compareData[4],
26376 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070026377
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026379 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026380 pRcvPktFilterCfg->paramsData[i].dataMask[0],
26381 pRcvPktFilterCfg->paramsData[i].dataMask[1],
26382 pRcvPktFilterCfg->paramsData[i].dataMask[2],
26383 pRcvPktFilterCfg->paramsData[i].dataMask[3],
26384 pRcvPktFilterCfg->paramsData[i].dataMask[4],
26385 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
26386 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026387
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026388 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070026389 pRcvPktFilterCfg,
26390 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026391
26392
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026393 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26394 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026395
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026397 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026398 wpalMemoryFree(pRcvPktFilterCfg);
26399 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026401 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026402 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026403 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026404 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026405 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026406}
26407
26408/**
26409 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026410
26411 @param pWDICtx: pointer to the WLAN DAL context
26412 pEventData: pointer to the event information structure
26413
Jeff Johnson295189b2012-06-20 16:38:30 -070026414 @see
26415 @return Result of the function call
26416*/
26417WDI_Status
26418WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026419(
Jeff Johnson295189b2012-06-20 16:38:30 -070026420 WDI_ControlBlockType* pWDICtx,
26421 WDI_EventInfoType* pEventData
26422)
26423{
26424 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
26425 NULL;
26426 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
26427 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026428 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026429 wpt_uint16 usDataOffset = 0;
26430 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026431 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
26432 wpt_uint8 ucCurrentBSSSesIdx = 0;
26433 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026434
26435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026436 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026437
26438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026440 -------------------------------------------------------------------------*/
26441 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026442 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026443 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026444 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026445 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
26446 {
26447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026451 }
26452
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026453 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26454 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26455 &pBSSSes);
26456 if ( NULL == pBSSSes )
26457 {
26458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026459 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026460 return WDI_STATUS_E_FAILURE;
26461 }
26462
Jeff Johnson295189b2012-06-20 16:38:30 -070026463 /*-----------------------------------------------------------------------
26464 Get message buffer
26465 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026466 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26467 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026468 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026469 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026470 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026471 {
26472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26473 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026474 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026475 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26476 wdiFilterMatchCountCb);
26477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026479 }
26480
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026481 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26482 wpalMemoryCopy( pSendBuffer+usDataOffset,
26483 &rcvFltPktMatchCntReqParam,
26484 sizeof(rcvFltPktMatchCntReqParam));
26485
Jeff Johnson295189b2012-06-20 16:38:30 -070026486 //
26487 // Don't need to fill send buffer other than header
26488 //
26489 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026490 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026491
26492
26493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026494 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026495 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026496 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26497 wdiFilterMatchCountCb,
26498 pEventData->pUserData,
26499 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026500}
26501
26502/**
26503 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026504
26505 @param pWDICtx: pointer to the WLAN DAL context
26506 pEventData: pointer to the event information structure
26507
Jeff Johnson295189b2012-06-20 16:38:30 -070026508 @see
26509 @return Result of the function call
26510*/
26511WDI_Status
26512WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026513(
Jeff Johnson295189b2012-06-20 16:38:30 -070026514 WDI_ControlBlockType* pWDICtx,
26515 WDI_EventInfoType* pEventData
26516)
Jeff Johnsone7245742012-09-05 17:12:55 -070026517{
Jeff Johnson295189b2012-06-20 16:38:30 -070026518 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26519 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026520 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026521 wpt_uint16 usDataOffset = 0;
26522 wpt_uint16 usSendSize = 0;
26523 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026524 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026525 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026526
26527 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026528 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026529
26530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026531 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026532 -------------------------------------------------------------------------*/
26533 if (( NULL == pEventData ) ||
26534 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26535 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026536 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026537 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26538 {
26539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026542 return WDI_STATUS_E_FAILURE;
26543 }
26544
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026545 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026546 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26547 &pBSSSes);
26548 if ( NULL == pBSSSes )
26549 {
26550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026551 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026552 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026553 }
26554
26555 /*-----------------------------------------------------------------------
26556 Get message buffer
26557 -----------------------------------------------------------------------*/
26558 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026559 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026560 sizeof(tHalRcvFltPktClearParam),
26561 &pSendBuffer, &usDataOffset, &usSendSize))||
26562 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26563 {
26564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26565 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026566 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026567 pEventData, pwdiRcvFltPktClearReqParamsType,
26568 wdiRcvFltPktClearFilterCb);
26569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026571 }
26572
26573
26574 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026575 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026576 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026577 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026578
Jeff Johnsone7245742012-09-05 17:12:55 -070026579 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26580 wpalMemoryCopy( pSendBuffer+usDataOffset,
26581 &rcvFltPktClearParam,
26582 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026583
26584 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026585 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026586
26587
26588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026589 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026590 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026591 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026592 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026593 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026594}
26595
26596/**
26597 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026598
26599 @param pWDICtx: pointer to the WLAN DAL context
26600 pEventData: pointer to the event information structure
26601
Jeff Johnson295189b2012-06-20 16:38:30 -070026602 @see
26603 @return Result of the function call
26604*/
26605WDI_Status
26606WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026607(
Jeff Johnson295189b2012-06-20 16:38:30 -070026608 WDI_ControlBlockType* pWDICtx,
26609 WDI_EventInfoType* pEventData
26610)
26611{
Jeff Johnson295189b2012-06-20 16:38:30 -070026612 eHalStatus halStatus;
26613 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026614 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26615 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26617
26618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026619 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026620
26621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026623 -------------------------------------------------------------------------*/
26624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26625 ( NULL == pEventData->pEventData ))
26626 {
26627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026631 }
26632
Jeff Johnsone7245742012-09-05 17:12:55 -070026633 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026634
26635 /*-------------------------------------------------------------------------
26636 Extract response and send it to UMAC
26637 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026638 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26639 {
26640 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26641 pEventData->pEventData,
26642 sizeof(halRcvFltPktSetMcListRsp));
26643
26644 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26645 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26646 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26647 halRcvFltPktSetMcListRsp.bssIdx;
26648 }
26649 else
26650 {
26651 halStatus = *((eHalStatus*)pEventData->pEventData);
26652 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26653 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026654
26655 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026656 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026657
Jeff Johnsone7245742012-09-05 17:12:55 -070026658 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026659}
26660
26661/**
26662 @brief Process Set Rsp function (called when a
26663 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026664
26665 @param pWDICtx: pointer to the WLAN DAL context
26666 pEventData: pointer to the event information structure
26667
Jeff Johnson295189b2012-06-20 16:38:30 -070026668 @see
26669 @return Result of the function call
26670*/
26671WDI_Status
26672WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026673(
Jeff Johnson295189b2012-06-20 16:38:30 -070026674 WDI_ControlBlockType* pWDICtx,
26675 WDI_EventInfoType* pEventData
26676)
26677{
Jeff Johnson295189b2012-06-20 16:38:30 -070026678 eHalStatus halStatus;
26679 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026680 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26681 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26683
26684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026685 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026686
26687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026688 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026689 -------------------------------------------------------------------------*/
26690 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26691 ( NULL == pEventData->pEventData ))
26692 {
26693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026694 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026695 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026697 }
26698
26699 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026700 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026701
26702 /*-------------------------------------------------------------------------
26703 Extract response and send it to UMAC
26704 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026705 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26706 {
26707 wpalMemoryCopy( &halSetPktFilterRspParams,
26708 pEventData->pEventData,
26709 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026710
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026711 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26712 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26713 }
26714 else
26715 {
26716 halStatus = *((eHalStatus*)pEventData->pEventData);
26717 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26718 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026719 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026720 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026721
Jeff Johnsone7245742012-09-05 17:12:55 -070026722 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026723}
26724
26725/**
26726 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026727
26728 @param pWDICtx: pointer to the WLAN DAL context
26729 pEventData: pointer to the event information structure
26730
Jeff Johnson295189b2012-06-20 16:38:30 -070026731 @see
26732 @return Result of the function call
26733*/
26734WDI_Status
26735WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026736(
Jeff Johnson295189b2012-06-20 16:38:30 -070026737 WDI_ControlBlockType* pWDICtx,
26738 WDI_EventInfoType* pEventData
26739)
26740{
Jeff Johnson295189b2012-06-20 16:38:30 -070026741 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026742 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026743 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26744 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026745
26746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26747
26748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026749 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026750
26751 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026752 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026753 -------------------------------------------------------------------------*/
26754 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26755 ( NULL == pEventData->pEventData ))
26756 {
26757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026758 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026759 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026760 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026761 }
26762
Jeff Johnsone7245742012-09-05 17:12:55 -070026763 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026764
26765 /*-------------------------------------------------------------------------
26766 Extract response and send it to UMAC
26767 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026768 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26769 {
26770 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26771 pEventData->pEventData,
26772 sizeof(halRcvFltrPktMatachRsp));
26773
26774 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26775 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26776 }
26777 else
26778 {
26779 halStatus = *((eHalStatus*)pEventData->pEventData);
26780 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26781 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026782
26783 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026784 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026785
Jeff Johnsone7245742012-09-05 17:12:55 -070026786 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026787}
26788
26789/**
26790 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026791
26792 @param pWDICtx: pointer to the WLAN DAL context
26793 pEventData: pointer to the event information structure
26794
Jeff Johnson295189b2012-06-20 16:38:30 -070026795 @see
26796 @return Result of the function call
26797*/
26798WDI_Status
26799WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026800(
Jeff Johnson295189b2012-06-20 16:38:30 -070026801 WDI_ControlBlockType* pWDICtx,
26802 WDI_EventInfoType* pEventData
26803)
26804{
Jeff Johnson295189b2012-06-20 16:38:30 -070026805 eHalStatus halStatus;
26806 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026807 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26808 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26810
26811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026812 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026813
26814 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026815 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026816 -------------------------------------------------------------------------*/
26817 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26818 ( NULL == pEventData->pEventData ))
26819 {
26820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026821 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026824 }
26825
26826 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026827 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026828
26829 /*-------------------------------------------------------------------------
26830 Extract response and send it to UMAC
26831 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026832 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26833 {
26834 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26835 pEventData->pEventData,
26836 sizeof(halRcvFltPktClearRspMsg));
26837
26838 wdiRcvFltPktClearRspParamsType.wdiStatus =
26839 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26840 wdiRcvFltPktClearRspParamsType.bssIdx =
26841 halRcvFltPktClearRspMsg.bssIdx;
26842 }
26843 else
26844 {
26845 halStatus = *((eHalStatus*)pEventData->pEventData);
26846 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26847 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026848
26849 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026850 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026851
Jeff Johnsone7245742012-09-05 17:12:55 -070026852 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026853}
26854#endif // WLAN_FEATURE_PACKET_FILTERING
26855
26856/**
26857 @brief Process Shutdown Rsp function
26858 There is no shutdown response comming from HAL
26859 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026860
Jeff Johnson295189b2012-06-20 16:38:30 -070026861 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026862 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026863
26864 @see
26865 @return Result of the function call
26866*/
26867WDI_Status
26868WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026869(
Jeff Johnson295189b2012-06-20 16:38:30 -070026870 WDI_ControlBlockType* pWDICtx,
26871 WDI_EventInfoType* pEventData
26872)
26873{
26874 /*There is no shutdown response comming from HAL - function just kept for
26875 simmetry */
26876 WDI_ASSERT(0);
26877 return WDI_STATUS_SUCCESS;
26878}/*WDI_ProcessShutdownRsp*/
26879
26880/**
26881 @brief WDI_SetPowerParamsReq
26882
Jeff Johnsone7245742012-09-05 17:12:55 -070026883 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026884 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026885
Jeff Johnson295189b2012-06-20 16:38:30 -070026886 wdiPowerParamsCb: callback for passing back the response
26887 of the Set Power Params operation received from the
26888 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026889
Jeff Johnson295189b2012-06-20 16:38:30 -070026890 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026891 callback
26892
Jeff Johnson295189b2012-06-20 16:38:30 -070026893 @return Result of the function call
26894*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026895WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026896WDI_SetPowerParamsReq
26897(
26898 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26899 WDI_SetPowerParamsCb wdiPowerParamsCb,
26900 void* pUserData
26901)
26902{
26903 WDI_EventInfoType wdiEventData;
26904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26905
26906 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026907 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026908 ------------------------------------------------------------------------*/
26909 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26910 {
26911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26912 "WDI API call before module is initialized - Fail request");
26913
Jeff Johnsone7245742012-09-05 17:12:55 -070026914 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026915 }
26916
26917 /*------------------------------------------------------------------------
26918 Fill in Event data and post to the Main FSM
26919 ------------------------------------------------------------------------*/
26920 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026921 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026922 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026923 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026924 wdiEventData.pUserData = pUserData;
26925
26926 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26927}/*WDI_SetPowerParamsReq*/
26928
26929/**
26930 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026931
26932 @param pWDICtx: pointer to the WLAN DAL context
26933 pEventData: pointer to the event information structure
26934
Jeff Johnson295189b2012-06-20 16:38:30 -070026935 @see
26936 @return Result of the function call
26937*/
26938WDI_Status
26939WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026940(
Jeff Johnson295189b2012-06-20 16:38:30 -070026941 WDI_ControlBlockType* pWDICtx,
26942 WDI_EventInfoType* pEventData
26943)
26944{
26945 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26946 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026947 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026948 wpt_uint16 usDataOffset = 0;
26949 wpt_uint16 usSendSize = 0;
26950 tSetPowerParamsType powerParams;
26951
26952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026954 -------------------------------------------------------------------------*/
26955 if (( NULL == pEventData ) ||
26956 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26957 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26958 {
26959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026963 }
26964
26965 /*-----------------------------------------------------------------------
26966 Get message buffer
26967 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026968 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026969 sizeof(powerParams),
26970 &pSendBuffer, &usDataOffset, &usSendSize))||
26971 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26972 {
26973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026974 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026975 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026978 }
26979
26980 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026981 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026982 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26983
26984 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026985 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026986 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26987
26988 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026989 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026990 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26991
26992 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026993 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026994 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26995
26996 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026997 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026998 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26999
27000 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027001 powerParams.uBETInterval =
27002 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070027003
Yue Mac24062f2013-05-13 17:01:29 -070027004 /* MAX LI for modulated DTIM */
27005 powerParams.uMaxLIModulatedDTIM =
27006 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070027007
27008 wpalMemoryCopy( pSendBuffer+usDataOffset,
27009 &powerParams,
27010 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027011
27012 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027013 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027014
27015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027016 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027017 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027018 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27019 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027020}
27021
27022/**
27023 @brief Process Power Params Rsp function (called when a
27024 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027025
27026 @param pWDICtx: pointer to the WLAN DAL context
27027 pEventData: pointer to the event information structure
27028
Jeff Johnson295189b2012-06-20 16:38:30 -070027029 @see
27030 @return Result of the function call
27031*/
27032WDI_Status
27033WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027034(
Jeff Johnson295189b2012-06-20 16:38:30 -070027035 WDI_ControlBlockType* pWDICtx,
27036 WDI_EventInfoType* pEventData
27037)
27038{
27039 WDI_Status wdiStatus;
27040 eHalStatus halStatus;
27041 WDI_SetPowerParamsCb wdiPowerParamsCb;
27042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27043
27044 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027045 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027046 -------------------------------------------------------------------------*/
27047 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27048 ( NULL == pEventData->pEventData ))
27049 {
27050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027051 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027054 }
27055
Jeff Johnsone7245742012-09-05 17:12:55 -070027056 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027057
27058 /*-------------------------------------------------------------------------
27059 Extract response and send it to UMAC
27060 -------------------------------------------------------------------------*/
27061 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027062 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027063
27064 /*Notify UMAC*/
27065 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27066
Jeff Johnsone7245742012-09-05 17:12:55 -070027067 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027068}/*WDI_ProcessSetPowerParamsRsp*/
27069
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027070/**
27071 @brief WDI_dhcpStartInd
27072 Host will send an event to the FW when DHCP is initiated
27073
27074 @param
27075 WDI_DHCPInd: DHCP Indication
27076 @see
27077 @return Result of the function call
27078*/
27079WDI_Status
27080WDI_dhcpStartInd
27081(
27082 WDI_DHCPInd *wdiDHCPInd
27083)
27084{
27085 WDI_EventInfoType wdiEventData;
27086
27087 /*------------------------------------------------------------------------
27088 Sanity Check
27089 ------------------------------------------------------------------------*/
27090 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27091 {
27092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27093 "WDI API call before module is initialized - Fail request");
27094
27095 return WDI_STATUS_E_NOT_ALLOWED;
27096 }
27097
27098 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
27099 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027100 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027101 wdiEventData.pCBfnc = NULL;
27102 wdiEventData.pUserData = NULL;
27103
27104 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27105}
27106
27107
27108/**
27109 @brief WDI_dhcpStopInd
27110 Host will send an event to the FW when DHCP is completed
27111
27112 @param
27113 WDI_DHCPInd: DHCP Indication
27114 @see
27115 @return Result of the function call
27116*/
27117WDI_Status
27118WDI_dhcpStopInd
27119(
27120 WDI_DHCPInd *wdiDHCPInd
27121)
27122{
27123 WDI_EventInfoType wdiEventData;
27124
27125 /*------------------------------------------------------------------------
27126 Sanity Check
27127 ------------------------------------------------------------------------*/
27128 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27129 {
27130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27131 "WDI API call before module is initialized - Fail request");
27132
27133 return WDI_STATUS_E_NOT_ALLOWED;
27134 }
27135
27136 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
27137 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027138 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027139 wdiEventData.pCBfnc = NULL;
27140 wdiEventData.pUserData = NULL;
27141
27142 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27143}
27144
27145
27146/**
27147 @brief Process DHCP Start Indication message and post it to HAL
27148
27149 @param pWDICtx: pointer to the WLAN DAL context
27150 pEventData: pointer to the event information structure
27151
27152 @see
27153 @return Result of the function call
27154*/
27155WDI_Status
27156WDI_ProcessDHCPStartInd
27157(
27158 WDI_ControlBlockType* pWDICtx,
27159 WDI_EventInfoType* pEventData
27160)
27161{
27162 wpt_uint8* pSendBuffer = NULL;
27163 wpt_uint16 usDataOffset = 0;
27164 wpt_uint16 usSendSize = 0;
27165 wpt_uint16 usLen = 0;
27166 WDI_DHCPInd* pwdiDHCPInd = NULL;
27167 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027168 WDI_Status wdiStatus;
27169
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027170
27171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27172
27173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27174 "%s", __func__);
27175
27176 /*-------------------------------------------------------------------------
27177 Sanity check
27178 -------------------------------------------------------------------------*/
27179 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27180 {
27181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27182 "%s: Invalid parameters", __func__);
27183 WDI_ASSERT(0);
27184 return WDI_STATUS_E_FAILURE;
27185 }
27186 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27187 /*-----------------------------------------------------------------------
27188 Get message buffer
27189 -----------------------------------------------------------------------*/
27190
27191 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27192 WDI_DHCP_START_IND,
27193 sizeof(tDHCPInfo),
27194 &pSendBuffer, &usDataOffset, &usSendSize))||
27195 ( usSendSize < (usDataOffset + usLen )))
27196 {
27197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27198 "Unable to get send buffer in DHCP Start req %p ",
27199 pEventData);
27200 WDI_ASSERT(0);
27201 return WDI_STATUS_E_FAILURE;
27202 }
27203
Sandeep Puligillaee789512014-02-13 19:14:52 +053027204 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027205 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27206 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27207 WDI_MAC_ADDR_LEN);
27208
27209 pWDICtx->pReqStatusUserData = NULL;
27210 pWDICtx->pfncRspCB = NULL;
27211
27212 /*-------------------------------------------------------------------------
27213 Send DHCP Start Indication to HAL
27214 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027215 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27216 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027217}/*WDI_ProcessDHCPStartInd*/
27218
27219/**
27220 @brief Process DHCP Stop indication message and post it to HAL
27221
27222 @param pWDICtx: pointer to the WLAN DAL context
27223 pEventData: pointer to the event information structure
27224
27225 @see
27226 @return Result of the function call
27227*/
27228WDI_Status
27229WDI_ProcessDHCPStopInd
27230(
27231 WDI_ControlBlockType* pWDICtx,
27232 WDI_EventInfoType* pEventData
27233)
27234{
27235 wpt_uint8* pSendBuffer = NULL;
27236 wpt_uint16 usDataOffset = 0;
27237 wpt_uint16 usSendSize = 0;
27238 wpt_uint16 usLen = 0;
27239 WDI_DHCPInd* pwdiDHCPInd = NULL;
27240 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027241 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027242
27243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27244
27245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27246 "%s", __func__);
27247
27248 /*-------------------------------------------------------------------------
27249 Sanity check
27250 -------------------------------------------------------------------------*/
27251
27252 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27253 {
27254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27255 "%s: Invalid parameters", __func__);
27256 WDI_ASSERT(0);
27257 return WDI_STATUS_E_FAILURE;
27258 }
27259 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27260 /*-----------------------------------------------------------------------
27261 Get message buffer
27262 -----------------------------------------------------------------------*/
27263
27264 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27265 WDI_DHCP_STOP_IND,
27266 sizeof(tDHCPInfo),
27267 &pSendBuffer, &usDataOffset, &usSendSize))||
27268 ( usSendSize < (usDataOffset + usLen )))
27269 {
27270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27271 "Unable to get send buffer in DHCP Start req %p ",
27272 pEventData);
27273 WDI_ASSERT(0);
27274 return WDI_STATUS_E_FAILURE;
27275 }
27276
Sandeep Puligillaee789512014-02-13 19:14:52 +053027277 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027278 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27279 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27280 WDI_MAC_ADDR_LEN);
27281
27282 pWDICtx->pReqStatusUserData = NULL;
27283 pWDICtx->pfncRspCB = NULL;
27284 /*-------------------------------------------------------------------------
27285 Send DHCP Stop indication to HAL
27286 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027287 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27288 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027289
27290}/*WDI_ProcessDHCPStopInd*/
27291
27292
Jeff Johnson295189b2012-06-20 16:38:30 -070027293#ifdef WLAN_FEATURE_GTK_OFFLOAD
27294/**
27295 @brief WDI_GTKOffloadReq will be called when the upper MAC
27296 wants to set GTK Rekey Counter while in power save. Upon
27297 the call of this API the WLAN DAL will pack and send a
27298 HAL GTK offload request message to the lower RIVA
27299 sub-system if DAL is in state STARTED.
27300
27301 In state BUSY this request will be queued. Request won't
27302 be allowed in any other state.
27303
27304 WDI_PostAssocReq must have been called.
27305
27306 @param pwdiGtkOffloadParams: the GTK offload as specified
27307 by the Device Interface
27308
27309 wdiGtkOffloadCb: callback for passing back the response
27310 of the GTK offload operation received from the device
27311
27312 pUserData: user data will be passed back with the
27313 callback
27314
27315 @see WDI_PostAssocReq
27316 @return Result of the function call
27317*/
27318WDI_Status
27319WDI_GTKOffloadReq
27320(
27321 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27322 WDI_GtkOffloadCb wdiGtkOffloadCb,
27323 void* pUserData
27324)
27325{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027326 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27328
27329 /*------------------------------------------------------------------------
27330 Sanity Check
27331 ------------------------------------------------------------------------*/
27332 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27333 {
27334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27335 "WDI API call before module is initialized - Fail request");
27336
27337 return WDI_STATUS_E_NOT_ALLOWED;
27338 }
27339
27340 /*------------------------------------------------------------------------
27341 Fill in Event data and post to the Main FSM
27342 ------------------------------------------------------------------------*/
27343 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27344 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027345 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027346 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27347 wdiEventData.pUserData = pUserData;
27348
27349 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27350}
27351
27352
27353/**
27354 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
27355 MAC wants to get GTK Rekey Counter while in power save.
27356 Upon the call of this API the WLAN DAL will pack and
27357 send a HAL GTK offload request message to the lower RIVA
27358 sub-system if DAL is in state STARTED.
27359
27360 In state BUSY this request will be queued. Request won't
27361 be allowed in any other state.
27362
27363 WDI_PostAssocReq must have been called.
27364
27365 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
27366 Information Message as specified by the
27367 Device Interface
27368
27369 wdiGtkOffloadGetInfoCb: callback for passing back the
27370 response of the GTK offload operation received from the
27371 device
27372
27373 pUserData: user data will be passed back with the
27374 callback
27375
27376 @see WDI_PostAssocReq
27377 @return Result of the function call
27378*/
27379WDI_Status
27380WDI_GTKOffloadGetInfoReq
27381(
27382 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
27383 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
27384 void* pUserData
27385)
27386{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027387 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27389
27390 /*------------------------------------------------------------------------
27391 Sanity Check
27392 ------------------------------------------------------------------------*/
27393 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27394 {
27395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27396 "WDI API call before module is initialized - Fail request");
27397
27398 return WDI_STATUS_E_NOT_ALLOWED;
27399 }
27400
27401 /*------------------------------------------------------------------------
27402 Fill in Event data and post to the Main FSM
27403 ------------------------------------------------------------------------*/
27404 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
27405 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
27406 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
27407 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
27408 wdiEventData.pUserData = pUserData;
27409
27410 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27411}
27412
27413
27414/**
27415 @brief Process set GTK Offload Request function
27416
27417 @param pWDICtx: pointer to the WLAN DAL context
27418 pEventData: pointer to the event information structure
27419
27420 @see
27421 @return Result of the function call
27422*/
27423WDI_Status
27424WDI_ProcessGTKOffloadReq
27425(
27426 WDI_ControlBlockType* pWDICtx,
27427 WDI_EventInfoType* pEventData
27428)
27429{
27430 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
27431 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
27432 wpt_uint8* pSendBuffer = NULL;
27433 wpt_uint16 usDataOffset = 0;
27434 wpt_uint16 usSendSize = 0;
27435 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027436 wpt_uint8 ucCurrentSessionId = 0;
27437 WDI_BSSSessionType* pBSSSes = NULL;
27438
Jeff Johnson295189b2012-06-20 16:38:30 -070027439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27440
27441 /*-------------------------------------------------------------------------
27442 Sanity check
27443 -------------------------------------------------------------------------*/
27444 if (( NULL == pEventData ) ||
27445 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
27446 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
27447 {
27448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027450 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027451 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027452 }
27453
27454 /*-----------------------------------------------------------------------
27455 Get message buffer
27456 -----------------------------------------------------------------------*/
27457 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27458 sizeof(gtkOffloadReqParams),
27459 &pSendBuffer, &usDataOffset, &usSendSize))||
27460 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27461 {
27462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027463 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027464 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27465 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027466 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027467 }
27468
27469 //
27470 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27471 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027472 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27473 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27474 &pBSSSes);
27475 if ( NULL == pBSSSes )
27476 {
27477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027478 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027479 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027480 }
27481
27482 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27483
Jeff Johnson295189b2012-06-20 16:38:30 -070027484 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27485 // Copy KCK
27486 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27487 // Copy KEK
27488 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27489 // Copy KeyReplayCounter
27490 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27491
27492 wpalMemoryCopy( pSendBuffer+usDataOffset,
27493 &gtkOffloadReqParams,
27494 sizeof(gtkOffloadReqParams));
27495
27496 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27497 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27498
27499 /*-------------------------------------------------------------------------
27500 Send Get STA Request to HAL
27501 -------------------------------------------------------------------------*/
27502 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27503 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027504
27505fail:
27506 // Release the message buffer so we don't leak
27507 wpalMemoryFree(pSendBuffer);
27508
27509failRequest:
27510 //WDA should have failure check to avoid the memory leak
27511 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027512}
27513
27514
27515/**
27516 @brief Process GTK Offload Get Information Request function
27517
27518 @param pWDICtx: pointer to the WLAN DAL context
27519 pEventData: pointer to the event information structure
27520
27521 @see
27522 @return Result of the function call
27523*/
27524WDI_Status
27525WDI_ProcessGTKOffloadGetInfoReq
27526(
27527 WDI_ControlBlockType* pWDICtx,
27528 WDI_EventInfoType* pEventData
27529)
27530{
27531 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27532 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27533 wpt_uint8* pSendBuffer = NULL;
27534 wpt_uint16 usDataOffset = 0;
27535 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027536 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27537 wpt_uint8 ucCurrentSessionId = 0;
27538 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027539
27540 /*-------------------------------------------------------------------------
27541 Sanity check
27542 -------------------------------------------------------------------------*/
27543 if (( NULL == pEventData ) ||
27544 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27545 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27546 {
27547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027548 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027549 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027550 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027551 }
27552
27553 /*-----------------------------------------------------------------------
27554 Get message buffer
27555 -----------------------------------------------------------------------*/
27556 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027557 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027558 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027559 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027560 {
27561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027562 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027563 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27564 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027565 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027566 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027567 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27568 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27569 &pBSSSes);
27570 if ( NULL == pBSSSes )
27571 {
27572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027573 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027574 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027575 }
27576 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027577
27578 //
27579 // Don't need to fill send buffer other than header
27580 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027581 wpalMemoryCopy( pSendBuffer+usDataOffset,
27582 &halGtkOffloadGetInfoReqParams,
27583 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027584
27585 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27586 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27587
27588 /*-------------------------------------------------------------------------
27589 Send Get STA Request to HAL
27590 -------------------------------------------------------------------------*/
27591 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27592 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027593fail:
27594 // Release the message buffer so we don't leak
27595 wpalMemoryFree(pSendBuffer);
27596
27597failRequest:
27598 //WDA should have failure check to avoid the memory leak
27599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027600}
27601
27602/**
27603 @brief Process host offload Rsp function (called when a
27604 response is being received over the bus from HAL)
27605
27606 @param pWDICtx: pointer to the WLAN DAL context
27607 pEventData: pointer to the event information structure
27608
27609 @see
27610 @return Result of the function call
27611*/
27612WDI_Status
27613WDI_ProcessGtkOffloadRsp
27614(
27615 WDI_ControlBlockType* pWDICtx,
27616 WDI_EventInfoType* pEventData
27617)
27618{
Jeff Johnson295189b2012-06-20 16:38:30 -070027619 eHalStatus halStatus;
27620 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027621 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27622 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027623
27624 /*-------------------------------------------------------------------------
27625 Sanity check
27626 -------------------------------------------------------------------------*/
27627 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27628 ( NULL == pEventData->pEventData))
27629 {
27630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027631 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027632 WDI_ASSERT(0);
27633 return WDI_STATUS_E_FAILURE;
27634 }
27635
Wilson Yang00256342013-10-10 23:13:38 -070027636 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27637
Jeff Johnson295189b2012-06-20 16:38:30 -070027638 /*-------------------------------------------------------------------------
27639 Extract response and send it to UMAC
27640 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027641 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27642 {
27643 wpalMemoryCopy( &halGtkOffloadRspParams,
27644 pEventData->pEventData,
27645 sizeof(halGtkOffloadRspParams));
27646
27647 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027648 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027649 wdiGtkOffloadRsparams.bssIdx =
27650 halGtkOffloadRspParams.bssIdx;
27651 }
27652 else
27653 {
27654 halStatus = *((eHalStatus*)pEventData->pEventData);
27655 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27656 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027657
27658 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027659 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027660
27661 return WDI_STATUS_SUCCESS;
27662}
27663
27664/**
27665 @brief Process GTK Offload Get Information Response function
27666
27667 @param pWDICtx: pointer to the WLAN DAL context
27668 pEventData: pointer to the event information structure
27669
27670 @see
27671 @return Result of the function call
27672*/
27673WDI_Status
27674WDI_ProcessGTKOffloadGetInfoRsp
27675(
27676 WDI_ControlBlockType* pWDICtx,
27677 WDI_EventInfoType* pEventData
27678)
27679{
Jeff Johnson295189b2012-06-20 16:38:30 -070027680 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027681 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027682 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27683 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027684 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027685
Jeff Johnson295189b2012-06-20 16:38:30 -070027686
27687 /*-------------------------------------------------------------------------
27688 Sanity check
27689 -------------------------------------------------------------------------*/
27690 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27691 ( NULL == pEventData->pEventData ))
27692 {
27693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027694 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027695 WDI_ASSERT(0);
27696 return WDI_STATUS_E_FAILURE;
27697 }
27698
Wilson Yang00256342013-10-10 23:13:38 -070027699 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27700
27701 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070027702 Extract response and send it to UMAC
27703 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027704 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27705 {
27706 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27707 pEventData->pEventData,
27708 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027709
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027710 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027711 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027712 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27713 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27714 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27715 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27716 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27717 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27718 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27719 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027720
27721 wpalMutexAcquire(&pWDICtx->wptMutex);
27722 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27723 &pBSSSes);
27724
27725 if ( NULL == pBSSSes )
27726 {
27727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27728 "Association sequence for this BSS does not exist or "
27729 "association no longer in progress - mysterious HAL response");
27730 wpalMutexRelease(&pWDICtx->wptMutex);
27731 return WDI_STATUS_E_NOT_ALLOWED;
27732 }
27733
27734 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27735 sizeof (wpt_macAddr));
27736 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027737 }
27738 else
27739 {
27740 halStatus = *((eHalStatus*)pEventData->pEventData);
27741 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27742 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027743 /*Notify UMAC*/
27744 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27745 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027746 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027747
27748 return WDI_STATUS_SUCCESS;
27749}
27750#endif // WLAN_FEATURE_GTK_OFFLOAD
27751
27752#ifdef WLAN_WAKEUP_EVENTS
27753WDI_Status
27754WDI_ProcessWakeReasonInd
27755(
27756 WDI_ControlBlockType* pWDICtx,
27757 WDI_EventInfoType* pEventData
27758)
27759{
27760 WDI_LowLevelIndType *pWdiInd;
27761 tpWakeReasonParams pWakeReasonParams;
27762 wpt_uint32 allocSize = 0;
27763
27764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027765 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027766
27767 /*-------------------------------------------------------------------------
27768 Sanity check
27769 -------------------------------------------------------------------------*/
27770 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27771 ( NULL == pEventData->pEventData ))
27772 {
27773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027774 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027775 WDI_ASSERT( 0 );
27776 return WDI_STATUS_E_FAILURE;
27777 }
27778
27779 /*-------------------------------------------------------------------------
27780 Extract indication and send it to UMAC
27781 -------------------------------------------------------------------------*/
27782 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27783
27784 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27785
27786 //Allocate memory for WDI_WakeReasonIndType structure
27787 pWdiInd = wpalMemoryAllocate(allocSize) ;
27788
27789 if(NULL == pWdiInd)
27790 {
27791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027792 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027793 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027794 WDI_ASSERT(0);
27795 return WDI_STATUS_E_FAILURE;
27796 }
27797
27798 wpalMemoryZero(pWdiInd, allocSize);
27799
27800 /* Fill in the indication parameters*/
27801 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27802 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27803 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27804 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27805 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27806 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27807 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27808 &(pWakeReasonParams->aDataStart[0]),
27809 pWakeReasonParams->ulStoredDataLen);
27810
ltimariub77f24b2013-01-24 18:54:33 -080027811
27812 if ( pWDICtx->wdiLowLevelIndCB )
27813 {
27814 /*Notify UMAC*/
27815 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27816 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027817
27818 //Free memory allocated for WDI_WakeReasonIndType structure
27819 wpalMemoryFree(pWdiInd);
27820
27821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027822 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027823
27824 return WDI_STATUS_SUCCESS;
27825}
27826#endif // WLAN_WAKEUP_EVENTS
27827
27828void WDI_GetWcnssCompiledApiVersion
27829(
27830 WDI_WlanVersionType *pWcnssApiVersion
27831)
27832{
27833 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27834 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27835 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27836 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27837}
27838
27839/**
27840 @brief Process Set TM Level Rsp function (called when a
27841 response is being received over the bus from HAL)
27842
27843 @param pWDICtx: pointer to the WLAN DAL context
27844 pEventData: pointer to the event information structure
27845
27846 @see
27847 @return Result of the function call
27848*/
27849WDI_Status
27850WDI_ProcessSetTmLevelRsp
27851(
27852 WDI_ControlBlockType* pWDICtx,
27853 WDI_EventInfoType* pEventData
27854)
27855{
27856 WDI_Status wdiStatus;
27857 eHalStatus halStatus;
27858 WDI_SetTmLevelCb wdiSetTmLevelCb;
27859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27860
27861 /*-------------------------------------------------------------------------
27862 Sanity check
27863 -------------------------------------------------------------------------*/
27864 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27865 ( NULL == pEventData->pEventData ))
27866 {
27867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027868 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027869 WDI_ASSERT(0);
27870 return WDI_STATUS_E_FAILURE;
27871 }
27872
27873 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27874
27875 /*-------------------------------------------------------------------------
27876 Extract response and send it to UMAC
27877 -------------------------------------------------------------------------*/
27878 halStatus = *((eHalStatus*)pEventData->pEventData);
27879 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27880
27881 /*Notify UMAC*/
27882 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27883
27884 return WDI_STATUS_SUCCESS;
27885}/*WDI_ProcessSetTmLevelRsp*/
27886
27887/**
27888 @brief Process Set Thermal Mitigation level Changed request
27889
27890 @param pWDICtx: pointer to the WLAN DAL context
27891 pEventData: pointer to the event information structure
27892
27893 @see
27894 @return Result of the function call
27895*/
27896WDI_Status
27897WDI_ProcessSetTmLevelReq
27898(
27899 WDI_ControlBlockType* pWDICtx,
27900 WDI_EventInfoType* pEventData
27901)
27902{
27903 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27904 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27905 wpt_uint8* pSendBuffer = NULL;
27906 wpt_uint16 usDataOffset = 0;
27907 wpt_uint16 usSendSize = 0;
27908 tSetThermalMitgationType halTmMsg;
27909
27910 /*-------------------------------------------------------------------------
27911 Sanity check
27912 -------------------------------------------------------------------------*/
27913 if (( NULL == pEventData ) ||
27914 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27915 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27916 {
27917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027918 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027919 WDI_ASSERT(0);
27920 return WDI_STATUS_E_FAILURE;
27921 }
27922
27923 /*-----------------------------------------------------------------------
27924 Get message buffer
27925 -----------------------------------------------------------------------*/
27926 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27927 sizeof(halTmMsg),
27928 &pSendBuffer, &usDataOffset, &usSendSize))||
27929 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27930 {
27931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027932 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027933 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27934 WDI_ASSERT(0);
27935 return WDI_STATUS_E_FAILURE;
27936 }
27937
27938 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27939 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27940
27941 wpalMemoryCopy( pSendBuffer+usDataOffset,
27942 &halTmMsg,
27943 sizeof(halTmMsg));
27944
27945 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27946 pWDICtx->pfncRspCB = NULL;
27947 /*-------------------------------------------------------------------------
27948 Send Get STA Request to HAL
27949 -------------------------------------------------------------------------*/
27950 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27951 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27952}
27953
27954/* Fill the value from the global features enabled array to the global capabilities
27955 * bitmap struct
27956 */
27957static void
27958FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27959{
27960 wpt_int8 i;
27961 for (i=0; i<len; i++)
27962 {
27963 setFeatCaps(fCaps, enabledFeat[i]);
27964 }
27965}
27966
27967/**
27968 @brief WDI_featureCapsExchangeReq
27969 Post feature capability bitmap exchange event.
27970 Host will send its own capability to FW in this req and
27971 expect FW to send its capability back as a bitmap in Response
27972
27973 @param
27974
27975 wdiFeatureCapsExchangeCb: callback called on getting the response.
27976 It is kept to mantain similarity between WDI reqs and if needed, can
27977 be used in future. Currently, It is set to NULL
27978
27979 pUserData: user data will be passed back with the
27980 callback
27981
27982 @see
27983 @return Result of the function call
27984*/
27985WDI_Status
27986WDI_featureCapsExchangeReq
27987(
27988 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27989 void* pUserData
27990)
27991{
27992 WDI_EventInfoType wdiEventData;
27993 wpt_int32 fCapsStructSize;
27994
27995 /*------------------------------------------------------------------------
27996 Sanity Check
27997 ------------------------------------------------------------------------*/
27998 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27999 {
28000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28001 "WDI API call before module is initialized - Fail request");
28002
28003 return WDI_STATUS_E_NOT_ALLOWED;
28004 }
28005
28006 /* Allocate memory separately for global variable carrying FW caps */
28007 fCapsStructSize = sizeof(tWlanFeatCaps);
28008 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28009 if ( NULL == gpHostWlanFeatCaps )
28010 {
28011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028012 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028013 WDI_ASSERT(0);
28014 return WDI_STATUS_MEM_FAILURE;
28015 }
28016
28017 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
28018
28019 /*------------------------------------------------------------------------
28020 Fill in Event data and post to the Main FSM
28021 ------------------------------------------------------------------------*/
28022 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
28023 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028025 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028026 gpHostWlanFeatCaps->featCaps[0],
28027 gpHostWlanFeatCaps->featCaps[1],
28028 gpHostWlanFeatCaps->featCaps[2],
28029 gpHostWlanFeatCaps->featCaps[3]
28030 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
28032 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028033 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
28034 wdiEventData.pEventData = gpHostWlanFeatCaps;
28035 wdiEventData.uEventDataSize = fCapsStructSize;
28036 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
28037 wdiEventData.pUserData = pUserData;
28038
28039 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28040}
28041
28042/**
Yathish9f22e662012-12-10 14:21:35 -080028043 @brief Disable Active mode offload in Host
28044
28045 @param void
28046 @see
28047 @return void
28048*/
28049void
28050WDI_disableCapablityFeature(wpt_uint8 feature_index)
28051{
28052 supportEnabledFeatures[feature_index] = 0;
28053 return;
28054}
28055
28056/**
Jeff Johnson295189b2012-06-20 16:38:30 -070028057 @brief Process Host-FW Capability Exchange Request function
28058
28059 @param pWDICtx: pointer to the WLAN DAL context
28060 pEventData: pointer to the event information structure
28061
28062 @see
28063 @return Result of the function call
28064*/
28065WDI_Status
28066WDI_ProcessFeatureCapsExchangeReq
28067(
28068 WDI_ControlBlockType* pWDICtx,
28069 WDI_EventInfoType* pEventData
28070)
28071{
28072 wpt_uint8* pSendBuffer = NULL;
28073 wpt_uint16 usDataOffset = 0;
28074 wpt_uint16 usSendSize = 0;
28075 wpt_uint16 usLen = 0;
28076
28077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28078
28079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028080 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028081
28082 /*-------------------------------------------------------------------------
28083 Sanity check
28084 -------------------------------------------------------------------------*/
28085 /* Call back function is NULL since not required for cap exchange req */
28086 if (( NULL == pEventData ) ||
28087 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
28088 {
28089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028090 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028091 WDI_ASSERT(0);
28092 return WDI_STATUS_E_FAILURE;
28093 }
28094
28095 /*-----------------------------------------------------------------------
28096 Get message buffer
28097 -----------------------------------------------------------------------*/
28098 usLen = sizeof(tWlanFeatCaps);
28099
28100 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28101 WDI_FEATURE_CAPS_EXCHANGE_REQ,
28102 usLen,
28103 &pSendBuffer, &usDataOffset, &usSendSize))||
28104 ( usSendSize < (usDataOffset + usLen )))
28105 {
28106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028107 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028108 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
28109 WDI_ASSERT(0);
28110 return WDI_STATUS_E_FAILURE;
28111 }
28112
28113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028114 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028115 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
28116 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
28117 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
28118 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
28119 );
28120
28121 /* Copy host caps after the offset in the send buffer */
28122 wpalMemoryCopy( pSendBuffer+usDataOffset,
28123 (tWlanFeatCaps *)pEventData->pEventData,
28124 usLen);
28125
28126 /*-------------------------------------------------------------------------
28127 Send Start Request to HAL
28128 -------------------------------------------------------------------------*/
28129 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28130 (WDI_StartRspCb)pEventData->pCBfnc,
28131 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
28132
28133}/*WDI_ProcessFeatureCapsExchangeReq*/
28134
28135/**
28136 @brief Process Host-FW Capability Exchange Response function
28137
28138 @param pWDICtx: pointer to the WLAN DAL context
28139 pEventData: pointer to the event information structure
28140
28141 @see
28142 @return Result of the function call
28143*/
28144WDI_Status
28145WDI_ProcessFeatureCapsExchangeRsp
28146(
28147 WDI_ControlBlockType* pWDICtx,
28148 WDI_EventInfoType* pEventData
28149)
28150{
28151 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
28152 wpt_int32 fCapsStructSize;
28153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28154
28155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028156 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028157
28158 /*-------------------------------------------------------------------------
28159 Sanity check
28160 -------------------------------------------------------------------------*/
28161 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28162 ( NULL == pEventData->pEventData ))
28163 {
28164 /* It will go here when riva is old (doesn't understand this msg) and host is new */
28165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028167 WDI_ASSERT(0);
28168 return WDI_STATUS_E_FAILURE;
28169 }
28170
28171 /* Allocate memory separately for global variable carrying FW caps */
28172 fCapsStructSize = sizeof(tWlanFeatCaps);
28173 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28174 if ( NULL == gpFwWlanFeatCaps )
28175 {
28176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028177 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028178 WDI_ASSERT(0);
28179 return WDI_STATUS_MEM_FAILURE;
28180 }
28181
28182 /*-------------------------------------------------------------------------
28183 Unpack HAL Response Message - the header was already extracted by the
28184 main Response Handling procedure
28185 -------------------------------------------------------------------------*/
28186 /*-------------------------------------------------------------------------
28187 Extract response and send it to UMAC
28188 -------------------------------------------------------------------------*/
28189
28190 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
28191 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028193 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028194 gpFwWlanFeatCaps->featCaps[0],
28195 gpFwWlanFeatCaps->featCaps[1],
28196 gpFwWlanFeatCaps->featCaps[2],
28197 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028198 );
28199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
28200 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028201 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
28202
28203 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
28204 if (wdiFeatureCapsExchangeCb != NULL)
28205 wdiFeatureCapsExchangeCb(NULL, NULL);
28206
28207 return WDI_STATUS_SUCCESS;
28208}
28209
Mohit Khanna4a70d262012-09-11 16:30:12 -070028210#ifdef WLAN_FEATURE_11AC
28211WDI_Status
28212WDI_ProcessUpdateVHTOpModeRsp
28213(
28214 WDI_ControlBlockType* pWDICtx,
28215 WDI_EventInfoType* pEventData
28216)
28217{
28218 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28219 WDI_Status wdiStatus;
28220 eHalStatus halStatus;
28221
28222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28223
28224 /*-------------------------------------------------------------------------
28225 Sanity check
28226 -------------------------------------------------------------------------*/
28227 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28228 ( NULL == pEventData->pEventData))
28229 {
28230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028231 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028232 WDI_ASSERT(0);
28233 return WDI_STATUS_E_FAILURE;
28234 }
28235 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
28236
28237 /*-------------------------------------------------------------------------
28238 Extract response and send it to UMAC
28239 -------------------------------------------------------------------------*/
28240 halStatus = *((eHalStatus*)pEventData->pEventData);
28241 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28242
28243 /*Notify UMAC*/
28244 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
28245
28246 return WDI_STATUS_SUCCESS;
28247}
28248#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070028249/**
28250 @brief WDI_getHostWlanFeatCaps
28251 WDI API that returns whether the feature passed to it as enum value in
28252 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
28253 variable storing host capability bitmap to find this. This can be used by
28254 other moduels to decide certain things like call different APIs based on
28255 whether a particular feature is supported.
28256
28257 @param
28258
28259 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
28260
28261 @see
28262 @return
28263 0 - if the feature is NOT supported in host
28264 any non-zero value - if the feature is SUPPORTED in host.
28265*/
28266wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
28267{
28268 wpt_uint8 featSupported = 0;
28269 if (gpHostWlanFeatCaps != NULL)
28270 {
28271 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28272 }
28273 else
28274 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028276 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028277 }
28278 return featSupported;
28279}
28280
28281/**
28282 @brief WDI_getFwWlanFeatCaps
28283 WDI API that returns whether the feature passed to it as enum value in
28284 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28285 variable storing host capability bitmap to find this. This can be used by
28286 other moduels to decide certain things like call different APIs based on
28287 whether a particular feature is supported.
28288
28289 @param
28290
28291 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28292 in wlan_hal_msg.h.
28293
28294 @see
28295 @return
28296 0 - if the feature is NOT supported in FW
28297 any non-zero value - if the feature is SUPPORTED in FW.
28298*/
28299wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28300{
28301 wpt_uint8 featSupported = 0;
28302 if (gpFwWlanFeatCaps != NULL)
28303 {
28304 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28305 }
28306 else
28307 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028309 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028310 }
28311 return featSupported;
28312}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028313
28314#ifdef WLAN_FEATURE_11AC
28315WDI_Status
28316WDI_ProcessUpdateVHTOpModeReq
28317(
28318 WDI_ControlBlockType* pWDICtx,
28319 WDI_EventInfoType* pEventData
28320)
28321{
28322 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28323 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28324 wpt_uint8* pSendBuffer = NULL;
28325 wpt_uint16 usDataOffset = 0;
28326 wpt_uint16 usSendSize = 0;
28327
28328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28329
28330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028331 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028332
28333 /*-------------------------------------------------------------------------
28334 Sanity check
28335 -------------------------------------------------------------------------*/
28336 if (( NULL == pEventData ) ||
28337 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28338 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28339 {
28340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028341 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028342 WDI_ASSERT(0);
28343 return WDI_STATUS_E_FAILURE;
28344 }
28345
28346 /*-----------------------------------------------------------------------
28347 Get message buffer
28348 -----------------------------------------------------------------------*/
28349 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
28350 sizeof(WDI_UpdateVHTOpMode),
28351 &pSendBuffer, &usDataOffset, &usSendSize))||
28352 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
28353 {
28354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28355 "Unable to get send buffer in update vht opMode req");
28356 WDI_ASSERT(0);
28357 return WDI_STATUS_E_FAILURE;
28358 }
28359
28360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028361 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028362
28363 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
28364 sizeof(WDI_UpdateVHTOpMode));
28365
28366 /*-------------------------------------------------------------------------
28367 Send Start Request to HAL
28368 -------------------------------------------------------------------------*/
28369 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28370 wdiVHTOpModeCb,
28371 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
28372
28373}
28374
28375WDI_Status
28376WDI_UpdateVHTOpModeReq
28377(
28378 WDI_UpdateVHTOpMode *pData,
28379 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
28380 void* pUserData
28381)
28382{
28383 WDI_EventInfoType wdiEventData;
28384
28385 /*------------------------------------------------------------------------
28386 Sanity Check
28387 ------------------------------------------------------------------------*/
28388 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28389 {
28390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28391 "WDI API call before module is initialized - Fail request");
28392
28393 return WDI_STATUS_E_NOT_ALLOWED;
28394 }
28395
28396 /*------------------------------------------------------------------------
28397 Fill in Event data and post to the Main FSM
28398 ------------------------------------------------------------------------*/
28399 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
28400 wdiEventData.pEventData = pData;
28401 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
28402 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
28403 wdiEventData.pUserData = pUserData;
28404
28405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028406 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028407
28408 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28409
28410}
28411#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028412
28413/**
28414 @brief WDI_TransportChannelDebug -
28415 Display DXE Channel debugging information
28416 User may request to display DXE channel snapshot
28417 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028418
Jeff Johnsonb88db982012-12-10 13:34:59 -080028419 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053028420 @param debugFlags : Enable stall detect features
28421 defined by WPAL_DeviceDebugFlags
28422 These features may effect
28423 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028424 @see
28425 @return none
28426*/
28427void WDI_TransportChannelDebug
28428(
28429 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053028430 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028431)
28432{
Mihir Shete40a55652014-03-02 14:14:47 +053028433 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028434 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070028435}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028436/**
28437 @brief WDI_SsrTimerCB
28438 Callback function for SSR timer, if this is called then the graceful
28439 shutdown for Riva did not happen.
28440
28441 @param pUserData : user data to timer
28442
28443 @see
28444 @return none
28445*/
28446void
28447WDI_SsrTimerCB
28448(
28449 void *pUserData
28450)
28451{
28452 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28454
28455 if (NULL == pWDICtx )
28456 {
28457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028458 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028459 WDI_ASSERT(0);
28460 return;
28461 }
28462 wpalRivaSubystemRestart();
28463
28464 return;
28465
28466}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070028467
28468/**
28469 @brief WDI_SetEnableSSR -
28470 This API is called to enable/disable SSR on WDI timeout.
28471
28472 @param enableSSR : enable/disable SSR
28473
28474 @see
28475 @return none
28476*/
28477void WDI_SetEnableSSR(wpt_boolean enableSSR)
28478{
28479 gWDICb.bEnableSSR = enableSSR;
28480}
Leo Chang9056f462013-08-01 19:21:11 -070028481
28482
28483#ifdef FEATURE_WLAN_LPHB
28484/**
Leo Changd9df8aa2013-09-26 13:32:26 -070028485 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070028486 This function will be invoked when FW detects low power
28487 heart beat failure
28488
28489 @param pWDICtx : wdi context
28490 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070028491 @see
28492 @return Result of the function call
28493*/
28494WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070028495WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070028496(
28497 WDI_ControlBlockType* pWDICtx,
28498 WDI_EventInfoType* pEventData
28499)
28500{
28501 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070028502 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070028503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28504
28505 /*-------------------------------------------------------------------------
28506 Sanity check
28507 -------------------------------------------------------------------------*/
28508 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28509 (NULL == pEventData->pEventData))
28510 {
28511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28512 "%s: Invalid parameters", __func__);
28513 WDI_ASSERT(0);
28514 return WDI_STATUS_E_FAILURE;
28515 }
28516
28517 /*-------------------------------------------------------------------------
28518 Extract indication and send it to UMAC
28519 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070028520 wpalMemoryCopy(&lphbIndicationParam,
28521 pEventData->pEventData,
28522 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070028523
Leo Changd9df8aa2013-09-26 13:32:26 -070028524 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070028525 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028526 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028527 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028528 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028529 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070028530 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070028531 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070028532 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070028533 /*Notify UMAC*/
28534 if (pWDICtx->wdiLowLevelIndCB)
28535 {
28536 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28537 }
28538
28539 return WDI_STATUS_SUCCESS;
28540}
28541
28542/**
28543 @brief WDI_ProcessLphbCfgRsp -
28544 LPHB configuration response from FW
28545
28546 @param pWDICtx : wdi context
28547 pEventData : indication data
28548
28549 @see
28550 @return Result of the function call
28551*/
28552WDI_Status WDI_ProcessLphbCfgRsp
28553(
28554 WDI_ControlBlockType* pWDICtx,
28555 WDI_EventInfoType* pEventData
28556)
28557{
28558 WDI_Status wdiStatus;
28559 eHalStatus halStatus;
28560 WDI_LphbCfgCb wdiLphbCfgCb;
28561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28562
28563 /*-------------------------------------------------------------------------
28564 Sanity check
28565 -------------------------------------------------------------------------*/
28566 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28567 (NULL == pEventData->pEventData))
28568 {
28569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28570 "%s: Invalid parameters", __func__);
28571 WDI_ASSERT(0);
28572 return WDI_STATUS_E_FAILURE;
28573 }
28574
28575 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28576
28577 /*-------------------------------------------------------------------------
28578 Extract response and send it to UMAC
28579 -------------------------------------------------------------------------*/
28580 halStatus = *((eHalStatus*)pEventData->pEventData);
28581 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28582
28583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28584 "LPHB Cfg Rsp Return status %d", wdiStatus);
28585 /*Notify UMAC*/
28586 if (NULL != wdiLphbCfgCb)
28587 {
28588 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28589 }
28590
28591 return WDI_STATUS_SUCCESS;
28592}
28593
28594/**
28595 @brief WDI_ProcessLPHBConfReq -
28596 LPHB configuration request to FW
28597
28598 @param pWDICtx : wdi context
28599 pEventData : indication data
28600
28601 @see
28602 @return none
28603*/
28604WDI_Status WDI_ProcessLPHBConfReq
28605(
28606 WDI_ControlBlockType* pWDICtx,
28607 WDI_EventInfoType* pEventData
28608)
28609{
28610 WDI_LPHBReq *pLphbReqParams;
28611 WDI_Status wdiStatus;
28612 wpt_uint8* pSendBuffer = NULL;
28613 wpt_uint16 usDataOffset = 0;
28614 wpt_uint16 usSendSize = 0;
28615 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28617
28618 /*-------------------------------------------------------------------------
28619 Sanity check
28620 -------------------------------------------------------------------------*/
28621 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28622 {
28623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28624 "%s: Invalid parameters in Suspend ind",__func__);
28625 WDI_ASSERT(0);
28626 return WDI_STATUS_E_FAILURE;
28627 }
28628
28629 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28630
28631 /*-----------------------------------------------------------------------
28632 Get message buffer
28633 -----------------------------------------------------------------------*/
28634 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28635 WDI_LPHB_CFG_REQ,
28636 sizeof(tHalLowPowerHeartBeatReqMsg),
28637 &pSendBuffer, &usDataOffset, &usSendSize))||
28638 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28639 {
28640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28641 "Unable to get send buffer in LPHB Ind ");
28642 WDI_ASSERT(0);
28643 return WDI_STATUS_E_FAILURE;
28644 }
28645
28646 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28647 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28648
28649 halLphbReqRarams->lowPowerHeartBeatCmdType =
28650 (tANI_U16)(++pLphbReqParams->cmd);
28651 switch ((tANI_U16)pLphbReqParams->cmd)
28652 {
28653 case WDI_LPHB_SET_EN_PARAMS_INDID:
28654 halLphbReqRarams->sessionIdx =
28655 pLphbReqParams->params.lphbEnableReq.session;
28656 halLphbReqRarams->options.control.heartBeatEnable =
28657 pLphbReqParams->params.lphbEnableReq.enable;
28658 halLphbReqRarams->options.control.heartBeatType =
28659 pLphbReqParams->params.lphbEnableReq.item;
28660 break;
28661
28662 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28663 halLphbReqRarams->sessionIdx =
28664 pLphbReqParams->params.lphbTcpParamReq.session;
28665 halLphbReqRarams->options.tcpParams.timeOutSec =
28666 pLphbReqParams->params.lphbTcpParamReq.timeout;
28667 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28668 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28669 sizeof(v_U32_t));
28670 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28671 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28672 sizeof(v_U32_t));
28673
28674 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28675 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28676 WDI_MAC_ADDR_LEN);
28677
28678 halLphbReqRarams->options.tcpParams.hostPort =
28679 pLphbReqParams->params.lphbTcpParamReq.src_port;
28680 halLphbReqRarams->options.tcpParams.destPort =
28681 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070028682 halLphbReqRarams->options.tcpParams.timePeriodSec =
28683 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
28684 halLphbReqRarams->options.tcpParams.tcpSn =
28685 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070028686 break;
28687
28688 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28689 halLphbReqRarams->sessionIdx =
28690 pLphbReqParams->params.lphbTcpFilterReq.session;
28691 halLphbReqRarams->options.tcpUdpFilter.offset =
28692 pLphbReqParams->params.lphbTcpFilterReq.offset;
28693 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28694 pLphbReqParams->params.lphbTcpFilterReq.length;
28695 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28696 pLphbReqParams->params.lphbTcpFilterReq.filter,
28697 WDI_LPHB_FILTER_LEN);
28698 break;
28699
28700 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28701 halLphbReqRarams->sessionIdx =
28702 pLphbReqParams->params.lphbUdpParamReq.session;
28703 halLphbReqRarams->options.udpParams.timeOutSec =
28704 pLphbReqParams->params.lphbUdpParamReq.timeout;
28705 halLphbReqRarams->options.udpParams.timePeriodSec =
28706 pLphbReqParams->params.lphbUdpParamReq.interval;
28707 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28708 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28709 sizeof(v_U32_t));
28710 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28711 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28712 sizeof(v_U32_t));
28713
28714 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28715 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28716 WDI_MAC_ADDR_LEN);
28717
28718 halLphbReqRarams->options.udpParams.hostPort =
28719 pLphbReqParams->params.lphbUdpParamReq.src_port;
28720 halLphbReqRarams->options.udpParams.destPort =
28721 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28722 break;
28723
28724 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28725 halLphbReqRarams->sessionIdx =
28726 pLphbReqParams->params.lphbUdpFilterReq.session;
28727 halLphbReqRarams->options.tcpUdpFilter.offset =
28728 pLphbReqParams->params.lphbUdpFilterReq.offset;
28729 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28730 pLphbReqParams->params.lphbUdpFilterReq.length;
28731 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28732 pLphbReqParams->params.lphbUdpFilterReq.filter,
28733 WDI_LPHB_FILTER_LEN);
28734 break;
28735
28736 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28737 /* NA */
28738 break;
28739
28740 default:
28741 break;
28742 }
28743
28744 /*-------------------------------------------------------------------------
28745 Send Suspend Request to HAL
28746 -------------------------------------------------------------------------*/
28747 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28748 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28749
28750 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28751 usSendSize, pWDICtx->pfncRspCB,
28752 pWDICtx->pReqStatusUserData,
28753 WDI_LPHB_CFG_RESP);
28754
28755 return wdiStatus;
28756}
28757
28758/**
28759 @brief WDI_LPHBConfReq -
28760 LPHB configuration request API
28761
28762 @param lphbconfParam : configuration parameter
28763 usrData : client context
28764 lphbCfgCb : callback function pointer
28765
28766 @see
28767 @return Success or fail status code
28768*/
28769WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28770 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28771{
28772 WDI_EventInfoType wdiEventData;
28773
28774 /*------------------------------------------------------------------------
28775 Sanity Check
28776 ------------------------------------------------------------------------*/
28777 if (eWLAN_PAL_FALSE == gWDIInitialized)
28778 {
28779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28780 "WDI API call before module is initialized - Fail request");
28781
28782 return WDI_STATUS_E_NOT_ALLOWED;
28783 }
28784
28785 /*------------------------------------------------------------------------
28786 Fill in Event data and post to the Main FSM
28787 ------------------------------------------------------------------------*/
28788 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28789 wdiEventData.pEventData = lphbconfParam;
28790 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28791 wdiEventData.pCBfnc = lphbCfgCb;
28792 wdiEventData.pUserData = usrData;
28793
28794 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28795}
28796#endif /* FEATURE_WLAN_LPHB */
28797
Ravi Joshid2ca7c42013-07-23 08:37:49 -070028798/**
28799 @brief WDI_ProcessIbssPeerInactivityInd
28800 Process peer inactivity indication coming from HAL
28801
28802 @param pWDICtx: pointer to the WLAN DAL context
28803 pEventData: pointer to the event information structure
28804 @see
28805 @return Result of the function call
28806*/
28807WDI_Status
28808WDI_ProcessIbssPeerInactivityInd
28809(
28810 WDI_ControlBlockType* pWDICtx,
28811 WDI_EventInfoType* pEventData
28812)
28813{
28814 WDI_LowLevelIndType wdiInd;
28815 tIbssPeerInactivityIndMsg halIbssIndMsg;
28816
28817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28818
28819 /*-------------------------------------------------------------------------
28820 Sanity check
28821 -------------------------------------------------------------------------*/
28822 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28823 ( NULL == pEventData->pEventData ))
28824 {
28825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28826 "%s: Invalid parameters", __func__);
28827 WDI_ASSERT( 0 );
28828 return WDI_STATUS_E_FAILURE;
28829 }
28830
28831 /*-------------------------------------------------------------------------
28832 Extract indication and send it to UMAC
28833 -------------------------------------------------------------------------*/
28834 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28835 pEventData->pEventData,
28836 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28837
28838 /*Fill in the indication parameters*/
28839 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28840
28841 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28842 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28843
28844 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28845 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28846
28847 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28848 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28849 sizeof(tSirMacAddr));
28850
28851 /*Notify UMAC*/
28852 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28853
28854 return WDI_STATUS_SUCCESS;
28855
28856} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053028857
Chittajit Mitraf5413a42013-10-18 14:20:08 -070028858/**
28859*@brief WDI_RateUpdateInd will be called when the upper MAC
28860 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053028861
Chittajit Mitraf5413a42013-10-18 14:20:08 -070028862
28863 @param wdiRateUpdateIndParams:
28864
28865
28866 @see
28867 @return Result of the function call
28868*/
28869WDI_Status
28870WDI_RateUpdateInd
28871(
28872 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
28873)
28874{
28875 WDI_EventInfoType wdiEventData;
28876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28877
28878 /*------------------------------------------------------------------------
28879 Sanity Check
28880 ------------------------------------------------------------------------*/
28881 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28882 {
28883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28884 "WDI API call before module is initialized - Fail request");
28885
28886 return WDI_STATUS_E_NOT_ALLOWED;
28887 }
28888
28889 /*------------------------------------------------------------------------
28890 Fill in Event data and post to the Main FSM
28891 ------------------------------------------------------------------------*/
28892 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
28893 wdiEventData.pEventData = wdiRateUpdateIndParams;
28894 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
28895 wdiEventData.pCBfnc = NULL;
28896 wdiEventData.pUserData = NULL;
28897
28898 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28899
28900}/* WDI_RateUpdateInd */
28901
28902/**
28903 @brief Process Rate Update Indication and post it to HAL
28904
28905 @param pWDICtx: pointer to the WLAN DAL context
28906 pEventData: pointer to the event information structure
28907
28908 @see
28909 @return Result of the function call
28910*/
28911WDI_Status
28912WDI_ProcessRateUpdateInd
28913(
28914 WDI_ControlBlockType* pWDICtx,
28915 WDI_EventInfoType* pEventData
28916)
28917{
28918 wpt_uint8* pSendBuffer = NULL;
28919 wpt_uint16 usDataOffset = 0;
28920 wpt_uint16 usSendSize = 0;
28921 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
28922 tHalRateUpdateInd *pRateUpdateInd;
28923 WDI_Status wdiStatus;
28924
28925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28926
28927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28928 "%s", __func__);
28929
28930 /*-------------------------------------------------------------------------
28931 Sanity check
28932 -------------------------------------------------------------------------*/
28933 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28934 {
28935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28936 "%s: Invalid parameters", __func__);
28937 WDI_ASSERT(0);
28938 return WDI_STATUS_E_FAILURE;
28939 }
28940 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
28941 /*-----------------------------------------------------------------------
28942 Get message buffer
28943 -----------------------------------------------------------------------*/
28944
28945 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28946 WDI_RATE_UPDATE_IND,
28947 sizeof(tHalRateUpdateParams),
28948 &pSendBuffer, &usDataOffset, &usSendSize))||
28949 ( usSendSize < (usDataOffset +
28950 sizeof(tHalRateUpdateParams) )))
28951 {
28952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28953 "Unable to get send buffer in Rate Update Indication %p ",
28954 pEventData);
28955 WDI_ASSERT(0);
28956 return WDI_STATUS_E_FAILURE;
28957 }
28958
28959 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
28960
28961 /* Copy the bssid */
28962 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
28963 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
28964
28965 /* Copy the tx flags */
28966 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
28967 pwdiRateUpdateInd->ucastDataRateTxFlag;
28968 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
28969 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
28970 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
28971 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
28972 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
28973 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
28974
28975 /* Copy the tx rates */
28976 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
28977 pwdiRateUpdateInd->ucastDataRate;
28978 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
28979 pwdiRateUpdateInd->reliableMcastDataRate;
28980 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
28981 pwdiRateUpdateInd->mcastDataRate24GHz;
28982 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
28983 pwdiRateUpdateInd->mcastDataRate5GHz;
28984
28985 /*-------------------------------------------------------------------------
28986 Send Rate Update Indication to HAL
28987 -------------------------------------------------------------------------*/
28988 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
28989 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
28990
28991 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
28992
28993 return (wdiStatus != WDI_STATUS_SUCCESS) ?
28994 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
28995
28996} /* WDI_ProcessRateUpdateInd */
28997
28998#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053028999/**
29000 @brief Process stop batch indication from WDA
29001
29002 @param pWDICtx: pointer to the WLAN DAL context
29003 pEventData: pointer to the event information structure
29004
29005 @see
29006 @return Result of the function call
29007*/
29008WDI_Status
29009WDI_ProcessStopBatchScanInd
29010(
29011 WDI_ControlBlockType* pWDICtx,
29012 WDI_EventInfoType* pEventData
29013)
29014{
29015 wpt_uint8* pSendBuffer = NULL;
29016 wpt_uint16 usDataOffset = 0;
29017 wpt_uint16 usSendSize = 0;
29018 WDI_Status wdiStatus;
29019 tHalBatchScanStopIndParam *pHalInd = NULL;
29020 WDI_StopBatchScanIndType *pWdiInd = NULL;
29021
29022
29023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29024
29025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29026 "%s", __func__);
29027
29028 /*-------------------------------------------------------------------------
29029 Sanity check
29030 -------------------------------------------------------------------------*/
29031
29032 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29033 {
29034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29035 "%s: Invalid parameters", __func__);
29036 WDI_ASSERT(0);
29037 return WDI_STATUS_E_FAILURE;
29038 }
29039 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
29040 /*-----------------------------------------------------------------------
29041 Get message buffer
29042 -----------------------------------------------------------------------*/
29043
29044 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29045 WDI_STOP_BATCH_SCAN_IND,
29046 sizeof(tHalBatchScanStopIndParam),
29047 &pSendBuffer, &usDataOffset, &usSendSize))||
29048 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
29049 {
29050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29051 "Unable to get send buffer in stop batch scan ind %p ",
29052 pEventData);
29053 WDI_ASSERT(0);
29054 return WDI_STATUS_E_FAILURE;
29055 }
29056
29057 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
29058 pHalInd->param = pWdiInd->param;
29059
29060 pWDICtx->pReqStatusUserData = NULL;
29061 pWDICtx->pfncRspCB = NULL;
29062 /*-------------------------------------------------------------------------
29063 Send Stop batch scan indication to HAL
29064 -------------------------------------------------------------------------*/
29065 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29066 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29067}
29068
29069/**
29070 @brief This API is called to trigger batch scan results from FW
29071
29072 @param pWDICtx: pointer to the WLAN DAL context
29073 pEventData: pointer to the event information structure
29074
29075 @see
29076 @return Result of the function call
29077*/
29078WDI_Status
29079WDI_ProcessTriggerBatchScanResultInd
29080(
29081 WDI_ControlBlockType* pWDICtx,
29082 WDI_EventInfoType* pEventData
29083)
29084{
29085 WDI_Status wdiStatus;
29086 wpt_uint8* pSendBuffer = NULL;
29087 wpt_uint16 usDataOffset = 0;
29088 wpt_uint16 usSendSize = 0;
29089 tHalBatchScanTriggerResultParam *pHalInd = NULL;
29090 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
29091
29092
29093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29094
29095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29096 "%s", __func__);
29097
29098 /*-------------------------------------------------------------------------
29099 Sanity check
29100 -------------------------------------------------------------------------*/
29101
29102 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29103 {
29104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29105 "%s: Invalid parameters", __func__);
29106 WDI_ASSERT(0);
29107 return WDI_STATUS_E_FAILURE;
29108 }
29109 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
29110 /*-----------------------------------------------------------------------
29111 Get message buffer
29112 -----------------------------------------------------------------------*/
29113
29114 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29115 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
29116 sizeof(tHalBatchScanTriggerResultParam),
29117 &pSendBuffer, &usDataOffset, &usSendSize))||
29118 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
29119 {
29120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29121 "Unable to get send buffer in stop batch scan ind %p ",
29122 pEventData);
29123 WDI_ASSERT(0);
29124 return WDI_STATUS_E_FAILURE;
29125 }
29126
29127 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
29128 pHalInd->param = pWdiInd->param;
29129
29130 pWDICtx->pReqStatusUserData = NULL;
29131 pWDICtx->pfncRspCB = NULL;
29132 /*-------------------------------------------------------------------------
29133 Send trigger batch scan result indication to HAL
29134 -------------------------------------------------------------------------*/
29135 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29136 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29137}
29138
29139
29140/**
29141 @brief Process set batch scan response from FW
29142
29143 @param pWDICtx: pointer to the WLAN DAL context
29144 pEventData: pointer to the event information structure
29145
29146 @see
29147 @return Result of the function call
29148*/
29149WDI_Status
29150WDI_ProcessSetBatchScanRsp
29151(
29152 WDI_ControlBlockType* pWDICtx,
29153 WDI_EventInfoType* pEventData
29154)
29155{
29156 WDI_SetBatchScanCb wdiSetBatchScanCb;
29157 WDI_SetBatchScanRspType *pSetBatchScanRsp;
29158
29159 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
29160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29161
29162 /*sanity check*/
29163 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29164 ( NULL == pEventData->pEventData))
29165 {
29166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29167 "%s: Invalid parameters", __func__);
29168 WDI_ASSERT(0);
29169 return WDI_STATUS_E_FAILURE;
29170 }
29171
29172 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
29173 if ( NULL == wdiSetBatchScanCb)
29174 {
29175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29176 "%s: call back function is NULL", __func__);
29177 WDI_ASSERT(0);
29178 return WDI_STATUS_E_FAILURE;
29179 }
29180
29181 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
29182
29183 if (NULL == pSetBatchScanRsp)
29184 {
29185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029186 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053029187 pWDICtx, pEventData, pEventData->pEventData);
29188 WDI_ASSERT(0);
29189 return WDI_STATUS_E_FAILURE;
29190 }
29191
29192 /*extract response and send it to UMAC*/
29193 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
29194
29195 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
29196
29197 /*Notify UMAC*/
29198 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
29199
29200 wpalMemoryFree(pSetBatchScanRsp);
29201
29202 return WDI_STATUS_SUCCESS;
29203}/*WDI_ProcessSetBatchScanRsp*/
29204
29205/**
29206 @brief Process batch scan result indication from FW
29207
29208 @param pWDICtx: pointer to the WLAN DAL context
29209 pEventData: pointer to the event information structure
29210
29211 @see
29212 @return Result of the function call
29213*/
29214WDI_Status
29215WDI_ProcessBatchScanResultInd
29216(
29217 WDI_ControlBlockType* pWDICtx,
29218 WDI_EventInfoType* pEventData
29219)
29220{
29221 void *pBatchScanResultInd;
29222 WDI_LowLevelIndType wdiInd;
29223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29224
29225 /*sanity check*/
29226 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29227 ( NULL == pEventData->pEventData))
29228 {
29229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29230 "%s: Invalid parameters", __func__);
29231 WDI_ASSERT(0);
29232 return WDI_STATUS_E_FAILURE;
29233 }
29234
29235 /*extract response and send it to UMAC*/
29236 pBatchScanResultInd = (void *)pEventData->pEventData;
29237
29238 /*Fill in the indication parameters*/
29239 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
29240
29241 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
29242
29243 /*Notify UMAC*/
29244 if (pWDICtx->wdiLowLevelIndCB)
29245 {
29246 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29247 }
29248 else
29249 {
29250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29251 "%s: WDILowLevelIndCb is null", __func__);
29252 WDI_ASSERT(0);
29253 return WDI_STATUS_E_FAILURE;
29254 }
29255
29256 return WDI_STATUS_SUCCESS;
29257} /*End of WDI_ProcessBatchScanResultInd*/
29258
29259/**
29260 @brief WDI_ProcessSetBatchScanReq -
29261 Set batch scan request to FW
29262
29263 @param pWDICtx : wdi context
29264 pEventData : indication data
29265
29266 @see
29267 @return none
29268*/
29269WDI_Status WDI_ProcessSetBatchScanReq
29270(
29271 WDI_ControlBlockType* pWDICtx,
29272 WDI_EventInfoType* pEventData
29273)
29274{
29275 WDI_SetBatchScanReqType *pWdiReq;
29276 WDI_Status wdiStatus;
29277 wpt_uint8* pSendBuffer = NULL;
29278 wpt_uint16 usDataOffset = 0;
29279 wpt_uint16 usSendSize = 0;
29280 tHalBatchScanSetParams *pHalReq;
29281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29282
29283 /*sanity check*/
29284 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29285 {
29286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29287 "%s: Invalid parameters in set batch scan request", __func__);
29288 WDI_ASSERT(0);
29289 return WDI_STATUS_E_FAILURE;
29290 }
29291
29292
29293 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
29294
29295
29296 /*get message buffer*/
29297 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29298 WDI_SET_BATCH_SCAN_REQ,
29299 sizeof(tHalBatchScanSetParams),
29300 &pSendBuffer, &usDataOffset, &usSendSize))||
29301 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
29302 {
29303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29304 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
29305 WDI_ASSERT(0);
29306 return WDI_STATUS_E_FAILURE;
29307 }
29308
29309 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
29310
29311 pHalReq->rtt = pWdiReq->rtt;
29312 pHalReq->rfBand = pWdiReq->rfBand;
29313 pHalReq->bestNetworks = pWdiReq->bestNetwork;
29314 pHalReq->scanInterval = pWdiReq->scanFrequency;
29315 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
29316
29317 /*send set batch scan request to fw*/
29318 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29319 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29320
29321 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29322 usSendSize, pWDICtx->pfncRspCB,
29323 pWDICtx->pReqStatusUserData,
29324 WDI_SET_BATCH_SCAN_RESP);
29325
29326 return wdiStatus;
29327}
29328
29329/**
29330 @brief WDI_SetBatchScanReq
29331 This API is called to set batch scan request in FW
29332
29333 @param pBatchScanReqParam : pointer to set batch scan re param
29334 usrData : Client context
29335 setBatchScanRspCb : set batch scan resp callback
29336 @see
29337 @return SUCCESS or FAIL
29338*/
29339WDI_Status WDI_SetBatchScanReq
29340(
29341 void *pBatchScanReqParam,
29342 void *usrData,
29343 WDI_SetBatchScanCb setBatchScanRspCb
29344)
29345{
29346 WDI_EventInfoType wdiEventData;
29347
29348 /*sanity check*/
29349 if (eWLAN_PAL_FALSE == gWDIInitialized)
29350 {
29351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29352 "WDI API call before module is initialized - Fail request");
29353
29354 return WDI_STATUS_E_NOT_ALLOWED;
29355 }
29356
29357 /* fill in event data and post to the main FSM */
29358 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
29359 wdiEventData.pEventData = pBatchScanReqParam;
29360 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
29361 wdiEventData.pCBfnc = setBatchScanRspCb;
29362 wdiEventData.pUserData = usrData;
29363
29364 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29365}
29366
29367/**
29368 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
29369
29370 @param None
29371
29372 @see
29373
29374 @return Status of the request
29375*/
29376WDI_Status
29377WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
29378{
29379 WDI_EventInfoType wdiEventData;
29380
29381 /*-------------------------------------------------------------------------
29382 Sanity Check
29383 ------------------------------------------------------------------------*/
29384 if (eWLAN_PAL_FALSE == gWDIInitialized)
29385 {
29386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29387 "WDI API call before module is initialized - Fail request!");
29388
29389 return WDI_STATUS_E_NOT_ALLOWED;
29390 }
29391
29392 /*-------------------------------------------------------------------------
29393 Fill in Event data and post to the Main FSM
29394 ------------------------------------------------------------------------*/
29395 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
29396 wdiEventData.pEventData = pWdiReq;
29397 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
29398 wdiEventData.pCBfnc = NULL;
29399 wdiEventData.pUserData = NULL;
29400
29401 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29402}
29403
29404/**
29405 @brief WDI_TriggerBatchScanResultInd
29406 This API is called to pull batch scan result from FW
29407
29408 @param pWdiReq : pointer to get batch scan ind param
29409 @see
29410 @return SUCCESS or FAIL
29411*/
29412WDI_Status WDI_TriggerBatchScanResultInd
29413(
29414 WDI_TriggerBatchScanResultIndType *pWdiReq
29415)
29416{
29417 WDI_EventInfoType wdiEventData;
29418 /*-------------------------------------------------------------------------
29419 Sanity Check
29420 ------------------------------------------------------------------------*/
29421 if (eWLAN_PAL_FALSE == gWDIInitialized)
29422 {
29423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29424 "WDI API call before module is initialized - Fail request!");
29425
29426 return WDI_STATUS_E_NOT_ALLOWED;
29427 }
29428
29429 /*-------------------------------------------------------------------------
29430 Fill in Event data and post to the Main FSM
29431 ------------------------------------------------------------------------*/
29432 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
29433 wdiEventData.pEventData = pWdiReq;
29434 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
29435 wdiEventData.pCBfnc = NULL;
29436 wdiEventData.pUserData = NULL;
29437
29438 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29439}
Rajeev79dbe4c2013-10-05 11:03:42 +053029440#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080029441
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080029442/**
29443 @brief Process Update Channel Rsp function (called when a response is
29444 being received over the bus from HAL)
29445
29446 @param pWDICtx: pointer to the WLAN DAL context
29447 pEventData: pointer to the event information structure
29448
29449 @see
29450 @return Result of the function call
29451*/
29452WDI_Status
29453WDI_ProcessUpdateChanRsp
29454(
29455 WDI_ControlBlockType* pWDICtx,
29456 WDI_EventInfoType* pEventData
29457)
29458{
29459 WDI_Status wdiStatus;
29460 eHalStatus halStatus;
29461 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
29462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29463
29464 /*-------------------------------------------------------------------------
29465 Sanity check
29466 -------------------------------------------------------------------------*/
29467 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29468 ( NULL == pEventData->pEventData))
29469 {
29470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29471 "%s: Invalid parameters", __func__);
29472 WDI_ASSERT(0);
29473 return WDI_STATUS_E_FAILURE;
29474 }
29475
29476 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
29477
29478 /*-------------------------------------------------------------------------
29479 Extract response and send it to UMAC
29480 -------------------------------------------------------------------------*/
29481 halStatus = *((eHalStatus*)pEventData->pEventData);
29482 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29483
29484 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
29485
29486 return WDI_STATUS_SUCCESS;
29487}/*WDI_ProcessUpdateChanRsp*/
29488
Leo Chang0b0e45a2013-12-15 15:18:55 -080029489#ifdef FEATURE_WLAN_CH_AVOID
29490/**
29491 @brief v -WDI_ProcessChAvoidInd
29492
29493
29494 @param pWDICtx : wdi context
29495 pEventData : indication data
29496 @see
29497 @return Result of the function call
29498*/
29499WDI_Status
29500WDI_ProcessChAvoidInd
29501(
29502 WDI_ControlBlockType* pWDICtx,
29503 WDI_EventInfoType* pEventData
29504)
29505{
29506 WDI_LowLevelIndType wdiInd;
29507 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
29508 wpt_uint16 rangeLoop;
29509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29510
29511 /*-------------------------------------------------------------------------
29512 Sanity check
29513 -------------------------------------------------------------------------*/
29514 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29515 (NULL == pEventData->pEventData))
29516 {
29517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29518 "%s: Invalid parameters", __func__);
29519 WDI_ASSERT(0);
29520 return WDI_STATUS_E_FAILURE;
29521 }
29522
29523 /*-------------------------------------------------------------------------
29524 Extract indication and send it to UMAC
29525 -------------------------------------------------------------------------*/
29526 wpalMemoryCopy(&chAvoidIndicationParam,
29527 pEventData->pEventData,
29528 sizeof(tHalAvoidFreqRangeIndParams));
29529
29530 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
29531 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
29532 chAvoidIndicationParam.avoidCnt;
29533 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
29534 (void *)chAvoidIndicationParam.avoidRange,
29535 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
29536 sizeof(WDI_ChAvoidFreqType));
29537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29538 "%s: band count %d", __func__,
29539 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
29540 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
29541 {
29542 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29543 "%s: srart freq %d, end freq %d", __func__,
29544 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
29545 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
29546 }
29547
29548 /*Notify UMAC*/
29549 if (pWDICtx->wdiLowLevelIndCB)
29550 {
29551 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29552 }
29553
29554 return WDI_STATUS_SUCCESS;
29555}
29556#endif /* FEATURE_WLAN_CH_AVOID */
29557
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053029558/**
29559 @brief Process OBSS Start scan result indication
29560
29561 @param pWDICtx: pointer to the WLAN DAL context
29562 pEventData: pointer to the event information structure
29563
29564 @see
29565 @return Result of the function call
29566*/
29567WDI_Status
29568WDI_ProcessHT40OBSSScanInd
29569(
29570 WDI_ControlBlockType* pWDICtx,
29571 WDI_EventInfoType* pEventData
29572)
29573{
29574 wpt_uint8* pSendBuffer = NULL;
29575 wpt_uint16 usDataOffset = 0;
29576 wpt_uint16 usSendSize = 0;
29577 wpt_uint16 usLen = 0;
29578 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
29579 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
29580 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
29581 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
29582
29583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29584
29585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29586 "%s", __func__);
29587
29588 /*-------------------------------------------------------------------------
29589 Sanity check
29590 -------------------------------------------------------------------------*/
29591 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29592 {
29593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29594 "%s: Invalid parameters", __func__);
29595 WDI_ASSERT(0);
29596 return WDI_STATUS_E_FAILURE;
29597 }
29598 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
29599
29600 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
29601 /*-----------------------------------------------------------------------
29602 Get message buffer
29603 -----------------------------------------------------------------------*/
29604
29605 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29606 WDI_START_HT40_OBSS_SCAN_IND,
29607 sizeof(tHT40ObssScanIndType),
29608 &pSendBuffer, &usDataOffset, &usSendSize))||
29609 ( usSendSize < (usDataOffset + usLen )))
29610 {
29611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29612 "Unable to get send buffer in HT40 OBSS Start req %p ",
29613 pEventData);
29614 WDI_ASSERT(0);
29615 return WDI_STATUS_E_FAILURE;
29616 }
29617 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
29618 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
29619 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
29620 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
29621 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
29622 pHT40ObssScanInd->OBSSScanActiveDwellTime =
29623 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
29624 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
29625 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
29626 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
29627 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
29628 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
29629 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
29630 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
29631 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
29632 pHT40ObssScanInd->OBSSScanActivityThreshold =
29633 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
29634 pHT40ObssScanInd->selfStaIdx =
29635 pwdiHT40OBSSScanInd->selfStaIdx;
29636 pHT40ObssScanInd->bssIdx =
29637 pwdiHT40OBSSScanInd->bssIdx;
29638 pHT40ObssScanInd->fortyMHZIntolerent =
29639 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
29640 pHT40ObssScanInd->channelCount =
29641 pwdiHT40OBSSScanInd->channelCount;
29642
29643 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
29644 WDI_ROAM_SCAN_MAX_CHANNELS);
29645 pHT40ObssScanInd->ieFieldLen =
29646 pwdiHT40OBSSScanInd->ieFieldLen;
29647
29648 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
29649 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
29650 pWDICtx->pReqStatusUserData = NULL;
29651 pWDICtx->pfncRspCB = NULL;
29652
29653 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
29654 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
29655
29656 /*-------------------------------------------------------------------------
29657 Send OBSS Start Indication to HAL
29658 -------------------------------------------------------------------------*/
29659 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29660 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29661
29662} /*End of WDI_ProcessHT40OBSSStartScanInd*/
29663
29664
29665/**
29666 @brief wdi_HT40OBSSScanInd
29667 This API is called to start OBSS scan
29668
29669 @param pWdiReq : pointer to get ind param
29670 @see
29671 @return SUCCESS or FAIL
29672*/
29673WDI_Status WDI_HT40OBSSScanInd
29674(
29675 WDI_HT40ObssScanParamsType *pWdiReq
29676)
29677{
29678 WDI_EventInfoType wdiEventData;
29679
29680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29681 "%s", __func__);
29682 /*-------------------------------------------------------------------------
29683 Sanity Check
29684 ------------------------------------------------------------------------*/
29685 if (eWLAN_PAL_FALSE == gWDIInitialized)
29686 {
29687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29688 "WDI API call before module is initialized - Fail request!");
29689
29690 return WDI_STATUS_E_NOT_ALLOWED;
29691 }
29692
29693 /*-------------------------------------------------------------------------
29694 Fill in Event data and post to the Main FSM
29695 ------------------------------------------------------------------------*/
29696 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
29697 wdiEventData.pEventData = pWdiReq;
29698 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
29699 wdiEventData.pCBfnc = NULL;
29700 wdiEventData.pUserData = NULL;
29701
29702
29703 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29704}
29705
29706/**
29707 @brief Process OBSS Stop scan result
29708
29709 @param pWDICtx: pointer to the WLAN DAL context
29710 pEventData: pointer to the event information structure
29711
29712 @see
29713 @return Result of the function call
29714*/
29715WDI_Status
29716WDI_ProcessHT40OBSSStopScanInd
29717(
29718 WDI_ControlBlockType* pWDICtx,
29719 WDI_EventInfoType* pEventData
29720)
29721{
29722 wpt_uint8* pSendBuffer = NULL;
29723 wpt_uint16 usDataOffset = 0;
29724 wpt_uint16 usSendSize = 0;
29725 wpt_uint16 usLen = 0;
29726 wpt_uint8 *wdiBssIdx = 0;
29727 tANI_U8 *bssIdx = 0;
29728 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
29729
29730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29731
29732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29733 "%s", __func__);
29734
29735 /*-------------------------------------------------------------------------
29736 Sanity check
29737 -------------------------------------------------------------------------*/
29738 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29739 {
29740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29741 "%s: Invalid parameters", __func__);
29742 WDI_ASSERT(0);
29743 return WDI_STATUS_E_FAILURE;
29744 }
29745 bssIdx = (wpt_uint8*)pEventData->pEventData;
29746 /*-----------------------------------------------------------------------
29747 Get message buffer
29748 -----------------------------------------------------------------------*/
29749
29750 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29751 WDI_STOP_HT40_OBSS_SCAN_IND,
29752 sizeof(tANI_U8),
29753 &pSendBuffer, &usDataOffset, &usSendSize))||
29754 ( usSendSize < (usDataOffset + usLen )))
29755 {
29756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29757 "Unable to get send buffer in HT40 OBSS Start req %p ",
29758 pEventData);
29759 WDI_ASSERT(0);
29760 return WDI_STATUS_E_FAILURE;
29761 }
29762
29763 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
29764 bssIdx = wdiBssIdx;
29765
29766 pWDICtx->pReqStatusUserData = NULL;
29767 pWDICtx->pfncRspCB = NULL;
29768
29769 /*-------------------------------------------------------------------------
29770 Send DHCP Start Indication to HAL
29771 -------------------------------------------------------------------------*/
29772 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29773 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29774} /*End of WDI_ProcessHT40OBSSStopScanInd*/
29775
29776/**
29777 @brief WDI_HT40OBSSStopScanInd
29778 This API is called to start OBSS scan
29779 @param pWdiReq : pointer to get ind param
29780 @see
29781 @return SUCCESS or FAIL
29782*/
29783WDI_Status WDI_HT40OBSSStopScanInd
29784(
29785 wpt_uint8 bssIdx
29786)
29787{
29788 WDI_EventInfoType wdiEventData;
29789
29790 /*-------------------------------------------------------------------------
29791 Sanity Check
29792 ------------------------------------------------------------------------*/
29793 if (eWLAN_PAL_FALSE == gWDIInitialized)
29794 {
29795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29796 "WDI API call before module is initialized - Fail request!");
29797
29798 return WDI_STATUS_E_NOT_ALLOWED;
29799 }
29800
29801 /*-------------------------------------------------------------------------
29802 Fill in Event data and post to the Main FSM
29803 ------------------------------------------------------------------------*/
29804 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
29805 wdiEventData.pEventData = &bssIdx;
29806 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
29807 wdiEventData.pCBfnc = NULL;
29808 wdiEventData.pUserData = NULL;
29809
29810 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29811}
29812