blob: 2f16e8256bbe42b22428ff9f0447f82f171974b4 [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*/
349#ifdef FEATURE_WLAN_CCX
350 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
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800370#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
371 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*/
schang86c22c42013-03-13 18:41:24 -0700399 /*-------------------------------------------------------------------------
400 Indications
401 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700402 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800403 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530404 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
405 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700406#ifdef WLAN_FEATURE_11W
407 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
408#else
409 NULL,
410#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700411 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
412 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530413#ifdef FEATURE_WLAN_BATCH_SCAN
414 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
415 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
416#else
417 NULL,
418 NULL,
419#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700420 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530421 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
422 WDI_ProcessHT40OBSSStopScanInd /*WDI_STOP_HT40_OBSS_SCAN_IND */
423
Jeff Johnson295189b2012-06-20 16:38:30 -0700424};
425
426
Jeff Johnsone7245742012-09-05 17:12:55 -0700427/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700428 DAL Request Processing Array - the functions in this table will only be
429 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700430 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700431 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700432WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700433{
434 /*INIT*/
435 WDI_ProcessStartRsp, /* WDI_START_RESP */
436 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
437 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
438
439 /*SCAN*/
440 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
441 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
442 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
443 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
444
445 /* ASSOCIATION*/
446 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
447 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
448 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
449 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
450 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
451
452 /* Security */
453 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
454 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
455 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
456 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
457
458 /* QoS and BA APIs */
459 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
460 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
461 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
462 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
463 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
464
465 /* Miscellaneous Control APIs */
466 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
467 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
468 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
469 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
470 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
471
472 /* BA APIs*/
473 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
474 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700475
Jeff Johnson295189b2012-06-20 16:38:30 -0700476 /* IBSS APIs*/
477 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
478 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
479
480 /*Soft AP APIs*/
481 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
482 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
483 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
484 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
485
486 /* PowerSave APIs */
487 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
488 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
489 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
490 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
491 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
492 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
493 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
494 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
495 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
496 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
497 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
498 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
499 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
500 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
501 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
502 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
503 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
504 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700505
Jeff Johnson295189b2012-06-20 16:38:30 -0700506
507 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
508
509 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
510 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
511#ifdef WLAN_FEATURE_VOWIFI_11R
512 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
513#else
514 NULL,
515#endif /* WLAN_FEATURE_VOWIFI_11R */
516 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
517 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700518#ifdef FEATURE_OEM_DATA_SUPPORT
519 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
520#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700521 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700522#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700523 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
524
Jeff Johnson295189b2012-06-20 16:38:30 -0700525 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700526
Jeff Johnson295189b2012-06-20 16:38:30 -0700527 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700528
Jeff Johnsone7245742012-09-05 17:12:55 -0700529 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
530
Jeff Johnson295189b2012-06-20 16:38:30 -0700531#ifdef FEATURE_WLAN_SCAN_PNO
532 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
533 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
534 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
535#else
536 NULL,
537 NULL,
538 NULL,
539#endif // FEATURE_WLAN_SCAN_PNO
540
541 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
542
543 /*---------------------------------------------------------------------
544 Indications
545 ---------------------------------------------------------------------*/
546#ifdef WLAN_FEATURE_PACKET_FILTERING
547 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700548 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700549 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700550 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700551 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700552 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700553 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700554 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700555#else
556 NULL,
557 NULL,
558 NULL,
559 NULL,
560#endif // WLAN_FEATURE_PACKET_FILTERING
561
562 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
563 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
564
565 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
566#ifdef FEATURE_WLAN_CCX
567 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
568#else
569 NULL,
570#endif
571
572#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700573 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
574 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700575#else
576 NULL,
577 NULL,
578#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700579 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
580 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700581#ifdef WLAN_FEATURE_11AC
582 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700583#else
584 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700585#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800586#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
587 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
588#else
589 NULL,
590#endif
schang86c22c42013-03-13 18:41:24 -0700591 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700592#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700593 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700594#else
595 NULL,
596#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530597#ifdef FEATURE_WLAN_TDLS
598 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
599#else
600 NULL,
601#endif
Leo Chang9056f462013-08-01 19:21:11 -0700602#ifdef FEATURE_WLAN_LPHB
603 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
604#else
605 NULL,
606#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530607
608#ifdef FEATURE_WLAN_BATCH_SCAN
609 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
610#else
611 NULL,
612#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800613 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530614
Jeff Johnson295189b2012-06-20 16:38:30 -0700615 /*---------------------------------------------------------------------
616 Indications
617 ---------------------------------------------------------------------*/
618 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
619 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
620 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
621 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
622 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
623 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
624
625 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
626
627 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
628
Jeff Johnson295189b2012-06-20 16:38:30 -0700629 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700630
631#ifdef FEATURE_WLAN_SCAN_PNO
632 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
633#else
634 NULL,
635#endif // FEATURE_WLAN_SCAN_PNO
636
637#ifdef WLAN_WAKEUP_EVENTS
638 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
639#else // WLAN_WAKEUP_EVENTS
640 NULL,
641#endif // WLAN_WAKEUP_EVENTS
642
643 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800644
Viral Modid86bde22012-12-10 13:09:21 -0800645 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530646#ifdef FEATURE_WLAN_TDLS
647 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
648#else
649 NULL,
650#endif
Leo Chang9056f462013-08-01 19:21:11 -0700651
652#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700653 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700654#else
655 NULL,
656#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700657
658 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700659
660 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530661
662#ifdef FEATURE_WLAN_BATCH_SCAN
663 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
664#else
665 NULL,
666#endif
667
Leo Chang0b0e45a2013-12-15 15:18:55 -0800668#ifdef FEATURE_WLAN_CH_AVOID
669 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
670#else
671 NULL,
672#endif /* FEATURE_WLAN_CH_AVOID */
673
Jeff Johnson295189b2012-06-20 16:38:30 -0700674};
675
676
Jeff Johnsone7245742012-09-05 17:12:55 -0700677/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700678 WLAN DAL Global Control Block
679 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700680WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700681static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
682
Jeff Johnsone7245742012-09-05 17:12:55 -0700683const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700684
685/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700686WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700687void* WDI_GET_PAL_CTX( void )
688{
Jeff Johnsone7245742012-09-05 17:12:55 -0700689 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700690}/*WDI_GET_PAL_CTX*/
691
Jeff Johnsone7245742012-09-05 17:12:55 -0700692/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700693 Helper inline converters
694 ============================================================================*/
695/*Convert WDI driver type into HAL driver type*/
696WPT_STATIC WPT_INLINE WDI_Status
697WDI_HAL_2_WDI_STATUS
698(
699 eHalStatus halStatus
700);
701
702/*Convert WDI request type into HAL request type*/
703WPT_STATIC WPT_INLINE tHalHostMsgType
704WDI_2_HAL_REQ_TYPE
705(
706 WDI_RequestEnumType wdiReqType
707);
708
709/*Convert WDI response type into HAL response type*/
710WPT_STATIC WPT_INLINE WDI_ResponseEnumType
711HAL_2_WDI_RSP_TYPE
712(
713 tHalHostMsgType halMsg
714);
715
716/*Convert WDI driver type into HAL driver type*/
717WPT_STATIC WPT_INLINE tDriverType
718WDI_2_HAL_DRV_TYPE
719(
720 WDI_DriverType wdiDriverType
721);
722
723/*Convert WDI stop reason into HAL stop reason*/
724WPT_STATIC WPT_INLINE tHalStopType
725WDI_2_HAL_STOP_REASON
726(
727 WDI_StopType wdiStopType
728);
729
730/*Convert WDI scan mode type into HAL scan mode type*/
731WPT_STATIC WPT_INLINE eHalSysMode
732WDI_2_HAL_SCAN_MODE
733(
734 WDI_ScanMode wdiScanMode
735);
736
737/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700738WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700739WDI_2_HAL_SEC_CH_OFFSET
740(
741 WDI_HTSecondaryChannelOffset wdiSecChOffset
742);
743
744/*Convert WDI BSS type into HAL BSS type*/
745WPT_STATIC WPT_INLINE tSirBssType
746WDI_2_HAL_BSS_TYPE
747(
748 WDI_BssType wdiBSSType
749);
750
751/*Convert WDI NW type into HAL NW type*/
752WPT_STATIC WPT_INLINE tSirNwType
753WDI_2_HAL_NW_TYPE
754(
755 WDI_NwType wdiNWType
756);
757
758/*Convert WDI chanel bonding type into HAL cb type*/
759WPT_STATIC WPT_INLINE ePhyChanBondState
760WDI_2_HAL_CB_STATE
761(
762 WDI_PhyChanBondState wdiCbState
763);
764
765/*Convert WDI chanel bonding type into HAL cb type*/
766WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
767WDI_2_HAL_HT_OPER_MODE
768(
769 WDI_HTOperatingMode wdiHTOperMode
770);
771
772/*Convert WDI mimo PS type into HAL mimo PS type*/
773WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
774WDI_2_HAL_MIMO_PS
775(
776 WDI_HTMIMOPowerSaveState wdiHTOperMode
777);
778
779/*Convert WDI ENC type into HAL ENC type*/
780WPT_STATIC WPT_INLINE tAniEdType
781WDI_2_HAL_ENC_TYPE
782(
783 WDI_EncryptType wdiEncType
784);
785
786/*Convert WDI WEP type into HAL WEP type*/
787WPT_STATIC WPT_INLINE tAniWepType
788WDI_2_HAL_WEP_TYPE
789(
790 WDI_WepType wdiWEPType
791);
792
793/*Convert WDI Link State into HAL Link State*/
794WPT_STATIC WPT_INLINE tSirLinkState
795WDI_2_HAL_LINK_STATE
796(
797 WDI_LinkStateType wdiLinkState
798);
799
Jeff Johnsone7245742012-09-05 17:12:55 -0700800/*Translate a STA Context from WDI into HAL*/
801WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700802void
803WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700804(
Jeff Johnson295189b2012-06-20 16:38:30 -0700805 tConfigStaParams* phalConfigSta,
806 WDI_ConfigStaReqInfoType* pwdiConfigSta
807);
Jeff Johnsone7245742012-09-05 17:12:55 -0700808
809/*Translate a Rate set info from WDI into HAL*/
810WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700811WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700812(
Jeff Johnson295189b2012-06-20 16:38:30 -0700813 tSirMacRateSet* pHalRateSet,
814 WDI_RateSet* pwdiRateSet
815);
816
817/*Translate an EDCA Parameter Record from WDI into HAL*/
818WPT_STATIC WPT_INLINE void
819WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700820(
Jeff Johnson295189b2012-06-20 16:38:30 -0700821 tSirMacEdcaParamRecord* phalEdcaParam,
822 WDI_EdcaParamRecord* pWDIEdcaParam
823);
824
825/*Copy a management frame header from WDI fmt into HAL fmt*/
826WPT_STATIC WPT_INLINE void
827WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
828(
829 tSirMacMgmtHdr* pmacMgmtHdr,
830 WDI_MacMgmtHdr* pwdiMacMgmtHdr
831);
832
833/*Copy config bss parameters from WDI fmt into HAL fmt*/
834WPT_STATIC WPT_INLINE void
835WDI_CopyWDIConfigBSSToHALConfigBSS
836(
837 tConfigBssParams* phalConfigBSS,
838 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
839);
840
Jeff Johnsone7245742012-09-05 17:12:55 -0700841/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700842 pointed to by user data */
843WPT_STATIC WPT_INLINE void
844WDI_ExtractRequestCBFromEvent
845(
846 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700847 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700848 void** ppUserData
849);
850
851wpt_uint8
852WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700853(
Jeff Johnson295189b2012-06-20 16:38:30 -0700854 WDI_ControlBlockType* pWDICtx,
855 WDI_BSSSessionType** ppSession
856);
857
858void
859WDI_AddBcastSTAtoSTATable
860(
861 WDI_ControlBlockType* pWDICtx,
862 WDI_AddStaParams * staParams,
863 wpt_uint16 usBcastStaIdx
864);
865
866WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700867(
Jeff Johnson295189b2012-06-20 16:38:30 -0700868 WDI_ControlBlockType* pWDICtx,
869 WDI_EventInfoType* pEventData
870);
871
872void
873WDI_SetPowerStateCb
874(
875 wpt_status status,
876 unsigned int dxePhyAddr,
877 void *pContext
878);
879
880#define CASE_RETURN_STRING( str ) \
881 case ( ( str ) ): return( #str ); break \
882
883/**
884 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700885
886 @param wdiReqMsgId: WDI Message request Id
887
888 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700889 @return Result of the function call
890*/
891static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
892{
893 switch (wdiReqMsgId)
894 {
895 CASE_RETURN_STRING( WDI_START_REQ );
896 CASE_RETURN_STRING( WDI_STOP_REQ );
897 CASE_RETURN_STRING( WDI_CLOSE_REQ );
898 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
899 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
900 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
901 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
902 CASE_RETURN_STRING( WDI_JOIN_REQ );
903 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
904 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
905 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
906 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
907 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
908 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
909 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
910 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
911 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
912 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
913 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
914 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
915 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
916 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
917 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
918 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
919 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
920 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
921 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
922 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
923 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
924 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
925 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
926 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
927 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
928 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -0700929 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700930 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530931#ifdef FEATURE_WLAN_TDLS
932 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
933#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700934 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
935 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
936 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
937 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
938 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
939 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
940 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
941 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
942 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
943 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
944 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
945 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
946 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
947 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
948 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
949 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
950 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
951 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
952 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
953 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
954 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
955 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
956 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
957 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
958 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700959 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700960 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
961 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
962 #ifdef FEATURE_WLAN_SCAN_PNO
963 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
964 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
965 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
966 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700967#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700968 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700969#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700970 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
971 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
972 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
973 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
974 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
975 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
976 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
977 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
978 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800979 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800980 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -0700981#ifdef WLAN_FEATURE_11W
982 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
983#endif
Rajeev79dbe4c2013-10-05 11:03:42 +0530984#ifdef FEATURE_WLAN_BATCH_SCAN
985 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
986 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
987 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
988#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530989 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
990 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Jeff Johnson295189b2012-06-20 16:38:30 -0700991 default:
992 return "Unknown WDI MessageId";
993 }
994}
995
996
997
998/**
999 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001000
1001 @param wdiRespMsgId: WDI Message response Id
1002
1003 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001004 @return Result of the function call
1005*/
1006static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1007{
1008 switch (wdiRespMsgId)
1009 {
1010 CASE_RETURN_STRING( WDI_START_RESP );
1011 CASE_RETURN_STRING( WDI_STOP_RESP );
1012 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1013 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1014 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1015 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1016 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1017 CASE_RETURN_STRING( WDI_JOIN_RESP );
1018 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1019 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1020 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1021 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1022 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1023 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1024 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1025 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1026 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1027 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1028 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1029 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1030 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1031 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1032 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1033 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1034 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1035 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1036 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1037 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1038 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1039 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1040 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1041 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1042 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1043 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1044 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301045#ifdef FEATURE_WLAN_TDLS
1046 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1047 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1048#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001049 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1050 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1051 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1052 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1053 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1054 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1055 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1056 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1057 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1058 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1059 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1060 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1061 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1062 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1063 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1064 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1065 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1066 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1067 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1068 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1069 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1070 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1071 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1072 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1073 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001074 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001075 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1076 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1077 #ifdef FEATURE_WLAN_SCAN_PNO
1078 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1079 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1080 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1081 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001082#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001083 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001084#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001085 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1086 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1087 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1088 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1089 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1090 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1091 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1092 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001093 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301094#ifdef FEATURE_WLAN_BATCH_SCAN
1095 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1096#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001097 default:
1098 return "Unknown WDI MessageId";
1099 }
1100}
1101
1102/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301103 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1104 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301105 @param capabilityBitmap - Base address of a 4 element Bitmap array
1106 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301107 @see
1108 @returns None
1109 */
1110void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1111{
Abhishek Singh08b60122014-02-04 18:05:23 +05301112 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301113 char capStr[512];
1114 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301115 for (j = 0; j < 4; j++) {
1116 for (i = 0; i < 32; i++) {
1117 if ((*(capabilityBitmap + j) & (1 << i))) {
1118 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301119 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1120 pCapStr += strlen("MCC");
1121 break;
1122 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1123 pCapStr += strlen("P2P");
1124 break;
1125 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1126 pCapStr += strlen("DOT11AC");
1127 break;
1128 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1129 pCapStr += strlen("SLM_SESSIONIZATION");
1130 break;
1131 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1132 pCapStr += strlen("DOT11AC_OPMODE");
1133 break;
1134 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1135 pCapStr += strlen("SAP32STA");
1136 break;
1137 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1138 pCapStr += strlen("TDLS");
1139 break;
1140 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1141 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1142 break;
1143 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1144 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1145 break;
1146 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1147 pCapStr += strlen("BEACON_OFFLOAD");
1148 break;
1149 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1150 pCapStr += strlen("SCAN_OFFLOAD");
1151 break;
1152 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1153 pCapStr += strlen("ROAM_OFFLOAD");
1154 break;
1155 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1156 pCapStr += strlen("BCN_MISS_OFFLOAD");
1157 break;
1158 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1159 pCapStr += strlen("STA_POWERSAVE");
1160 break;
1161 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1162 pCapStr += strlen("AP_UAPSD");
1163 break;
1164 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1165 pCapStr += strlen("AP_DFS");
1166 break;
1167 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1168 pCapStr += strlen("BLOCKACK");
1169 break;
1170 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1171 pCapStr += strlen("PHY_ERR");
1172 break;
1173 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1174 pCapStr += strlen("BCN_FILTER");
1175 break;
1176 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1177 pCapStr += strlen("RTT");
1178 break;
1179 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1180 pCapStr += strlen("RATECTRL");
1181 break;
1182 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1183 pCapStr += strlen("WOW");
1184 break;
1185 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1186 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1187 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301188 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1189 pCapStr += strlen("FW_IN_TX_PATH");
1190 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301191 case HT40_OBSS_SCAN:
1192 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1193 "%s", "HT40_OBSS_SCAN");
1194 pCapStr += strlen("HT40_OBSS_SCAN");
1195 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301196 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1197 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1198 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1199 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1200 break;
1201
Abhishek Singh08b60122014-02-04 18:05:23 +05301202 }
1203 *pCapStr++ = ',';
1204 *pCapStr++ = ' ';
1205 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301206 }
1207 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301208 pCapStr -= 2;
1209 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301210 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301212}
1213
1214/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001215 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001216
1217 @param halStatusId: HAL status Id
1218
1219 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001220 @return Result of the function call
1221*/
1222static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1223{
1224 switch (halStatusId)
1225 {
1226 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1227 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1228 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1229 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1230 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1231 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1232 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1233 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1234 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1235 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1236 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1237 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1238 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1239 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1240 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1241 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1242 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1243 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1244 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1245 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1246 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1247 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1248 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1249 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1250 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1251 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1252 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1253 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1254 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1255 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1256 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1257 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1258 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1259 default:
1260 return "Unknown HAL status";
1261 }
1262}
1263
Jeff Johnsone7245742012-09-05 17:12:55 -07001264/*========================================================================
1265
Jeff Johnson295189b2012-06-20 16:38:30 -07001266 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001267
Jeff Johnson295189b2012-06-20 16:38:30 -07001268==========================================================================*/
1269
1270/**
1271 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001272
Jeff Johnson295189b2012-06-20 16:38:30 -07001273 DAL will allocate all the resources it needs. It will open PAL, it will also
1274 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001275 DXE/SMD or any other drivers that they need.
1276
Jeff Johnson295189b2012-06-20 16:38:30 -07001277 @param pOSContext: pointer to the OS context provided by the UMAC
1278 will be passed on to PAL on Open
1279 ppWDIGlobalCtx: output pointer of Global Context
1280 pWdiDevCapability: output pointer of device capability
1281
1282 @return Result of the function call
1283*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001284WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001285WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001286(
Jeff Johnson295189b2012-06-20 16:38:30 -07001287 void* pOSContext,
1288 void** ppWDIGlobalCtx,
1289 WDI_DeviceCapabilityType* pWdiDevCapability,
1290 unsigned int driverType
1291)
1292{
1293 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001294 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001295 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001296 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1298
1299 /*---------------------------------------------------------------------
1300 Sanity check
1301 ---------------------------------------------------------------------*/
1302 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1303 {
1304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1305 "Invalid input parameters in WDI_Init");
1306
Jeff Johnsone7245742012-09-05 17:12:55 -07001307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001308 }
1309
1310 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001311 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001312 ---------------------------------------------------------------------*/
1313 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1314 {
1315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1316 "WDI module already initialized - return");
1317
Jeff Johnsone7245742012-09-05 17:12:55 -07001318 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001319 }
1320
1321 /*Module is now initialized - this flag is to ensure the fact that multiple
1322 init will not happen on WDI
1323 !! - potential race does exist because read and set are not atomic,
1324 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001325 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001326
1327 /*Setup the control block */
1328 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001329 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001330
1331 /*Setup the STA Table*/
1332 wdiStatus = WDI_STATableInit(&gWDICb);
1333 if ( WDI_STATUS_SUCCESS != wdiStatus )
1334 {
1335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1336 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001337 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001338 goto fail_STATableInit;
1339 }
1340
1341 /*------------------------------------------------------------------------
1342 Open the PAL
1343 ------------------------------------------------------------------------*/
1344 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1345 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1346 {
1347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1348 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001349 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001350 goto fail_wpalOpen;
1351 }
1352
1353 /*Initialize main synchro mutex - it will be used to ensure integrity of
1354 the main WDI Control Block*/
1355 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1356 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1357 {
1358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1359 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001360 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001361 goto fail_mutex;
1362 }
1363
1364 /*Initialize the response timer - it will be used to time all messages
1365 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001366 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1367 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001368 &gWDICb);
1369 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1370 {
1371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1372 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001373 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001374 goto fail_timer;
1375 }
1376
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001377 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1378 WDI_SsrTimerCB,
1379 &gWDICb);
1380 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1381 {
1382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1383 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001384 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001385 goto fail_timer2;
1386 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001387 /* Initialize the WDI Pending Request Queue*/
1388 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1389 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1390 {
1391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1392 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001393 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001394 goto fail_pend_queue;
1395 }
1396
1397 /*Init WDI Pending Assoc Id Queue */
1398 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1399 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1400 {
1401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1402 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001403 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001404 goto fail_assoc_queue;
1405 }
1406
1407 /*Initialize the BSS sessions pending Queue */
1408 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1409 {
1410 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1411 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1412 {
1413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1414 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001415 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001416 goto fail_bss_queue;
1417 }
1418 }
1419
1420 /*Indicate the control block is sufficiently initialized for callbacks*/
1421 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1422
1423 /*------------------------------------------------------------------------
1424 Initialize the Data Path Utility Module
1425 ------------------------------------------------------------------------*/
1426 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1427 if ( WDI_STATUS_SUCCESS != wdiStatus )
1428 {
1429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1430 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001431 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001432 goto fail_dp_util_init;
1433 }
1434
1435 /* Init Set power state event */
1436 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001437 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001438 {
1439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1440 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001441 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001442 goto fail_power_event;
1443 }
1444
1445 /* Init WCTS action event */
1446 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001447 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001448 {
1449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1450 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001451 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001452 goto fail_wcts_event;
1453 }
1454
1455 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001456 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001457 ------------------------------------------------------------------------*/
1458 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1459 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001460 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001461 wctsCBs.wctsRxMsgCBData = &gWDICb;
1462
Jeff Johnsone7245742012-09-05 17:12:55 -07001463 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001464 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001465 WDI_CT_CHANNEL_SIZE,
1466 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001467
1468 if ( NULL == gWDICb.wctsHandle )
1469 {
1470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001471 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001472 goto fail_wcts_open;
1473 }
1474
1475 gWDICb.driverMode = (tDriverType)driverType;
1476 /* FTM mode not need to open Transport Driver */
1477 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001478 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001479 /*------------------------------------------------------------------------
1480 Open the Data Transport
1481 ------------------------------------------------------------------------*/
1482 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1483 {
1484 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001485 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001486 goto fail_wdts_open;
1487 }
1488 }
1489
1490 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001491 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001492
1493 /*Send the context as a ptr to the global WDI Control Block*/
1494 *ppWDIGlobalCtx = &gWDICb;
1495
1496 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001497 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001498 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1499 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1500 return WDI_STATUS_SUCCESS;
1501
1502 /* ERROR handlers
1503 Undo everything that completed successfully */
1504
1505 fail_wdts_open:
1506 {
1507 wpt_status eventStatus;
1508
1509 /* Closing WCTS in this scenario is tricky since it has to close
1510 the SMD channel and then we get notified asynchronously when
1511 the channel has been closed. So we take some of the logic from
1512 the "normal" close procedure in WDI_Close()
1513 */
1514
1515 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001516 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001517 {
1518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001519 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001520 }
1521
1522 WCTS_CloseTransport(gWDICb.wctsHandle);
1523
1524 /* Wait for WCTS to close the control transport. If we were able
1525 to reset the event flag, then we'll wait for the event,
1526 otherwise we'll wait for a maximum amount of time required for
1527 the channel to be closed */
1528 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1529 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001530 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001531 WDI_WCTS_ACTION_TIMEOUT);
1532 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1533 {
1534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001535 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001536 }
1537 }
1538 else
1539 {
1540 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1541 }
1542 }
1543 fail_wcts_open:
1544 wpalEventDelete(&gWDICb.wctsActionEvent);
1545 fail_wcts_event:
1546 wpalEventDelete(&gWDICb.setPowerStateEvent);
1547 fail_power_event:
1548 WDI_DP_UtilsExit(&gWDICb);
1549 fail_dp_util_init:
1550 gWDICb.magic = 0;
1551 fail_bss_queue:
1552 /* entries 0 thru i-1 were successfully initialized */
1553 while (0 < i)
1554 {
1555 i--;
1556 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1557 }
1558 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1559 fail_assoc_queue:
1560 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1561 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001562 wpalTimerDelete(&gWDICb.ssrTimer);
1563 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001564 wpalTimerDelete(&gWDICb.wptResponseTimer);
1565 fail_timer:
1566 wpalMutexDelete(&gWDICb.wptMutex);
1567 fail_mutex:
1568 wpalClose(gWDICb.pPALContext);
1569 fail_wpalOpen:
1570 WDI_STATableClose(&gWDICb);
1571 fail_STATableInit:
1572 gWDIInitialized = eWLAN_PAL_FALSE;
1573
1574 return WDI_STATUS_E_FAILURE;
1575
1576}/*WDI_Init*/;
1577
1578/**
1579 @brief WDI_Start will be called when the upper MAC is ready to
1580 commence operation with the WLAN Device. Upon the call
1581 of this API the WLAN DAL will pack and send a HAL Start
1582 message to the lower RIVA sub-system if the SMD channel
1583 has been fully opened and the RIVA subsystem is up.
1584
1585 If the RIVA sub-system is not yet up and running DAL
1586 will queue the request for Open and will wait for the
1587 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001588 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001589
1590 WDI_Init must have been called.
1591
Jeff Johnsone7245742012-09-05 17:12:55 -07001592 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001593 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001594
Jeff Johnson295189b2012-06-20 16:38:30 -07001595 wdiStartRspCb: callback for passing back the response of
1596 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001597
Jeff Johnson295189b2012-06-20 16:38:30 -07001598 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001599 callback
1600
Jeff Johnson295189b2012-06-20 16:38:30 -07001601 @see WDI_Start
1602 @return Result of the function call
1603*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001604WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001605WDI_Start
1606(
1607 WDI_StartReqParamsType* pwdiStartParams,
1608 WDI_StartRspCb wdiStartRspCb,
1609 void* pUserData
1610)
1611{
1612 WDI_EventInfoType wdiEventData;
1613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1614
1615 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001616 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001617 ------------------------------------------------------------------------*/
1618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1619 {
1620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1621 "WDI API call before module is initialized - Fail request");
1622
Jeff Johnsone7245742012-09-05 17:12:55 -07001623 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001624 }
1625
1626 /*------------------------------------------------------------------------
1627 Fill in Event data and post to the Main FSM
1628 ------------------------------------------------------------------------*/
1629 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001630 wdiEventData.pEventData = pwdiStartParams;
1631 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1632 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001633 wdiEventData.pUserData = pUserData;
1634
1635 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1636
1637}/*WDI_Start*/
1638
1639/**
1640 @brief WDI_Stop will be called when the upper MAC is ready to
1641 stop any operation with the WLAN Device. Upon the call
1642 of this API the WLAN DAL will pack and send a HAL Stop
1643 message to the lower RIVA sub-system if the DAL Core is
1644 in started state.
1645
1646 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001647
1648 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001649
1650 WDI_Start must have been called.
1651
Jeff Johnsone7245742012-09-05 17:12:55 -07001652 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001653 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001654
Jeff Johnson295189b2012-06-20 16:38:30 -07001655 wdiStopRspCb: callback for passing back the response of
1656 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001657
Jeff Johnson295189b2012-06-20 16:38:30 -07001658 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001659 callback
1660
Jeff Johnson295189b2012-06-20 16:38:30 -07001661 @see WDI_Start
1662 @return Result of the function call
1663*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001664WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001665WDI_Stop
1666(
1667 WDI_StopReqParamsType* pwdiStopParams,
1668 WDI_StopRspCb wdiStopRspCb,
1669 void* pUserData
1670)
1671{
1672 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001673 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1675
1676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001678 ------------------------------------------------------------------------*/
1679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1680 {
1681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1682 "WDI API call before module is initialized - Fail request");
1683
Jeff Johnsone7245742012-09-05 17:12:55 -07001684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001685 }
1686
Jeff Johnson43971f52012-07-17 12:26:56 -07001687 /*Access to the global state must be locked before cleaning */
1688 wpalMutexAcquire(&pWDICtx->wptMutex);
1689
1690 /*Clear all pending request*/
1691 WDI_ClearPendingRequests(pWDICtx);
1692
1693 /*We have completed cleaning unlock now*/
1694 wpalMutexRelease(&pWDICtx->wptMutex);
1695
Jeff Johnson295189b2012-06-20 16:38:30 -07001696 /* Free the global variables */
1697 wpalMemoryFree(gpHostWlanFeatCaps);
1698 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001699 gpHostWlanFeatCaps = NULL;
1700 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001701
1702 /*------------------------------------------------------------------------
1703 Fill in Event data and post to the Main FSM
1704 ------------------------------------------------------------------------*/
1705 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001706 wdiEventData.pEventData = pwdiStopParams;
1707 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1708 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001709 wdiEventData.pUserData = pUserData;
1710
1711 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1712
1713}/*WDI_Stop*/
1714
1715
1716
1717/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001718 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001719 needs to interact with DAL. DAL will free its control
1720 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001721
1722 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001723
1724 WDI_Stop must have been called.
1725
1726 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001727
Jeff Johnson295189b2012-06-20 16:38:30 -07001728 @see WDI_Stop
1729 @return Result of the function call
1730*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001731WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001732WDI_Close
1733(
1734 void
1735)
1736{
1737 wpt_uint8 i;
1738 WDI_EventInfoType wdiEventData;
1739 wpt_status wptStatus;
1740 wpt_status eventStatus;
1741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1742
1743 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001744 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001745 ------------------------------------------------------------------------*/
1746 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1747 {
1748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1749 "WDI API call before module is initialized - Fail request");
1750
Jeff Johnsone7245742012-09-05 17:12:55 -07001751 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001752 }
1753
1754 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1755 (the control transport will be closed by the FSM and we'll want
1756 to wait until that completes)*/
1757 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001758 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001759 {
1760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001761 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 /* fall through and try to finish closing via the FSM */
1763 }
1764
1765 /*------------------------------------------------------------------------
1766 Fill in Event data and post to the Main FSM
1767 ------------------------------------------------------------------------*/
1768 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001769 wdiEventData.pEventData = NULL;
1770 wdiEventData.uEventDataSize = 0;
1771 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001772 wdiEventData.pUserData = NULL;
1773
1774 gWDIInitialized = eWLAN_PAL_FALSE;
1775
1776 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1777
1778 /*Wait for WCTS to close the control transport
1779 (but only if we were able to reset the event flag*/
1780 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1781 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001782 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001783 WDI_WCTS_ACTION_TIMEOUT);
1784 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1785 {
1786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001787 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001788 }
1789 }
1790
1791 /* Destroy the WCTS action event */
1792 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1793 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1794 {
1795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1796 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001797 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001798 }
1799
1800 /* Destroy the Set Power State event */
1801 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1802 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1803 {
1804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1805 "WDI Close failed to destroy an event");
1806
Jeff Johnsone7245742012-09-05 17:12:55 -07001807 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001808 }
1809
1810 /*------------------------------------------------------------------------
1811 Closes the Data Path Utility Module
1812 ------------------------------------------------------------------------*/
1813 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1814 {
1815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1816 "WDI Init failed to close the DP Util Module");
1817
Jeff Johnsone7245742012-09-05 17:12:55 -07001818 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001819 }
1820
1821 /*destroy the BSS sessions pending Queue */
1822 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1823 {
1824 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1825 }
1826
1827 /* destroy the WDI Pending Assoc Id Request Queue*/
1828 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1829
1830 /* destroy the WDI Pending Request Queue*/
1831 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001832
Jeff Johnson295189b2012-06-20 16:38:30 -07001833 /*destroy the response timer */
1834 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1835
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001836 /*destroy the SSR timer */
1837 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1838
Jeff Johnson295189b2012-06-20 16:38:30 -07001839 /*invalidate the main synchro mutex */
1840 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1841 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1842 {
1843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1844 "Failed to delete mutex %d", wptStatus);
1845 WDI_ASSERT(0);
1846 }
1847
1848 /*Clear control block. note that this will clear the "magic"
1849 which will inhibit all asynchronous callbacks*/
1850 WDI_CleanCB(&gWDICb);
1851
1852 return wptStatus;
1853
1854}/*WDI_Close*/
1855
1856/**
1857 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1858 This will do most of the WDI stop & close
1859 operations without doing any handshake with Riva
1860
1861 This will also make sure that the control transport
1862 will NOT be closed.
1863
1864 This request will not be queued.
1865
1866
1867 WDI_Start must have been called.
1868
1869 @param closeTransport: Close control channel if this is set
1870
1871 @return Result of the function call
1872*/
1873WDI_Status
1874WDI_Shutdown
1875(
1876 wpt_boolean closeTransport
1877)
1878{
1879 WDI_EventInfoType wdiEventData;
1880 wpt_status wptStatus;
1881 int i = 0;
1882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1883
1884 /*------------------------------------------------------------------------
1885 Sanity Check
1886 ------------------------------------------------------------------------*/
1887 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1888 {
1889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1890 "WDI API call before module is initialized - Fail request");
1891
1892 return WDI_STATUS_E_NOT_ALLOWED;
1893 }
1894
1895 /*------------------------------------------------------------------------
1896 Fill in Event data and post to the Main FSM
1897 ------------------------------------------------------------------------*/
1898 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1899 wdiEventData.pEventData = NULL;
1900 wdiEventData.uEventDataSize = 0;
1901
1902 /* Shutdown will not be queued, if the state is busy timer will be
1903 * stopped & this message will be processed.*/
1904 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1905 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1906 {
1907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001908 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001909 }
1910 /* Destroy the Set Power State event */
1911 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1912 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1913 {
1914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1915 "WDI Close failed to destroy an event");
1916
1917 WDI_ASSERT(0);
1918 }
1919 /*------------------------------------------------------------------------
1920 Closes the Data Path Utility Module
1921 ------------------------------------------------------------------------*/
1922 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1923 {
1924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1925 "WDI Init failed to close the DP Util Module");
1926
1927 WDI_ASSERT(0);
1928 }
1929 if ( closeTransport )
1930 {
1931 /* Close control transport, called from module unload */
1932 WCTS_CloseTransport(gWDICb.wctsHandle);
1933 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001934 else
1935 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001936 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001937 the pending messages in the transport queue */
1938 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1939 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001940 /*destroy the BSS sessions pending Queue */
1941 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1942 {
1943 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1944 }
1945
1946 /* destroy the WDI Pending Assoc Id Request Queue*/
1947 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1948 /* destroy the WDI Pending Request Queue*/
1949 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1950 /*destroy the response timer */
1951 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001952 /*destroy the SSR timer */
1953 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001954
1955 /*invalidate the main synchro mutex */
1956 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1957 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1958 {
1959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001960 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 WDI_ASSERT(0);
1962 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001963 /* Free the global variables */
1964 wpalMemoryFree(gpHostWlanFeatCaps);
1965 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001966 gpHostWlanFeatCaps = NULL;
1967 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001968 /*Clear control block. note that this will clear the "magic"
1969 which will inhibit all asynchronous callbacks*/
1970 WDI_CleanCB(&gWDICb);
1971 return wptStatus;
1972
1973}/*WDI_Shutdown*/
1974
1975
Jeff Johnsone7245742012-09-05 17:12:55 -07001976/*========================================================================
1977
Jeff Johnson295189b2012-06-20 16:38:30 -07001978 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001979
Jeff Johnson295189b2012-06-20 16:38:30 -07001980==========================================================================*/
1981
1982/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001983 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001984 the WLAN Device to get ready for a scan procedure. Upon
1985 the call of this API the WLAN DAL will pack and send a
1986 HAL Init Scan request message to the lower RIVA
1987 sub-system if DAL is in state STARTED.
1988
1989 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001990 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001991
1992 WDI_Start must have been called.
1993
1994 @param wdiInitScanParams: the init scan parameters as specified
1995 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001996
Jeff Johnson295189b2012-06-20 16:38:30 -07001997 wdiInitScanRspCb: callback for passing back the response
1998 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001999
Jeff Johnson295189b2012-06-20 16:38:30 -07002000 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002001 callback
2002
Jeff Johnson295189b2012-06-20 16:38:30 -07002003 @see WDI_Start
2004 @return Result of the function call
2005*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002006WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002007WDI_InitScanReq
2008(
2009 WDI_InitScanReqParamsType* pwdiInitScanParams,
2010 WDI_InitScanRspCb wdiInitScanRspCb,
2011 void* pUserData
2012)
2013{
2014 WDI_EventInfoType wdiEventData;
2015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2016
2017 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002018 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002019 ------------------------------------------------------------------------*/
2020 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2021 {
2022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2023 "WDI API call before module is initialized - Fail request");
2024
Jeff Johnsone7245742012-09-05 17:12:55 -07002025 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002026 }
2027
2028 /*------------------------------------------------------------------------
2029 Fill in Event data and post to the Main FSM
2030 ------------------------------------------------------------------------*/
2031 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002032 wdiEventData.pEventData = pwdiInitScanParams;
2033 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2034 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002035 wdiEventData.pUserData = pUserData;
2036
2037 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2038
2039}/*WDI_InitScanReq*/
2040
2041/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002042 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002043 wishes to change the Scan channel on the WLAN Device.
2044 Upon the call of this API the WLAN DAL will pack and
2045 send a HAL Start Scan request message to the lower RIVA
2046 sub-system if DAL is in state STARTED.
2047
2048 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002049 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002050
2051 WDI_InitScanReq must have been called.
2052
Jeff Johnsone7245742012-09-05 17:12:55 -07002053 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002055
Jeff Johnson295189b2012-06-20 16:38:30 -07002056 wdiStartScanRspCb: callback for passing back the
2057 response of the start scan operation received from the
2058 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002059
Jeff Johnson295189b2012-06-20 16:38:30 -07002060 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002061 callback
2062
Jeff Johnson295189b2012-06-20 16:38:30 -07002063 @see WDI_InitScanReq
2064 @return Result of the function call
2065*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002066WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002067WDI_StartScanReq
2068(
2069 WDI_StartScanReqParamsType* pwdiStartScanParams,
2070 WDI_StartScanRspCb wdiStartScanRspCb,
2071 void* pUserData
2072)
2073{
2074 WDI_EventInfoType wdiEventData;
2075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2076
2077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002078 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002079 ------------------------------------------------------------------------*/
2080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2081 {
2082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2083 "WDI API call before module is initialized - Fail request");
2084
Jeff Johnsone7245742012-09-05 17:12:55 -07002085 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002086 }
2087
2088 /*------------------------------------------------------------------------
2089 Fill in Event data and post to the Main FSM
2090 ------------------------------------------------------------------------*/
2091 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002092 wdiEventData.pEventData = pwdiStartScanParams;
2093 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2094 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002095 wdiEventData.pUserData = pUserData;
2096
2097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2098
2099}/*WDI_StartScanReq*/
2100
2101
2102/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002103 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002104 wants to end scanning for a particular channel that it
2105 had set before by calling Scan Start on the WLAN Device.
2106 Upon the call of this API the WLAN DAL will pack and
2107 send a HAL End Scan request message to the lower RIVA
2108 sub-system if DAL is in state STARTED.
2109
2110 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002111 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002112
2113 WDI_StartScanReq must have been called.
2114
Jeff Johnsone7245742012-09-05 17:12:55 -07002115 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002116 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002117
Jeff Johnson295189b2012-06-20 16:38:30 -07002118 wdiEndScanRspCb: callback for passing back the response
2119 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002120
Jeff Johnson295189b2012-06-20 16:38:30 -07002121 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002122 callback
2123
Jeff Johnson295189b2012-06-20 16:38:30 -07002124 @see WDI_StartScanReq
2125 @return Result of the function call
2126*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002127WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002128WDI_EndScanReq
2129(
2130 WDI_EndScanReqParamsType* pwdiEndScanParams,
2131 WDI_EndScanRspCb wdiEndScanRspCb,
2132 void* pUserData
2133)
2134{
2135 WDI_EventInfoType wdiEventData;
2136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2137
2138 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002139 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002140 ------------------------------------------------------------------------*/
2141 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2142 {
2143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2144 "WDI API call before module is initialized - Fail request");
2145
Jeff Johnsone7245742012-09-05 17:12:55 -07002146 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002147 }
2148
2149 /*------------------------------------------------------------------------
2150 Fill in Event data and post to the Main FSM
2151 ------------------------------------------------------------------------*/
2152 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002153 wdiEventData.pEventData = pwdiEndScanParams;
2154 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2155 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002156 wdiEventData.pUserData = pUserData;
2157
2158 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2159
2160}/*WDI_EndScanReq*/
2161
2162
2163/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002164 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002165 completed the scan process on the WLAN Device. Upon the
2166 call of this API the WLAN DAL will pack and send a HAL
2167 Finish Scan Request request message to the lower RIVA
2168 sub-system if DAL is in state STARTED.
2169
2170 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002171 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002172
2173 WDI_InitScanReq must have been called.
2174
Jeff Johnsone7245742012-09-05 17:12:55 -07002175 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002176 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002177
Jeff Johnson295189b2012-06-20 16:38:30 -07002178 wdiFinishScanRspCb: callback for passing back the
2179 response of the finish scan operation received from the
2180 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002181
Jeff Johnson295189b2012-06-20 16:38:30 -07002182 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002183 callback
2184
Jeff Johnson295189b2012-06-20 16:38:30 -07002185 @see WDI_InitScanReq
2186 @return Result of the function call
2187*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002188WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002189WDI_FinishScanReq
2190(
2191 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2192 WDI_FinishScanRspCb wdiFinishScanRspCb,
2193 void* pUserData
2194)
2195{
2196 WDI_EventInfoType wdiEventData;
2197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2198
2199 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002200 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002201 ------------------------------------------------------------------------*/
2202 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2203 {
2204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2205 "WDI API call before module is initialized - Fail request");
2206
Jeff Johnsone7245742012-09-05 17:12:55 -07002207 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002208 }
2209
2210 /*------------------------------------------------------------------------
2211 Fill in Event data and post to the Main FSM
2212 ------------------------------------------------------------------------*/
2213 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002214 wdiEventData.pEventData = pwdiFinishScanParams;
2215 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2216 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002217 wdiEventData.pUserData = pUserData;
2218
2219 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2220
2221}/*WDI_FinishScanReq*/
2222
Jeff Johnsone7245742012-09-05 17:12:55 -07002223/*========================================================================
2224
Jeff Johnson295189b2012-06-20 16:38:30 -07002225 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002226
Jeff Johnson295189b2012-06-20 16:38:30 -07002227==========================================================================*/
2228
2229/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002230 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002231 to start an association procedure to a BSS. Upon the
2232 call of this API the WLAN DAL will pack and send a HAL
2233 Join request message to the lower RIVA sub-system if
2234 DAL is in state STARTED.
2235
2236 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002237 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002238
2239 WDI_Start must have been called.
2240
Jeff Johnsone7245742012-09-05 17:12:55 -07002241 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002242 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002243
Jeff Johnson295189b2012-06-20 16:38:30 -07002244 wdiJoinRspCb: callback for passing back the response of
2245 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002246
Jeff Johnson295189b2012-06-20 16:38:30 -07002247 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002248 callback
2249
Jeff Johnson295189b2012-06-20 16:38:30 -07002250 @see WDI_Start
2251 @return Result of the function call
2252*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002253WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002254WDI_JoinReq
2255(
2256 WDI_JoinReqParamsType* pwdiJoinParams,
2257 WDI_JoinRspCb wdiJoinRspCb,
2258 void* pUserData
2259)
2260{
2261 WDI_EventInfoType wdiEventData;
2262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2263
2264 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002265 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002266 ------------------------------------------------------------------------*/
2267 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2268 {
2269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2270 "WDI API call before module is initialized - Fail request");
2271
Jeff Johnsone7245742012-09-05 17:12:55 -07002272 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002273 }
2274
2275 /*------------------------------------------------------------------------
2276 Fill in Event data and post to the Main FSM
2277 ------------------------------------------------------------------------*/
2278 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002279 wdiEventData.pEventData = pwdiJoinParams;
2280 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2281 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002282 wdiEventData.pUserData = pUserData;
2283
2284 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2285
2286}/*WDI_JoinReq*/
2287
2288/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002289 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002290 wishes to configure the newly acquired or in process of
2291 being acquired BSS to the HW . Upon the call of this API
2292 the WLAN DAL will pack and send a HAL Config BSS request
2293 message to the lower RIVA sub-system if DAL is in state
2294 STARTED.
2295
2296 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002297 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002298
2299 WDI_JoinReq must have been called.
2300
Jeff Johnsone7245742012-09-05 17:12:55 -07002301 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002302 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002303
Jeff Johnson295189b2012-06-20 16:38:30 -07002304 wdiConfigBSSRspCb: callback for passing back the
2305 response of the config BSS operation received from the
2306 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002307
Jeff Johnson295189b2012-06-20 16:38:30 -07002308 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002309 callback
2310
Jeff Johnson295189b2012-06-20 16:38:30 -07002311 @see WDI_JoinReq
2312 @return Result of the function call
2313*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002314WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002315WDI_ConfigBSSReq
2316(
2317 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2318 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2319 void* pUserData
2320)
2321{
2322 WDI_EventInfoType wdiEventData;
2323 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2324
2325 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002326 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002327 ------------------------------------------------------------------------*/
2328 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2329 {
2330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2331 "WDI API call before module is initialized - Fail request");
2332
Jeff Johnsone7245742012-09-05 17:12:55 -07002333 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002334 }
2335
2336 /*------------------------------------------------------------------------
2337 Fill in Event data and post to the Main FSM
2338 ------------------------------------------------------------------------*/
2339 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002340 wdiEventData.pEventData = pwdiConfigBSSParams;
2341 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2342 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002343 wdiEventData.pUserData = pUserData;
2344
2345 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2346
2347}/*WDI_ConfigBSSReq*/
2348
2349/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002350 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 disassociating from the BSS and wishes to notify HW.
2352 Upon the call of this API the WLAN DAL will pack and
2353 send a HAL Del BSS request message to the lower RIVA
2354 sub-system if DAL is in state STARTED.
2355
2356 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002357 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002358
2359 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2360
Jeff Johnsone7245742012-09-05 17:12:55 -07002361 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002362 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002363
Jeff Johnson295189b2012-06-20 16:38:30 -07002364 wdiDelBSSRspCb: callback for passing back the response
2365 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002366
Jeff Johnson295189b2012-06-20 16:38:30 -07002367 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002368 callback
2369
2370 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002371 @return Result of the function call
2372*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002373WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002374WDI_DelBSSReq
2375(
2376 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2377 WDI_DelBSSRspCb wdiDelBSSRspCb,
2378 void* pUserData
2379)
2380{
2381 WDI_EventInfoType wdiEventData;
2382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2383
2384 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002385 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002386 ------------------------------------------------------------------------*/
2387 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2388 {
2389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2390 "WDI API call before module is initialized - Fail request");
2391
Jeff Johnsone7245742012-09-05 17:12:55 -07002392 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002393 }
2394
2395 /*------------------------------------------------------------------------
2396 Fill in Event data and post to the Main FSM
2397 ------------------------------------------------------------------------*/
2398 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002399 wdiEventData.pEventData = pwdiDelBSSParams;
2400 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2401 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002402 wdiEventData.pUserData = pUserData;
2403
2404 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2405
2406}/*WDI_DelBSSReq*/
2407
2408/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002409 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002410 associated to a BSS and wishes to configure HW for
2411 associated state. Upon the call of this API the WLAN DAL
2412 will pack and send a HAL Post Assoc request message to
2413 the lower RIVA sub-system if DAL is in state STARTED.
2414
2415 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002416 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002417
2418 WDI_JoinReq must have been called.
2419
2420 @param wdiPostAssocReqParams: the assoc parameters as specified
2421 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002422
Jeff Johnson295189b2012-06-20 16:38:30 -07002423 wdiPostAssocRspCb: callback for passing back the
2424 response of the post assoc operation received from the
2425 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002426
Jeff Johnson295189b2012-06-20 16:38:30 -07002427 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002428 callback
2429
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 @see WDI_JoinReq
2431 @return Result of the function call
2432*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002433WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002434WDI_PostAssocReq
2435(
2436 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2437 WDI_PostAssocRspCb wdiPostAssocRspCb,
2438 void* pUserData
2439)
2440{
2441 WDI_EventInfoType wdiEventData;
2442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2443
2444 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002445 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002446 ------------------------------------------------------------------------*/
2447 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2448 {
2449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2450 "WDI API call before module is initialized - Fail request");
2451
Jeff Johnsone7245742012-09-05 17:12:55 -07002452 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002453 }
2454
2455 /*------------------------------------------------------------------------
2456 Fill in Event data and post to the Main FSM
2457 ------------------------------------------------------------------------*/
2458 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002459 wdiEventData.pEventData = pwdiPostAssocReqParams;
2460 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2461 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002462 wdiEventData.pUserData = pUserData;
2463
2464 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2465
2466}/*WDI_PostAssocReq*/
2467
2468/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002469 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002470 association with another STA has ended and the station
2471 must be deleted from HW. Upon the call of this API the
2472 WLAN DAL will pack and send a HAL Del STA request
2473 message to the lower RIVA sub-system if DAL is in state
2474 STARTED.
2475
2476 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002477 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002478
2479 WDI_PostAssocReq must have been called.
2480
Jeff Johnsone7245742012-09-05 17:12:55 -07002481 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002482 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002483
Jeff Johnson295189b2012-06-20 16:38:30 -07002484 wdiDelSTARspCb: callback for passing back the response
2485 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002486
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002488 callback
2489
Jeff Johnson295189b2012-06-20 16:38:30 -07002490 @see WDI_PostAssocReq
2491 @return Result of the function call
2492*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002493WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002494WDI_DelSTAReq
2495(
2496 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2497 WDI_DelSTARspCb wdiDelSTARspCb,
2498 void* pUserData
2499)
2500{
2501 WDI_EventInfoType wdiEventData;
2502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2503
2504 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002505 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002506 ------------------------------------------------------------------------*/
2507 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2508 {
2509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2510 "WDI API call before module is initialized - Fail request");
2511
Jeff Johnsone7245742012-09-05 17:12:55 -07002512 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002513 }
2514
2515 /*------------------------------------------------------------------------
2516 Fill in Event data and post to the Main FSM
2517 ------------------------------------------------------------------------*/
2518 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002519 wdiEventData.pEventData = pwdiDelSTAParams;
2520 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2521 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002522 wdiEventData.pUserData = pUserData;
2523
2524 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2525
2526}/*WDI_DelSTAReq*/
2527
Jeff Johnsone7245742012-09-05 17:12:55 -07002528/*========================================================================
2529
Jeff Johnson295189b2012-06-20 16:38:30 -07002530 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002531
Jeff Johnson295189b2012-06-20 16:38:30 -07002532==========================================================================*/
2533
2534/**
2535 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2536 install a BSS encryption key on the HW. Upon the call of this
2537 API the WLAN DAL will pack and send a Set BSS Key request
2538 message to the lower RIVA sub-system if DAL is in state
2539 STARTED.
2540
2541 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002542 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002543
2544 WDI_PostAssocReq must have been called.
2545
Jeff Johnsone7245742012-09-05 17:12:55 -07002546 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002547 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002548
Jeff Johnson295189b2012-06-20 16:38:30 -07002549 wdiSetBSSKeyRspCb: callback for passing back the
2550 response of the set BSS Key operation received from the
2551 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002552
Jeff Johnson295189b2012-06-20 16:38:30 -07002553 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002554 callback
2555
Jeff Johnson295189b2012-06-20 16:38:30 -07002556 @see WDI_PostAssocReq
2557 @return Result of the function call
2558*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002559WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002560WDI_SetBSSKeyReq
2561(
2562 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2563 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2564 void* pUserData
2565)
2566{
2567 WDI_EventInfoType wdiEventData;
2568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2569
2570 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002571 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002572 ------------------------------------------------------------------------*/
2573 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2574 {
2575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2576 "WDI API call before module is initialized - Fail request");
2577
Jeff Johnsone7245742012-09-05 17:12:55 -07002578 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002579 }
2580
2581 /*------------------------------------------------------------------------
2582 Fill in Event data and post to the Main FSM
2583 ------------------------------------------------------------------------*/
2584 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002585 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2586 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2587 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002588 wdiEventData.pUserData = pUserData;
2589
2590 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2591
2592}/*WDI_SetBSSKeyReq*/
2593
2594/**
2595 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2596 uninstall a BSS key from HW. Upon the call of this API the
2597 WLAN DAL will pack and send a HAL Remove BSS Key request
2598 message to the lower RIVA sub-system if DAL is in state
2599 STARTED.
2600
2601 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002602 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002603
2604 WDI_SetBSSKeyReq must have been called.
2605
Jeff Johnsone7245742012-09-05 17:12:55 -07002606 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002607 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002608
Jeff Johnson295189b2012-06-20 16:38:30 -07002609 wdiRemoveBSSKeyRspCb: callback for passing back the
2610 response of the remove BSS key operation received from
2611 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002612
Jeff Johnson295189b2012-06-20 16:38:30 -07002613 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002614 callback
2615
Jeff Johnson295189b2012-06-20 16:38:30 -07002616 @see WDI_SetBSSKeyReq
2617 @return Result of the function call
2618*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002619WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002620WDI_RemoveBSSKeyReq
2621(
2622 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2623 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2624 void* pUserData
2625)
2626{
2627 WDI_EventInfoType wdiEventData;
2628 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2629
2630 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002631 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002632 ------------------------------------------------------------------------*/
2633 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2634 {
2635 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2636 "WDI API call before module is initialized - Fail request");
2637
Jeff Johnsone7245742012-09-05 17:12:55 -07002638 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002639 }
2640
2641 /*------------------------------------------------------------------------
2642 Fill in Event data and post to the Main FSM
2643 ------------------------------------------------------------------------*/
2644 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002645 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2646 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2647 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002648 wdiEventData.pUserData = pUserData;
2649
2650 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2651
2652}/*WDI_RemoveBSSKeyReq*/
2653
2654
2655/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002656 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002657 ready to install a STA(ast) encryption key in HW. Upon
2658 the call of this API the WLAN DAL will pack and send a
2659 HAL Set STA Key request message to the lower RIVA
2660 sub-system if DAL is in state STARTED.
2661
2662 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002663 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002664
2665 WDI_PostAssocReq must have been called.
2666
Jeff Johnsone7245742012-09-05 17:12:55 -07002667 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002668 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002669
Jeff Johnson295189b2012-06-20 16:38:30 -07002670 wdiSetSTAKeyRspCb: callback for passing back the
2671 response of the set STA key operation received from the
2672 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002673
Jeff Johnson295189b2012-06-20 16:38:30 -07002674 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002675 callback
2676
Jeff Johnson295189b2012-06-20 16:38:30 -07002677 @see WDI_PostAssocReq
2678 @return Result of the function call
2679*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002680WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002681WDI_SetSTAKeyReq
2682(
2683 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2684 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2685 void* pUserData
2686)
2687{
2688 WDI_EventInfoType wdiEventData;
2689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2690
2691 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002692 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002693 ------------------------------------------------------------------------*/
2694 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2695 {
2696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2697 "WDI API call before module is initialized - Fail request");
2698
Jeff Johnsone7245742012-09-05 17:12:55 -07002699 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002700 }
2701
2702 /*------------------------------------------------------------------------
2703 Fill in Event data and post to the Main FSM
2704 ------------------------------------------------------------------------*/
2705 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002706 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2707 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2708 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002709 wdiEventData.pUserData = pUserData;
2710
2711 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2712
2713}/*WDI_SetSTAKeyReq*/
2714
2715
2716/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002717 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002718 wants to uninstall a previously set STA key in HW. Upon
2719 the call of this API the WLAN DAL will pack and send a
2720 HAL Remove STA Key request message to the lower RIVA
2721 sub-system if DAL is in state STARTED.
2722
2723 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002724 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002725
2726 WDI_SetSTAKeyReq must have been called.
2727
Jeff Johnsone7245742012-09-05 17:12:55 -07002728 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002729 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002730
Jeff Johnson295189b2012-06-20 16:38:30 -07002731 wdiRemoveSTAKeyRspCb: callback for passing back the
2732 response of the remove STA key operation received from
2733 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002734
Jeff Johnson295189b2012-06-20 16:38:30 -07002735 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002736 callback
2737
Jeff Johnson295189b2012-06-20 16:38:30 -07002738 @see WDI_SetSTAKeyReq
2739 @return Result of the function call
2740*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002741WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002742WDI_RemoveSTAKeyReq
2743(
2744 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2745 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2746 void* pUserData
2747)
2748{
2749 WDI_EventInfoType wdiEventData;
2750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2751
2752 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002753 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002754 ------------------------------------------------------------------------*/
2755 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2756 {
2757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2758 "WDI API call before module is initialized - Fail request");
2759
Jeff Johnsone7245742012-09-05 17:12:55 -07002760 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002761 }
2762
2763 /*------------------------------------------------------------------------
2764 Fill in Event data and post to the Main FSM
2765 ------------------------------------------------------------------------*/
2766 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002767 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2768 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2769 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 wdiEventData.pUserData = pUserData;
2771
2772 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2773
2774}/*WDI_RemoveSTAKeyReq*/
2775
2776
2777/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002778 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002779 wants to install a STA Bcast encryption key on the HW.
2780 Upon the call of this API the WLAN DAL will pack and
2781 send a HAL Start request message to the lower RIVA
2782 sub-system if DAL is in state STARTED.
2783
2784 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002785 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002786
2787 WDI_PostAssocReq must have been called.
2788
Jeff Johnsone7245742012-09-05 17:12:55 -07002789 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002790 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002791
Jeff Johnson295189b2012-06-20 16:38:30 -07002792 wdiSetSTABcastKeyRspCb: callback for passing back the
2793 response of the set BSS Key operation received from the
2794 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002795
Jeff Johnson295189b2012-06-20 16:38:30 -07002796 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002797 callback
2798
Jeff Johnson295189b2012-06-20 16:38:30 -07002799 @see WDI_PostAssocReq
2800 @return Result of the function call
2801*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002802WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002803WDI_SetSTABcastKeyReq
2804(
2805 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2806 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2807 void* pUserData
2808)
2809
2810{
2811 WDI_EventInfoType wdiEventData;
2812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2813
2814 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002815 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002816 ------------------------------------------------------------------------*/
2817 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2818 {
2819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2820 "WDI API call before module is initialized - Fail request");
2821
Jeff Johnsone7245742012-09-05 17:12:55 -07002822 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002823 }
2824
2825 /*------------------------------------------------------------------------
2826 Fill in Event data and post to the Main FSM
2827 ------------------------------------------------------------------------*/
2828 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002829 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2830 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2831 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002832 wdiEventData.pUserData = pUserData;
2833
2834 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2835
2836}/*WDI_SetSTABcastKeyReq*/
2837
2838/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002839 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002840 MAC wants to uninstall a STA Bcast key from HW. Upon the
2841 call of this API the WLAN DAL will pack and send a HAL
2842 Remove STA Bcast Key request message to the lower RIVA
2843 sub-system if DAL is in state STARTED.
2844
2845 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002846 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002847
2848 WDI_SetSTABcastKeyReq must have been called.
2849
Jeff Johnsone7245742012-09-05 17:12:55 -07002850 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002851 parameters as specified by the Device
2852 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002853
Jeff Johnson295189b2012-06-20 16:38:30 -07002854 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2855 response of the remove STA Bcast key operation received
2856 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002857
Jeff Johnson295189b2012-06-20 16:38:30 -07002858 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002859 callback
2860
Jeff Johnson295189b2012-06-20 16:38:30 -07002861 @see WDI_SetSTABcastKeyReq
2862 @return Result of the function call
2863*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002864WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002865WDI_RemoveSTABcastKeyReq
2866(
2867 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2868 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2869 void* pUserData
2870)
2871{
2872 WDI_EventInfoType wdiEventData;
2873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2874
2875 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002876 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002877 ------------------------------------------------------------------------*/
2878 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2879 {
2880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2881 "WDI API call before module is initialized - Fail request");
2882
Jeff Johnsone7245742012-09-05 17:12:55 -07002883 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002884 }
2885
2886 /*------------------------------------------------------------------------
2887 Fill in Event data and post to the Main FSM
2888 ------------------------------------------------------------------------*/
2889 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002890 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2891 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2892 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002893 wdiEventData.pUserData = pUserData;
2894
2895 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2896
2897}/*WDI_RemoveSTABcastKeyReq*/
2898
2899/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002900 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002901 MAC wants to set Max Tx Power to HW. Upon the
2902 call of this API the WLAN DAL will pack and send a HAL
2903 Remove STA Bcast Key request message to the lower RIVA
2904 sub-system if DAL is in state STARTED.
2905
2906 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002907 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002908
2909 WDI_SetSTABcastKeyReq must have been called.
2910
Jeff Johnsone7245742012-09-05 17:12:55 -07002911 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002912 parameters as specified by the Device
2913 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002914
Jeff Johnson295189b2012-06-20 16:38:30 -07002915 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2916 response of the remove STA Bcast key operation received
2917 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002918
Jeff Johnson295189b2012-06-20 16:38:30 -07002919 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002920 callback
2921
Jeff Johnson295189b2012-06-20 16:38:30 -07002922 @see WDI_SetMaxTxPowerReq
2923 @return Result of the function call
2924*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002925WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002926WDI_SetMaxTxPowerReq
2927(
2928 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2929 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2930 void* pUserData
2931)
2932{
2933 WDI_EventInfoType wdiEventData;
2934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2935
2936 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002937 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002938 ------------------------------------------------------------------------*/
2939 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2940 {
2941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2942 "WDI API call before module is initialized - Fail request");
2943
Jeff Johnsone7245742012-09-05 17:12:55 -07002944 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002945 }
2946
2947 /*------------------------------------------------------------------------
2948 Fill in Event data and post to the Main FSM
2949 ------------------------------------------------------------------------*/
2950 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002951 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2952 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2953 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002954 wdiEventData.pUserData = pUserData;
2955
2956 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2957}
2958
schang86c22c42013-03-13 18:41:24 -07002959/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07002960 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
2961 MAC wants to set Max Tx Power to HW for specific band.
2962
2963 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
2964
2965 wdiReqStatusCb: callback for passing back the
2966 response msg from the device
2967
2968 pUserData: user data will be passed back with the
2969 callback
2970
2971 @see WDI_SetMaxTxPowerPerBandReq
2972 @return Result of the function call
2973*/
2974WDI_Status
2975WDI_SetMaxTxPowerPerBandReq
2976(
2977 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
2978 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
2979 void* pUserData
2980)
2981{
2982 WDI_EventInfoType wdiEventData;
2983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2984
2985 /*------------------------------------------------------------------------
2986 Sanity Check
2987 ------------------------------------------------------------------------*/
2988 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2989 {
2990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2991 "WDI API call before module is initialized - Fail request");
2992
2993 return WDI_STATUS_E_NOT_ALLOWED;
2994 }
2995
2996 /*------------------------------------------------------------------------
2997 Fill in Event data and post to the Main FSM
2998 ------------------------------------------------------------------------*/
2999 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3000 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3001 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3002 wdiEventData.pCBfnc = wdiReqStatusCb;
3003 wdiEventData.pUserData = pUserData;
3004
3005 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3006}
3007
3008/**
schang86c22c42013-03-13 18:41:24 -07003009 @brief WDI_SetTxPowerReq will be called when the upper
3010 MAC wants to set Tx Power to HW.
3011 In state BUSY this request will be queued. Request won't
3012 be allowed in any other state.
3013
3014
3015 @param pwdiSetTxPowerParams: set TS Power parameters
3016 BSSID and target TX Power with dbm included
3017
3018 wdiReqStatusCb: callback for passing back the response
3019
3020 pUserData: user data will be passed back with the
3021 callback
3022
3023 @return Result of the function call
3024*/
3025WDI_Status
3026WDI_SetTxPowerReq
3027(
3028 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3029 WDA_SetTxPowerRspCb wdiReqStatusCb,
3030 void* pUserData
3031)
3032{
3033 WDI_EventInfoType wdiEventData;
3034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3035
3036 /*------------------------------------------------------------------------
3037 Sanity Check
3038 ------------------------------------------------------------------------*/
3039 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3040 {
3041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3042 "WDI API call before module is initialized - Fail request");
3043
3044 return WDI_STATUS_E_NOT_ALLOWED;
3045 }
3046
3047 /*------------------------------------------------------------------------
3048 Fill in Event data and post to the Main FSM
3049 ------------------------------------------------------------------------*/
3050 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3051 wdiEventData.pEventData = pwdiSetTxPowerParams;
3052 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3053 wdiEventData.pCBfnc = wdiReqStatusCb;
3054 wdiEventData.pUserData = pUserData;
3055
3056 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3057}
3058
Jeff Johnson295189b2012-06-20 16:38:30 -07003059#ifdef FEATURE_WLAN_CCX
3060WDI_Status
3061WDI_TSMStatsReq
3062(
3063 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3064 WDI_TsmRspCb wdiReqStatusCb,
3065 void* pUserData
3066)
3067{
3068 WDI_EventInfoType wdiEventData;
3069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003070 /*------------------------------------------------------------------------
3071 Sanity Check
3072 ------------------------------------------------------------------------*/
3073 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3074 {
3075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3076 "WDI API call before module is initialized - Fail request");
3077
3078 return WDI_STATUS_E_NOT_ALLOWED;
3079 }
3080
3081 /*------------------------------------------------------------------------
3082 Fill in Event data and post to the Main FSM
3083 ------------------------------------------------------------------------*/
3084 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3085 wdiEventData.pEventData = pwdiTsmReqParams;
3086 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3087 wdiEventData.pCBfnc = wdiReqStatusCb;
3088 wdiEventData.pUserData = pUserData;
3089
3090 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3091
3092}
3093#endif
3094
3095/*========================================================================
3096
3097 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003098
Jeff Johnson295189b2012-06-20 16:38:30 -07003099==========================================================================*/
3100
3101/**
3102 @brief WDI_AddTSReq will be called when the upper MAC to inform
3103 the device of a successful add TSpec negotiation. HW
3104 needs to receive the TSpec Info from the UMAC in order
3105 to configure properly the QoS data traffic. Upon the
3106 call of this API the WLAN DAL will pack and send a HAL
3107 Add TS request message to the lower RIVA sub-system if
3108 DAL is in state STARTED.
3109
3110 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003111 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003112
3113 WDI_PostAssocReq must have been called.
3114
3115 @param wdiAddTsReqParams: the add TS parameters as specified by
3116 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003117
Jeff Johnson295189b2012-06-20 16:38:30 -07003118 wdiAddTsRspCb: callback for passing back the response of
3119 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003120
Jeff Johnson295189b2012-06-20 16:38:30 -07003121 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003122 callback
3123
Jeff Johnson295189b2012-06-20 16:38:30 -07003124 @see WDI_PostAssocReq
3125 @return Result of the function call
3126*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003127WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003128WDI_AddTSReq
3129(
3130 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3131 WDI_AddTsRspCb wdiAddTsRspCb,
3132 void* pUserData
3133)
3134{
3135 WDI_EventInfoType wdiEventData;
3136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3137
3138 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003139 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003140 ------------------------------------------------------------------------*/
3141 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3142 {
3143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3144 "WDI API call before module is initialized - Fail request");
3145
Jeff Johnsone7245742012-09-05 17:12:55 -07003146 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003147 }
3148
3149 /*------------------------------------------------------------------------
3150 Fill in Event data and post to the Main FSM
3151 ------------------------------------------------------------------------*/
3152 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003153 wdiEventData.pEventData = pwdiAddTsReqParams;
3154 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3155 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003156 wdiEventData.pUserData = pUserData;
3157
3158 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3159
3160}/*WDI_AddTSReq*/
3161
3162
3163
3164/**
3165 @brief WDI_DelTSReq will be called when the upper MAC has ended
3166 admission on a specific AC. This is to inform HW that
3167 QoS traffic parameters must be rest. Upon the call of
3168 this API the WLAN DAL will pack and send a HAL Del TS
3169 request message to the lower RIVA sub-system if DAL is
3170 in state STARTED.
3171
3172 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003173 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003174
3175 WDI_AddTSReq must have been called.
3176
3177 @param wdiDelTsReqParams: the del TS parameters as specified by
3178 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003179
Jeff Johnson295189b2012-06-20 16:38:30 -07003180 wdiDelTsRspCb: callback for passing back the response of
3181 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003182
Jeff Johnson295189b2012-06-20 16:38:30 -07003183 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003184 callback
3185
Jeff Johnson295189b2012-06-20 16:38:30 -07003186 @see WDI_AddTSReq
3187 @return Result of the function call
3188*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003189WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003190WDI_DelTSReq
3191(
3192 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3193 WDI_DelTsRspCb wdiDelTsRspCb,
3194 void* pUserData
3195)
3196{
3197 WDI_EventInfoType wdiEventData;
3198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3199
3200 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003201 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 ------------------------------------------------------------------------*/
3203 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3204 {
3205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3206 "WDI API call before module is initialized - Fail request");
3207
Jeff Johnsone7245742012-09-05 17:12:55 -07003208 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003209 }
3210
3211 /*------------------------------------------------------------------------
3212 Fill in Event data and post to the Main FSM
3213 ------------------------------------------------------------------------*/
3214 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003215 wdiEventData.pEventData = pwdiDelTsReqParams;
3216 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3217 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003218 wdiEventData.pUserData = pUserData;
3219
3220 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3221
3222}/*WDI_DelTSReq*/
3223
3224
3225
3226/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003227 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003228 wishes to update the EDCA parameters used by HW for QoS
3229 data traffic. Upon the call of this API the WLAN DAL
3230 will pack and send a HAL Update EDCA Params request
3231 message to the lower RIVA sub-system if DAL is in state
3232 STARTED.
3233
3234 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003235 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003236
3237 WDI_PostAssocReq must have been called.
3238
Jeff Johnsone7245742012-09-05 17:12:55 -07003239 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003240 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003241
Jeff Johnson295189b2012-06-20 16:38:30 -07003242 wdiUpdateEDCAParamsRspCb: callback for passing back the
3243 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003244
Jeff Johnson295189b2012-06-20 16:38:30 -07003245 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003246 callback
3247
Jeff Johnson295189b2012-06-20 16:38:30 -07003248 @see WDI_PostAssocReq
3249 @return Result of the function call
3250*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003251WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003252WDI_UpdateEDCAParams
3253(
3254 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3255 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3256 void* pUserData
3257)
3258{
3259 WDI_EventInfoType wdiEventData;
3260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3261
3262 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003263 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003264 ------------------------------------------------------------------------*/
3265 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3266 {
3267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3268 "WDI API call before module is initialized - Fail request");
3269
Jeff Johnsone7245742012-09-05 17:12:55 -07003270 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003271 }
3272
3273 /*------------------------------------------------------------------------
3274 Fill in Event data and post to the Main FSM
3275 ------------------------------------------------------------------------*/
3276 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003277 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3278 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3279 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003280 wdiEventData.pUserData = pUserData;
3281
3282 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3283
3284}/*WDI_UpdateEDCAParams*/
3285
3286
3287/**
3288 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3289 successfully a BA session and needs to notify the HW for
3290 the appropriate settings to take place. Upon the call of
3291 this API the WLAN DAL will pack and send a HAL Add BA
3292 request message to the lower RIVA sub-system if DAL is
3293 in state STARTED.
3294
3295 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003296 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003297
3298 WDI_PostAssocReq must have been called.
3299
3300 @param wdiAddBAReqParams: the add BA parameters as specified by
3301 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003302
Jeff Johnson295189b2012-06-20 16:38:30 -07003303 wdiAddBARspCb: callback for passing back the response of
3304 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003305
Jeff Johnson295189b2012-06-20 16:38:30 -07003306 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003307 callback
3308
Jeff Johnson295189b2012-06-20 16:38:30 -07003309 @see WDI_PostAssocReq
3310 @return Result of the function call
3311*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003312WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003313WDI_AddBASessionReq
3314(
3315 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3316 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3317 void* pUserData
3318)
3319{
3320 WDI_EventInfoType wdiEventData;
3321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3322
3323 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003324 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003325 ------------------------------------------------------------------------*/
3326 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3327 {
3328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3329 "WDI API call before module is initialized - Fail request");
3330
Jeff Johnsone7245742012-09-05 17:12:55 -07003331 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003332 }
3333
3334 /*------------------------------------------------------------------------
3335 Fill in Event data and post to the Main FSM
3336 ------------------------------------------------------------------------*/
3337 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003338 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3339 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3340 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003341 wdiEventData.pUserData = pUserData;
3342
3343 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3344
3345}/*WDI_AddBASessionReq*/
3346
3347/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003348 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003349 inform HW that it has deleted a previously created BA
3350 session. Upon the call of this API the WLAN DAL will
3351 pack and send a HAL Del BA request message to the lower
3352 RIVA sub-system if DAL is in state STARTED.
3353
3354 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003355 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003356
3357 WDI_AddBAReq must have been called.
3358
3359 @param wdiDelBAReqParams: the del BA parameters as specified by
3360 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003361
Jeff Johnson295189b2012-06-20 16:38:30 -07003362 wdiDelBARspCb: callback for passing back the response of
3363 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003364
Jeff Johnson295189b2012-06-20 16:38:30 -07003365 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003366 callback
3367
Jeff Johnson295189b2012-06-20 16:38:30 -07003368 @see WDI_AddBAReq
3369 @return Result of the function call
3370*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003371WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003372WDI_DelBAReq
3373(
3374 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3375 WDI_DelBARspCb wdiDelBARspCb,
3376 void* pUserData
3377)
3378{
3379 WDI_EventInfoType wdiEventData;
3380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3381
3382 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003383 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003384 ------------------------------------------------------------------------*/
3385 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3386 {
3387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3388 "WDI API call before module is initialized - Fail request");
3389
Jeff Johnsone7245742012-09-05 17:12:55 -07003390 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003391 }
3392
3393 /*------------------------------------------------------------------------
3394 Fill in Event data and post to the Main FSM
3395 ------------------------------------------------------------------------*/
3396 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003397 wdiEventData.pEventData = pwdiDelBAReqParams;
3398 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3399 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003400 wdiEventData.pUserData = pUserData;
3401
3402 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3403
3404}/*WDI_DelBAReq*/
3405
Jeff Johnsone7245742012-09-05 17:12:55 -07003406/*========================================================================
3407
Jeff Johnson295189b2012-06-20 16:38:30 -07003408 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003409
Jeff Johnson295189b2012-06-20 16:38:30 -07003410==========================================================================*/
3411
3412/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003413 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003414 wants to set the power save related configurations of
3415 the WLAN Device. Upon the call of this API the WLAN DAL
3416 will pack and send a HAL Update CFG request message to
3417 the lower RIVA sub-system if DAL is in state STARTED.
3418
3419 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003420 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003421
3422 WDI_Start must have been called.
3423
Jeff Johnsone7245742012-09-05 17:12:55 -07003424 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003425 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003426
Jeff Johnson295189b2012-06-20 16:38:30 -07003427 wdiSetPwrSaveCfgCb: callback for passing back the
3428 response of the set power save cfg operation received
3429 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003430
Jeff Johnson295189b2012-06-20 16:38:30 -07003431 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003432 callback
3433
Jeff Johnson295189b2012-06-20 16:38:30 -07003434 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003435 @return Result of the function call
3436*/
3437WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003438WDI_SetPwrSaveCfgReq
3439(
3440 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3441 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3442 void* pUserData
3443)
3444{
3445 WDI_EventInfoType wdiEventData;
3446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3447
3448 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003449 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003450 ------------------------------------------------------------------------*/
3451 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3452 {
3453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3454 "WDI API call before module is initialized - Fail request");
3455
Jeff Johnsone7245742012-09-05 17:12:55 -07003456 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003457 }
3458
3459 /*------------------------------------------------------------------------
3460 Fill in Event data and post to the Main FSM
3461 ------------------------------------------------------------------------*/
3462 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003463 wdiEventData.pEventData = pwdiPowerSaveCfg;
3464 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3465 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003466 wdiEventData.pUserData = pUserData;
3467
3468 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3469
3470}/*WDI_SetPwrSaveCfgReq*/
3471
3472/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003473 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003474 request the device to get into IMPS power state. Upon
3475 the call of this API the WLAN DAL will send a HAL Enter
3476 IMPS request message to the lower RIVA sub-system if DAL
3477 is in state STARTED.
3478
3479 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003480 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003481
Jeff Johnsone7245742012-09-05 17:12:55 -07003482
3483 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003484 response of the Enter IMPS operation received from the
3485 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003486
Jeff Johnson295189b2012-06-20 16:38:30 -07003487 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003488 callback
3489
Jeff Johnson295189b2012-06-20 16:38:30 -07003490 @see WDI_Start
3491 @return Result of the function call
3492*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003493WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003494WDI_EnterImpsReq
3495(
3496 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3497 void* pUserData
3498)
3499{
3500 WDI_EventInfoType wdiEventData;
3501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3502
3503 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003504 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003505 ------------------------------------------------------------------------*/
3506 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3507 {
3508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3509 "WDI API call before module is initialized - Fail request");
3510
Jeff Johnsone7245742012-09-05 17:12:55 -07003511 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003512 }
3513
3514 /*------------------------------------------------------------------------
3515 Fill in Event data and post to the Main FSM
3516 ------------------------------------------------------------------------*/
3517 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003518 wdiEventData.pEventData = NULL;
3519 wdiEventData.uEventDataSize = 0;
3520 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003521 wdiEventData.pUserData = pUserData;
3522
3523 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3524
3525}/*WDI_EnterImpsReq*/
3526
3527/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003528 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003529 request the device to get out of IMPS power state. Upon
3530 the call of this API the WLAN DAL will send a HAL Exit
3531 IMPS request message to the lower RIVA sub-system if DAL
3532 is in state STARTED.
3533
3534 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003535 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003536
Jeff Johnson295189b2012-06-20 16:38:30 -07003537
Jeff Johnsone7245742012-09-05 17:12:55 -07003538
3539 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003540 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003541
Jeff Johnson295189b2012-06-20 16:38:30 -07003542 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003543 callback
3544
Jeff Johnson295189b2012-06-20 16:38:30 -07003545 @see WDI_Start
3546 @return Result of the function call
3547*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003548WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003549WDI_ExitImpsReq
3550(
3551 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3552 void* pUserData
3553)
3554{
3555 WDI_EventInfoType wdiEventData;
3556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3557
3558 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003559 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003560 ------------------------------------------------------------------------*/
3561 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3562 {
3563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3564 "WDI API call before module is initialized - Fail request");
3565
Jeff Johnsone7245742012-09-05 17:12:55 -07003566 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003567 }
3568
3569 /*------------------------------------------------------------------------
3570 Fill in Event data and post to the Main FSM
3571 ------------------------------------------------------------------------*/
3572 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003573 wdiEventData.pEventData = NULL;
3574 wdiEventData.uEventDataSize = 0;
3575 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003576 wdiEventData.pUserData = pUserData;
3577
3578 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3579
3580}/*WDI_ExitImpsReq*/
3581
3582/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003583 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003584 request the device to get into BMPS power state. Upon
3585 the call of this API the WLAN DAL will pack and send a
3586 HAL Enter BMPS request message to the lower RIVA
3587 sub-system if DAL is in state STARTED.
3588
3589 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003590 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003591
3592 WDI_PostAssocReq must have been called.
3593
Jeff Johnsone7245742012-09-05 17:12:55 -07003594 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003595 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003596
Jeff Johnson295189b2012-06-20 16:38:30 -07003597 wdiEnterBmpsRspCb: callback for passing back the
3598 response of the Enter BMPS operation received from the
3599 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003600
Jeff Johnson295189b2012-06-20 16:38:30 -07003601 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003602 callback
3603
Jeff Johnson295189b2012-06-20 16:38:30 -07003604 @see WDI_PostAssocReq
3605 @return Result of the function call
3606*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003607WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003608WDI_EnterBmpsReq
3609(
3610 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3611 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3612 void* pUserData
3613)
3614{
3615 WDI_EventInfoType wdiEventData;
3616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3617
3618 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003619 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003620 ------------------------------------------------------------------------*/
3621 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3622 {
3623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3624 "WDI API call before module is initialized - Fail request");
3625
Jeff Johnsone7245742012-09-05 17:12:55 -07003626 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003627 }
3628
3629 /*------------------------------------------------------------------------
3630 Fill in Event data and post to the Main FSM
3631 ------------------------------------------------------------------------*/
3632 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003633 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3634 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3635 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003636 wdiEventData.pUserData = pUserData;
3637
3638 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3639
3640}/*WDI_EnterBmpsReq*/
3641
3642/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003643 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003644 request the device to get out of BMPS power state. Upon
3645 the call of this API the WLAN DAL will pack and send a
3646 HAL Exit BMPS request message to the lower RIVA
3647 sub-system if DAL is in state STARTED.
3648
3649 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003650 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003651
3652 WDI_PostAssocReq must have been called.
3653
Jeff Johnsone7245742012-09-05 17:12:55 -07003654 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003655 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003656
Jeff Johnson295189b2012-06-20 16:38:30 -07003657 wdiExitBmpsRspCb: callback for passing back the response
3658 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003659
Jeff Johnson295189b2012-06-20 16:38:30 -07003660 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003661 callback
3662
Jeff Johnson295189b2012-06-20 16:38:30 -07003663 @see WDI_PostAssocReq
3664 @return Result of the function call
3665*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003666WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003667WDI_ExitBmpsReq
3668(
3669 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3670 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3671 void* pUserData
3672)
3673{
3674 WDI_EventInfoType wdiEventData;
3675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3676
3677 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003678 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003679 ------------------------------------------------------------------------*/
3680 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3681 {
3682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3683 "WDI API call before module is initialized - Fail request");
3684
Jeff Johnsone7245742012-09-05 17:12:55 -07003685 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003686 }
3687
3688 /*------------------------------------------------------------------------
3689 Fill in Event data and post to the Main FSM
3690 ------------------------------------------------------------------------*/
3691 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003692 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3693 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3694 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003695 wdiEventData.pUserData = pUserData;
3696
3697 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3698
3699}/*WDI_ExitBmpsReq*/
3700
3701/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003702 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003703 request the device to get into UAPSD power state. Upon
3704 the call of this API the WLAN DAL will pack and send a
3705 HAL Enter UAPSD request message to the lower RIVA
3706 sub-system if DAL is in state STARTED.
3707
3708 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003709 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003710
3711 WDI_PostAssocReq must have been called.
3712 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003713
3714 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003715 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003716
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 wdiEnterUapsdRspCb: callback for passing back the
3718 response of the Enter UAPSD operation received from the
3719 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003720
Jeff Johnson295189b2012-06-20 16:38:30 -07003721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003722 callback
3723
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3725 @return Result of the function call
3726*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003727WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003728WDI_EnterUapsdReq
3729(
3730 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3731 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3732 void* pUserData
3733)
3734{
3735 WDI_EventInfoType wdiEventData;
3736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3737
3738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003740 ------------------------------------------------------------------------*/
3741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3742 {
3743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3744 "WDI API call before module is initialized - Fail request");
3745
Jeff Johnsone7245742012-09-05 17:12:55 -07003746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003747 }
3748
3749 /*------------------------------------------------------------------------
3750 Fill in Event data and post to the Main FSM
3751 ------------------------------------------------------------------------*/
3752 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003753 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3754 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3755 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003756 wdiEventData.pUserData = pUserData;
3757
3758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3759
3760}/*WDI_EnterUapsdReq*/
3761
3762/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003763 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003764 request the device to get out of UAPSD power state. Upon
3765 the call of this API the WLAN DAL will send a HAL Exit
3766 UAPSD request message to the lower RIVA sub-system if
3767 DAL is in state STARTED.
3768
3769 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003770 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003771
3772 WDI_PostAssocReq must have been called.
3773
Jeff Johnsone7245742012-09-05 17:12:55 -07003774 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003775 response of the Exit UAPSD operation received from the
3776 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003777
Jeff Johnson295189b2012-06-20 16:38:30 -07003778 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003779 callback
3780
Jeff Johnson295189b2012-06-20 16:38:30 -07003781 @see WDI_PostAssocReq
3782 @return Result of the function call
3783*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003784WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003785WDI_ExitUapsdReq
3786(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003787 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003788 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3789 void* pUserData
3790)
3791{
3792 WDI_EventInfoType wdiEventData;
3793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3794
3795 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003796 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003797 ------------------------------------------------------------------------*/
3798 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3799 {
3800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3801 "WDI API call before module is initialized - Fail request");
3802
Jeff Johnsone7245742012-09-05 17:12:55 -07003803 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003804 }
3805
3806 /*------------------------------------------------------------------------
3807 Fill in Event data and post to the Main FSM
3808 ------------------------------------------------------------------------*/
3809 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003810 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3811 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003812 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003813 wdiEventData.pUserData = pUserData;
3814
3815 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3816
3817}/*WDI_ExitUapsdReq*/
3818
3819/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003820 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003821 MAC wants to set the UAPSD related configurations
3822 of an associated STA (while acting as an AP) to the WLAN
3823 Device. Upon the call of this API the WLAN DAL will pack
3824 and send a HAL Update UAPSD params request message to
3825 the lower RIVA sub-system if DAL is in state STARTED.
3826
3827 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003828 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003829
3830 WDI_ConfigBSSReq must have been called.
3831
Jeff Johnsone7245742012-09-05 17:12:55 -07003832 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003834
Jeff Johnson295189b2012-06-20 16:38:30 -07003835 wdiUpdateUapsdParamsCb: callback for passing back the
3836 response of the update UAPSD params operation received
3837 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003838
Jeff Johnson295189b2012-06-20 16:38:30 -07003839 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003840 callback
3841
Jeff Johnson295189b2012-06-20 16:38:30 -07003842 @see WDI_ConfigBSSReq
3843 @return Result of the function call
3844*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003845WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003846WDI_UpdateUapsdParamsReq
3847(
3848 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3849 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3850 void* pUserData
3851)
3852{
3853 WDI_EventInfoType wdiEventData;
3854 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3855
3856 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003857 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003858 ------------------------------------------------------------------------*/
3859 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3860 {
3861 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3862 "WDI API call before module is initialized - Fail request");
3863
Jeff Johnsone7245742012-09-05 17:12:55 -07003864 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003865 }
3866
3867 /*------------------------------------------------------------------------
3868 Fill in Event data and post to the Main FSM
3869 ------------------------------------------------------------------------*/
3870 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003871 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003872 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003873 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003874 wdiEventData.pUserData = pUserData;
3875
3876 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3877
3878}/*WDI_UpdateUapsdParamsReq*/
3879
3880/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003881 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003882 MAC wants to set the UAPSD related configurations before
3883 requesting for enter UAPSD power state to the WLAN
3884 Device. Upon the call of this API the WLAN DAL will pack
3885 and send a HAL Set UAPSD params request message to
3886 the lower RIVA sub-system if DAL is in state STARTED.
3887
3888 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003889 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003890
3891 WDI_PostAssocReq must have been called.
3892
3893 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3894 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003895
Jeff Johnson295189b2012-06-20 16:38:30 -07003896 wdiSetUapsdAcParamsCb: callback for passing back the
3897 response of the set UAPSD params operation received from
3898 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003899
Jeff Johnson295189b2012-06-20 16:38:30 -07003900 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003901 callback
3902
Jeff Johnson295189b2012-06-20 16:38:30 -07003903 @see WDI_PostAssocReq
3904 @return Result of the function call
3905*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003906WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003907WDI_SetUapsdAcParamsReq
3908(
3909 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3910 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3911 void* pUserData
3912)
3913{
3914 WDI_EventInfoType wdiEventData;
3915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3916
3917 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003918 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003919 ------------------------------------------------------------------------*/
3920 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3921 {
3922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3923 "WDI API call before module is initialized - Fail request");
3924
Jeff Johnsone7245742012-09-05 17:12:55 -07003925 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003926 }
3927
3928 /*------------------------------------------------------------------------
3929 Fill in Event data and post to the Main FSM
3930 ------------------------------------------------------------------------*/
3931 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003932 wdiEventData.pEventData = pwdiUapsdInfo;
3933 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3934 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003935 wdiEventData.pUserData = pUserData;
3936
3937 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3938
3939}/*WDI_SetUapsdAcParamsReq*/
3940
3941/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003942 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003943 MAC wants to set/reset the RXP filters for received pkts
3944 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3945 and send a HAL configure RXP filter request message to
3946 the lower RIVA sub-system.
3947
3948 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003949 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003950
Jeff Johnsone7245742012-09-05 17:12:55 -07003951
3952 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 filter as specified by the Device
3954 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003955
Jeff Johnson295189b2012-06-20 16:38:30 -07003956 wdiConfigureRxpFilterCb: callback for passing back the
3957 response of the configure RXP filter operation received
3958 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003959
Jeff Johnson295189b2012-06-20 16:38:30 -07003960 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003961 callback
3962
Jeff Johnson295189b2012-06-20 16:38:30 -07003963 @return Result of the function call
3964*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003965WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003966WDI_ConfigureRxpFilterReq
3967(
3968 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3969 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3970 void* pUserData
3971)
3972{
3973 WDI_EventInfoType wdiEventData;
3974 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3975
3976 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003977 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003978 ------------------------------------------------------------------------*/
3979 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3980 {
3981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3982 "WDI API call before module is initialized - Fail request");
3983
Jeff Johnsone7245742012-09-05 17:12:55 -07003984 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003985 }
3986
3987 /*------------------------------------------------------------------------
3988 Fill in Event data and post to the Main FSM
3989 ------------------------------------------------------------------------*/
3990 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003991 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3992 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3993 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003994 wdiEventData.pUserData = pUserData;
3995
3996 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3997}/*WDI_ConfigureRxpFilterReq*/
3998
3999/**
4000 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4001 wants to set the beacon filters while in power save.
4002 Upon the call of this API the WLAN DAL will pack and
4003 send a Beacon filter request message to the
4004 lower RIVA sub-system.
4005
4006 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004007 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004008
Jeff Johnsone7245742012-09-05 17:12:55 -07004009
4010 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004011 filter as specified by the Device
4012 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004013
Jeff Johnson295189b2012-06-20 16:38:30 -07004014 wdiBeaconFilterCb: callback for passing back the
4015 response of the set beacon filter operation received
4016 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004017
Jeff Johnson295189b2012-06-20 16:38:30 -07004018 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004019 callback
4020
Jeff Johnson295189b2012-06-20 16:38:30 -07004021 @return Result of the function call
4022*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004023WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004024WDI_SetBeaconFilterReq
4025(
4026 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4027 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4028 void* pUserData
4029)
4030{
4031 WDI_EventInfoType wdiEventData;
4032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4033
4034 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004035 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004036 ------------------------------------------------------------------------*/
4037 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4038 {
4039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4040 "WDI API call before module is initialized - Fail request");
4041
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004043 }
4044
4045 /*------------------------------------------------------------------------
4046 Fill in Event data and post to the Main FSM
4047 ------------------------------------------------------------------------*/
4048 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004049 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004050 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004051 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004052 wdiEventData.pUserData = pUserData;
4053
4054 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4055}/*WDI_SetBeaconFilterReq*/
4056
4057/**
4058 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4059 wants to remove the beacon filter for particular IE
4060 while in power save. Upon the call of this API the WLAN
4061 DAL will pack and send a remove Beacon filter request
4062 message to the lower RIVA sub-system.
4063
4064 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004065 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004066
Jeff Johnsone7245742012-09-05 17:12:55 -07004067
4068 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004069 filter as specified by the Device
4070 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004071
Jeff Johnson295189b2012-06-20 16:38:30 -07004072 wdiBeaconFilterCb: callback for passing back the
4073 response of the remove beacon filter operation received
4074 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004075
Jeff Johnson295189b2012-06-20 16:38:30 -07004076 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004077 callback
4078
Jeff Johnson295189b2012-06-20 16:38:30 -07004079 @return Result of the function call
4080*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004081WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004082WDI_RemBeaconFilterReq
4083(
4084 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4085 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4086 void* pUserData
4087)
4088{
4089 WDI_EventInfoType wdiEventData;
4090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4091
4092 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004093 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004094 ------------------------------------------------------------------------*/
4095 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4096 {
4097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4098 "WDI API call before module is initialized - Fail request");
4099
Jeff Johnsone7245742012-09-05 17:12:55 -07004100 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004101 }
4102
4103 /*------------------------------------------------------------------------
4104 Fill in Event data and post to the Main FSM
4105 ------------------------------------------------------------------------*/
4106 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004107 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004108 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004109 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004110 wdiEventData.pUserData = pUserData;
4111
4112 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4113}/*WDI_RemBeaconFilterReq*/
4114
4115/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004116 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004117 MAC wants to set the RSSI thresholds related
4118 configurations while in power save. Upon the call of
4119 this API the WLAN DAL will pack and send a HAL Set RSSI
4120 thresholds request message to the lower RIVA
4121 sub-system if DAL is in state STARTED.
4122
4123 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004124 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004125
4126 WDI_PostAssocReq must have been called.
4127
4128 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4129 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004130
Jeff Johnson295189b2012-06-20 16:38:30 -07004131 wdiSetUapsdAcParamsCb: callback for passing back the
4132 response of the set UAPSD params operation received from
4133 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004134
Jeff Johnson295189b2012-06-20 16:38:30 -07004135 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004136 callback
4137
Jeff Johnson295189b2012-06-20 16:38:30 -07004138 @see WDI_PostAssocReq
4139 @return Result of the function call
4140*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004141WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004142WDI_SetRSSIThresholdsReq
4143(
4144 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4145 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4146 void* pUserData
4147)
4148{
4149 WDI_EventInfoType wdiEventData;
4150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4151
4152 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004153 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004154 ------------------------------------------------------------------------*/
4155 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4156 {
4157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4158 "WDI API call before module is initialized - Fail request");
4159
Jeff Johnsone7245742012-09-05 17:12:55 -07004160 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004161 }
4162
4163 /*------------------------------------------------------------------------
4164 Fill in Event data and post to the Main FSM
4165 ------------------------------------------------------------------------*/
4166 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004167 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004168 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004169 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004170 wdiEventData.pUserData = pUserData;
4171
4172 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4173}/* WDI_SetRSSIThresholdsReq*/
4174
4175/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004176 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004177 wants to set the filter to minimize unnecessary host
4178 wakeup due to broadcast traffic while in power save.
4179 Upon the call of this API the WLAN DAL will pack and
4180 send a HAL host offload request message to the
4181 lower RIVA sub-system if DAL is in state STARTED.
4182
4183 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004184 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004185
4186 WDI_PostAssocReq must have been called.
4187
Jeff Johnsone7245742012-09-05 17:12:55 -07004188 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004189 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004190
Jeff Johnson295189b2012-06-20 16:38:30 -07004191 wdiHostOffloadCb: callback for passing back the response
4192 of the host offload operation received from the
4193 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004194
Jeff Johnson295189b2012-06-20 16:38:30 -07004195 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004196 callback
4197
Jeff Johnson295189b2012-06-20 16:38:30 -07004198 @see WDI_PostAssocReq
4199 @return Result of the function call
4200*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004201WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004202WDI_HostOffloadReq
4203(
4204 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4205 WDI_HostOffloadCb wdiHostOffloadCb,
4206 void* pUserData
4207)
4208{
4209 WDI_EventInfoType wdiEventData;
4210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4211
4212 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004213 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004214 ------------------------------------------------------------------------*/
4215 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4216 {
4217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4218 "WDI API call before module is initialized - Fail request");
4219
Jeff Johnsone7245742012-09-05 17:12:55 -07004220 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004221 }
4222
4223 /*------------------------------------------------------------------------
4224 Fill in Event data and post to the Main FSM
4225 ------------------------------------------------------------------------*/
4226 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004227 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004228 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004229 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004230 wdiEventData.pUserData = pUserData;
4231
4232 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4233}/*WDI_HostOffloadReq*/
4234
4235/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004236 @brief WDI_KeepAliveReq will be called when the upper MAC
4237 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004238 and minimize unnecessary host wakeups due to while in power save.
4239 Upon the call of this API the WLAN DAL will pack and
4240 send a HAL Keep Alive request message to the
4241 lower RIVA sub-system if DAL is in state STARTED.
4242
4243 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004244 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004245
4246 WDI_PostAssocReq must have been called.
4247
Jeff Johnsone7245742012-09-05 17:12:55 -07004248 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004249 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004250
Jeff Johnson295189b2012-06-20 16:38:30 -07004251 wdiKeepAliveCb: callback for passing back the response
4252 of the Keep Alive operation received from the
4253 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004254
Jeff Johnson295189b2012-06-20 16:38:30 -07004255 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004256 callback
4257
Jeff Johnson295189b2012-06-20 16:38:30 -07004258 @see WDI_PostAssocReq
4259 @return Result of the function call
4260*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004261WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004262WDI_KeepAliveReq
4263(
4264 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4265 WDI_KeepAliveCb wdiKeepAliveCb,
4266 void* pUserData
4267)
4268{
4269 WDI_EventInfoType wdiEventData;
4270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4271
4272 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004273 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004274 ------------------------------------------------------------------------*/
4275 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4276 {
4277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4278 "WDI_KeepAliveReq: WDI API call before module "
4279 "is initialized - Fail request");
4280
Jeff Johnsone7245742012-09-05 17:12:55 -07004281 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004282 }
4283
4284 /*------------------------------------------------------------------------
4285 Fill in Event data and post to the Main FSM
4286 ------------------------------------------------------------------------*/
4287 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004288 wdiEventData.pEventData = pwdiKeepAliveParams;
4289 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4290 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004291 wdiEventData.pUserData = pUserData;
4292
4293 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4294}/*WDI_KeepAliveReq*/
4295
4296/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004297 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004298 wants to set the Wowl Bcast ptrn to minimize unnecessary
4299 host wakeup due to broadcast traffic while in power
4300 save. Upon the call of this API the WLAN DAL will pack
4301 and send a HAL Wowl Bcast ptrn request message to the
4302 lower RIVA sub-system if DAL is in state STARTED.
4303
4304 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004305 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004306
4307 WDI_PostAssocReq must have been called.
4308
Jeff Johnsone7245742012-09-05 17:12:55 -07004309 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004310 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004311
Jeff Johnson295189b2012-06-20 16:38:30 -07004312 wdiWowlAddBcPtrnCb: callback for passing back the
4313 response of the add Wowl bcast ptrn operation received
4314 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004315
Jeff Johnson295189b2012-06-20 16:38:30 -07004316 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004317 callback
4318
Jeff Johnson295189b2012-06-20 16:38:30 -07004319 @see WDI_PostAssocReq
4320 @return Result of the function call
4321*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004322WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004323WDI_WowlAddBcPtrnReq
4324(
4325 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4326 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4327 void* pUserData
4328)
4329{
4330 WDI_EventInfoType wdiEventData;
4331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4332
4333 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004334 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004335 ------------------------------------------------------------------------*/
4336 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4337 {
4338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4339 "WDI API call before module is initialized - Fail request");
4340
Jeff Johnsone7245742012-09-05 17:12:55 -07004341 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004342 }
4343
4344 /*------------------------------------------------------------------------
4345 Fill in Event data and post to the Main FSM
4346 ------------------------------------------------------------------------*/
4347 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004348 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004349 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004350 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004351 wdiEventData.pUserData = pUserData;
4352
4353 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4354}/*WDI_WowlAddBcPtrnReq*/
4355
4356/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004357 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004358 wants to clear the Wowl Bcast ptrn. Upon the call of
4359 this API the WLAN DAL will pack and send a HAL delete
4360 Wowl Bcast ptrn request message to the lower RIVA
4361 sub-system if DAL is in state STARTED.
4362
4363 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004364 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004365
4366 WDI_WowlAddBcPtrnReq must have been called.
4367
Jeff Johnsone7245742012-09-05 17:12:55 -07004368 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004369 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004370
Jeff Johnson295189b2012-06-20 16:38:30 -07004371 wdiWowlDelBcPtrnCb: callback for passing back the
4372 response of the del Wowl bcast ptrn operation received
4373 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004374
Jeff Johnson295189b2012-06-20 16:38:30 -07004375 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004376 callback
4377
Jeff Johnson295189b2012-06-20 16:38:30 -07004378 @see WDI_WowlAddBcPtrnReq
4379 @return Result of the function call
4380*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004381WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004382WDI_WowlDelBcPtrnReq
4383(
4384 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4385 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4386 void* pUserData
4387)
4388{
4389 WDI_EventInfoType wdiEventData;
4390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4391
4392 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004393 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004394 ------------------------------------------------------------------------*/
4395 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4396 {
4397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4398 "WDI API call before module is initialized - Fail request");
4399
Jeff Johnsone7245742012-09-05 17:12:55 -07004400 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004401 }
4402
4403 /*------------------------------------------------------------------------
4404 Fill in Event data and post to the Main FSM
4405 ------------------------------------------------------------------------*/
4406 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004407 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004408 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004409 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004410 wdiEventData.pUserData = pUserData;
4411
4412 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4413}/*WDI_WowlDelBcPtrnReq*/
4414
4415/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004416 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004417 wants to enter the Wowl state to minimize unnecessary
4418 host wakeup while in power save. Upon the call of this
4419 API the WLAN DAL will pack and send a HAL Wowl enter
4420 request message to the lower RIVA sub-system if DAL is
4421 in state STARTED.
4422
4423 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004424 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004425
4426 WDI_PostAssocReq must have been called.
4427
Jeff Johnsone7245742012-09-05 17:12:55 -07004428 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004429 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004430
Jeff Johnson295189b2012-06-20 16:38:30 -07004431 wdiWowlEnterReqCb: callback for passing back the
4432 response of the enter Wowl operation received from the
4433 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004434
Jeff Johnson295189b2012-06-20 16:38:30 -07004435 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004436 callback
4437
Jeff Johnson295189b2012-06-20 16:38:30 -07004438 @see WDI_PostAssocReq
4439 @return Result of the function call
4440*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004441WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004442WDI_WowlEnterReq
4443(
4444 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4445 WDI_WowlEnterReqCb wdiWowlEnterCb,
4446 void* pUserData
4447)
4448{
4449 WDI_EventInfoType wdiEventData;
4450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4451
4452 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004453 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004454 ------------------------------------------------------------------------*/
4455 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4456 {
4457 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4458 "WDI API call before module is initialized - Fail request");
4459
Jeff Johnsone7245742012-09-05 17:12:55 -07004460 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004461 }
4462
4463 /*------------------------------------------------------------------------
4464 Fill in Event data and post to the Main FSM
4465 ------------------------------------------------------------------------*/
4466 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004467 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004468 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004469 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004470 wdiEventData.pUserData = pUserData;
4471
4472 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4473}/*WDI_WowlEnterReq*/
4474
4475/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004476 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004477 wants to exit the Wowl state. Upon the call of this API
4478 the WLAN DAL will pack and send a HAL Wowl exit request
4479 message to the lower RIVA sub-system if DAL is in state
4480 STARTED.
4481
4482 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004483 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004484
4485 WDI_WowlEnterReq must have been called.
4486
Jeff Johnsone7245742012-09-05 17:12:55 -07004487 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004488 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004489
Jeff Johnson295189b2012-06-20 16:38:30 -07004490 wdiWowlExitReqCb: callback for passing back the response
4491 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004492
Jeff Johnson295189b2012-06-20 16:38:30 -07004493 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004494 callback
4495
Jeff Johnson295189b2012-06-20 16:38:30 -07004496 @see WDI_WowlEnterReq
4497 @return Result of the function call
4498*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004499WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004500WDI_WowlExitReq
4501(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004502 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004503 WDI_WowlExitReqCb wdiWowlExitCb,
4504 void* pUserData
4505)
4506{
4507 WDI_EventInfoType wdiEventData;
4508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4509
4510 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004511 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004512 ------------------------------------------------------------------------*/
4513 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4514 {
4515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4516 "WDI API call before module is initialized - Fail request");
4517
Jeff Johnsone7245742012-09-05 17:12:55 -07004518 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 }
4520
4521 /*------------------------------------------------------------------------
4522 Fill in Event data and post to the Main FSM
4523 ------------------------------------------------------------------------*/
4524 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004525 wdiEventData.pEventData = pwdiWowlExitParams;
4526 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004527 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004528 wdiEventData.pUserData = pUserData;
4529
4530 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4531}/*WDI_WowlExitReq*/
4532
4533/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004534 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004535 the upper MAC wants to dynamically adjusts the listen
4536 interval based on the WLAN/MSM activity. Upon the call
4537 of this API the WLAN DAL will pack and send a HAL
4538 configure Apps Cpu Wakeup State request message to the
4539 lower RIVA sub-system.
4540
4541 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004542 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004543
Jeff Johnsone7245742012-09-05 17:12:55 -07004544
4545 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004546 Apps Cpu Wakeup State as specified by the
4547 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004548
Jeff Johnson295189b2012-06-20 16:38:30 -07004549 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4550 back the response of the configure Apps Cpu Wakeup State
4551 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004552
Jeff Johnson295189b2012-06-20 16:38:30 -07004553 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004554 callback
4555
Jeff Johnson295189b2012-06-20 16:38:30 -07004556 @return Result of the function call
4557*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004558WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004559WDI_ConfigureAppsCpuWakeupStateReq
4560(
4561 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4562 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4563 void* pUserData
4564)
4565{
4566 WDI_EventInfoType wdiEventData;
4567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4568
4569 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004570 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004571 ------------------------------------------------------------------------*/
4572 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4573 {
4574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4575 "WDI API call before module is initialized - Fail request");
4576
Jeff Johnsone7245742012-09-05 17:12:55 -07004577 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 }
4579
4580 /*------------------------------------------------------------------------
4581 Fill in Event data and post to the Main FSM
4582 ------------------------------------------------------------------------*/
4583 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004584 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4585 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4586 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004587 wdiEventData.pUserData = pUserData;
4588
4589 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4590}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4591/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004592 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004593 to to perform a flush operation on a given AC. Upon the
4594 call of this API the WLAN DAL will pack and send a HAL
4595 Flush AC request message to the lower RIVA sub-system if
4596 DAL is in state STARTED.
4597
4598 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004599 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004600
4601 WDI_AddBAReq must have been called.
4602
Jeff Johnsone7245742012-09-05 17:12:55 -07004603 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004604 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004605
Jeff Johnson295189b2012-06-20 16:38:30 -07004606 wdiFlushAcRspCb: callback for passing back the response
4607 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004608
Jeff Johnson295189b2012-06-20 16:38:30 -07004609 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004610 callback
4611
Jeff Johnson295189b2012-06-20 16:38:30 -07004612 @see WDI_AddBAReq
4613 @return Result of the function call
4614*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004615WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004616WDI_FlushAcReq
4617(
4618 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4619 WDI_FlushAcRspCb wdiFlushAcRspCb,
4620 void* pUserData
4621)
4622{
4623 WDI_EventInfoType wdiEventData;
4624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4625
4626 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004627 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004628 ------------------------------------------------------------------------*/
4629 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4630 {
4631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4632 "WDI API call before module is initialized - Fail request");
4633
Jeff Johnsone7245742012-09-05 17:12:55 -07004634 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004635 }
4636
4637 /*------------------------------------------------------------------------
4638 Fill in Event data and post to the Main FSM
4639 ------------------------------------------------------------------------*/
4640 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004641 wdiEventData.pEventData = pwdiFlushAcReqParams;
4642 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4643 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004644 wdiEventData.pUserData = pUserData;
4645
4646 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4647
4648}/*WDI_FlushAcReq*/
4649
4650/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004651 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004652 wants to notify the lower mac on a BT AMP event. This is
4653 to inform BTC-SLM that some BT AMP event occurred. Upon
4654 the call of this API the WLAN DAL will pack and send a
4655 HAL BT AMP event request message to the lower RIVA
4656 sub-system if DAL is in state STARTED.
4657
4658 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004659 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004660
Jeff Johnsone7245742012-09-05 17:12:55 -07004661
4662 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004663 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004664
Jeff Johnson295189b2012-06-20 16:38:30 -07004665 wdiBtAmpEventRspCb: callback for passing back the
4666 response of the BT AMP event operation received from the
4667 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004668
Jeff Johnson295189b2012-06-20 16:38:30 -07004669 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004670 callback
4671
Jeff Johnson295189b2012-06-20 16:38:30 -07004672 @return Result of the function call
4673*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004674WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004675WDI_BtAmpEventReq
4676(
4677 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4678 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4679 void* pUserData
4680)
4681{
4682 WDI_EventInfoType wdiEventData;
4683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4684
4685 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004686 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004687 ------------------------------------------------------------------------*/
4688 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4689 {
4690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4691 "WDI API call before module is initialized - Fail request");
4692
Jeff Johnsone7245742012-09-05 17:12:55 -07004693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004694 }
4695
4696 /*------------------------------------------------------------------------
4697 Fill in Event data and post to the Main FSM
4698 ------------------------------------------------------------------------*/
4699 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004700 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4701 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4702 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004703 wdiEventData.pUserData = pUserData;
4704
4705 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4706
4707}/*WDI_BtAmpEventReq*/
4708
Jeff Johnsone7245742012-09-05 17:12:55 -07004709#ifdef FEATURE_OEM_DATA_SUPPORT
4710/**
4711 @brief WDI_Start Oem Data Req will be called when the upper MAC
4712 wants to notify the lower mac on a oem data Req event.Upon
4713 the call of this API the WLAN DAL will pack and send a
4714 HAL OEM Data Req event request message to the lower RIVA
4715 sub-system if DAL is in state STARTED.
4716
4717 In state BUSY this request will be queued. Request won't
4718 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004719
4720
Jeff Johnsone7245742012-09-05 17:12:55 -07004721
4722 @param pwdiOemDataReqParams: the Oem Data Req as
4723 specified by the Device Interface
4724
4725 wdiStartOemDataRspCb: callback for passing back the
4726 response of the Oem Data Req received from the
4727 device
4728
4729 pUserData: user data will be passed back with the
4730 callback
4731
4732 @return Result of the function call
4733*/
4734WDI_Status
4735WDI_StartOemDataReq
4736(
4737 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4738 WDI_oemDataRspCb wdiOemDataRspCb,
4739 void* pUserData
4740)
4741{
4742 WDI_EventInfoType wdiEventData;
4743 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4744
4745 /*------------------------------------------------------------------------
4746 Sanity Check
4747 ------------------------------------------------------------------------*/
4748 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4749 {
4750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4751 "WDI API call before module is initialized - Fail request");
4752
4753 return WDI_STATUS_E_NOT_ALLOWED;
4754 }
4755
4756 /*------------------------------------------------------------------------
4757 Fill in Event data and post to the Main FSM
4758 ------------------------------------------------------------------------*/
4759 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4760 wdiEventData.pEventData = pwdiOemDataReqParams;
4761 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4762 wdiEventData.pCBfnc = wdiOemDataRspCb;
4763 wdiEventData.pUserData = pUserData;
4764
4765 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4766
4767
4768}
4769
4770#endif
4771
4772
4773/*========================================================================
4774
Jeff Johnson295189b2012-06-20 16:38:30 -07004775 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004776
Jeff Johnson295189b2012-06-20 16:38:30 -07004777==========================================================================*/
4778/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004779 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004780 the WLAN HW to change the current channel of operation.
4781 Upon the call of this API the WLAN DAL will pack and
4782 send a HAL Start request message to the lower RIVA
4783 sub-system if DAL is in state STARTED.
4784
4785 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004786 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004787
4788 WDI_Start must have been called.
4789
Jeff Johnsone7245742012-09-05 17:12:55 -07004790 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004791 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004792
Jeff Johnson295189b2012-06-20 16:38:30 -07004793 wdiSwitchChRspCb: callback for passing back the response
4794 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004795
Jeff Johnson295189b2012-06-20 16:38:30 -07004796 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004797 callback
4798
Jeff Johnson295189b2012-06-20 16:38:30 -07004799 @see WDI_Start
4800 @return Result of the function call
4801*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004802WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004803WDI_SwitchChReq
4804(
4805 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4806 WDI_SwitchChRspCb wdiSwitchChRspCb,
4807 void* pUserData
4808)
4809{
4810 WDI_EventInfoType wdiEventData;
4811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4812
4813 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004814 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004815 ------------------------------------------------------------------------*/
4816 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4817 {
4818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4819 "WDI API call before module is initialized - Fail request");
4820
Jeff Johnsone7245742012-09-05 17:12:55 -07004821 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004822 }
4823
4824 /*------------------------------------------------------------------------
4825 Fill in Event data and post to the Main FSM
4826 ------------------------------------------------------------------------*/
4827 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004828 wdiEventData.pEventData = pwdiSwitchChReqParams;
4829 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4830 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004831 wdiEventData.pUserData = pUserData;
4832
4833 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4834
4835}/*WDI_SwitchChReq*/
4836
4837
4838/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004839 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004840 wishes to add or update a STA in HW. Upon the call of
4841 this API the WLAN DAL will pack and send a HAL Start
4842 message request message to the lower RIVA sub-system if
4843 DAL is in state STARTED.
4844
4845 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004846 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004847
4848 WDI_Start must have been called.
4849
Jeff Johnsone7245742012-09-05 17:12:55 -07004850 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004851 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004852
Jeff Johnson295189b2012-06-20 16:38:30 -07004853 wdiConfigSTARspCb: callback for passing back the
4854 response of the config STA operation received from the
4855 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004856
Jeff Johnson295189b2012-06-20 16:38:30 -07004857 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004858 callback
4859
Jeff Johnson295189b2012-06-20 16:38:30 -07004860 @see WDI_Start
4861 @return Result of the function call
4862*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004863WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004864WDI_ConfigSTAReq
4865(
4866 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4867 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4868 void* pUserData
4869)
4870{
4871 WDI_EventInfoType wdiEventData;
4872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4873
4874 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004875 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004876 ------------------------------------------------------------------------*/
4877 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4878 {
4879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4880 "WDI API call before module is initialized - Fail request");
4881
Jeff Johnsone7245742012-09-05 17:12:55 -07004882 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004883 }
4884
4885 /*------------------------------------------------------------------------
4886 Fill in Event data and post to the Main FSM
4887 ------------------------------------------------------------------------*/
4888 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004889 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4890 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4891 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004892 wdiEventData.pUserData = pUserData;
4893
4894 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4895
4896}/*WDI_ConfigSTAReq*/
4897
4898/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004899 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004900 wants to change the state of an ongoing link. Upon the
4901 call of this API the WLAN DAL will pack and send a HAL
4902 Start message request message to the lower RIVA
4903 sub-system if DAL is in state STARTED.
4904
4905 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004906 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004907
4908 WDI_JoinStartReq must have been called.
4909
Jeff Johnsone7245742012-09-05 17:12:55 -07004910 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004911 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004912
Jeff Johnson295189b2012-06-20 16:38:30 -07004913 wdiSetLinkStateRspCb: callback for passing back the
4914 response of the set link state operation received from
4915 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004916
Jeff Johnson295189b2012-06-20 16:38:30 -07004917 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004918 callback
4919
Jeff Johnson295189b2012-06-20 16:38:30 -07004920 @see WDI_JoinStartReq
4921 @return Result of the function call
4922*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004923WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004924WDI_SetLinkStateReq
4925(
4926 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4927 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4928 void* pUserData
4929)
4930{
4931 WDI_EventInfoType wdiEventData;
4932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4933
4934 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004935 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004936 ------------------------------------------------------------------------*/
4937 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4938 {
4939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4940 "WDI API call before module is initialized - Fail request");
4941
Jeff Johnsone7245742012-09-05 17:12:55 -07004942 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004943 }
4944
4945 /*------------------------------------------------------------------------
4946 Fill in Event data and post to the Main FSM
4947 ------------------------------------------------------------------------*/
4948 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004949 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4950 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4951 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004952 wdiEventData.pUserData = pUserData;
4953
4954 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4955
4956}/*WDI_SetLinkStateReq*/
4957
4958
4959/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004960 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004961 to get statistics (MIB counters) from the device. Upon
4962 the call of this API the WLAN DAL will pack and send a
4963 HAL Start request message to the lower RIVA sub-system
4964 if DAL is in state STARTED.
4965
4966 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004967 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004968
4969 WDI_Start must have been called.
4970
Jeff Johnsone7245742012-09-05 17:12:55 -07004971 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004972 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004973
Jeff Johnson295189b2012-06-20 16:38:30 -07004974 wdiGetStatsRspCb: callback for passing back the response
4975 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004976
Jeff Johnson295189b2012-06-20 16:38:30 -07004977 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004978 callback
4979
Jeff Johnson295189b2012-06-20 16:38:30 -07004980 @see WDI_Start
4981 @return Result of the function call
4982*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004983WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004984WDI_GetStatsReq
4985(
4986 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4987 WDI_GetStatsRspCb wdiGetStatsRspCb,
4988 void* pUserData
4989)
4990{
4991 WDI_EventInfoType wdiEventData;
4992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4993
4994 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004995 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004996 ------------------------------------------------------------------------*/
4997 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4998 {
4999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5000 "WDI API call before module is initialized - Fail request");
5001
Jeff Johnsone7245742012-09-05 17:12:55 -07005002 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005003 }
5004
5005 /*------------------------------------------------------------------------
5006 Fill in Event data and post to the Main FSM
5007 ------------------------------------------------------------------------*/
5008 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005009 wdiEventData.pEventData = pwdiGetStatsReqParams;
5010 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5011 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005012 wdiEventData.pUserData = pUserData;
5013
5014 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5015
5016}/*WDI_GetStatsReq*/
5017
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005018#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
5019/**
5020 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5021 to get roam rssi from the device. Upon
5022 the call of this API the WLAN DAL will pack and send a
5023 HAL Start request message to the lower RIVA sub-system
5024 if DAL is in state STARTED.
5025
5026 In state BUSY this request will be queued. Request won't
5027 be allowed in any other state.
5028
5029 WDI_Start must have been called.
5030
5031 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5032 specified by the Device Interface
5033
5034 wdiGetRoamRssiRspCb: callback for passing back the response
5035 of the get stats operation received from the device
5036
5037 pUserData: user data will be passed back with the
5038 callback
5039
5040 @see WDI_Start
5041 @return Result of the function call
5042*/
5043WDI_Status
5044WDI_GetRoamRssiReq
5045(
5046 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5047 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5048 void* pUserData
5049)
5050{
5051 WDI_EventInfoType wdiEventData;
5052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5053
5054 /*------------------------------------------------------------------------
5055 Sanity Check
5056 ------------------------------------------------------------------------*/
5057 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5058 {
5059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5060 "WDI API call before module is initialized - Fail request");
5061
5062 return WDI_STATUS_E_NOT_ALLOWED;
5063 }
5064 /*------------------------------------------------------------------------
5065 Fill in Event data and post to the Main FSM
5066 ------------------------------------------------------------------------*/
5067 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5068 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5069 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5070 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5071 wdiEventData.pUserData = pUserData;
5072
5073 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5074
5075}/*WDI_GetRoamRssiReq*/
5076#endif
5077
Jeff Johnson295189b2012-06-20 16:38:30 -07005078
5079/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005080 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005081 it wishes to change the configuration of the WLAN
5082 Device. Upon the call of this API the WLAN DAL will pack
5083 and send a HAL Update CFG request message to the lower
5084 RIVA sub-system if DAL is in state STARTED.
5085
5086 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005087 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005088
5089 WDI_Start must have been called.
5090
Jeff Johnsone7245742012-09-05 17:12:55 -07005091 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005092 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005093
Jeff Johnson295189b2012-06-20 16:38:30 -07005094 wdiUpdateCfgsRspCb: callback for passing back the
5095 response of the update cfg operation received from the
5096 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005097
Jeff Johnson295189b2012-06-20 16:38:30 -07005098 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005099 callback
5100
Jeff Johnson295189b2012-06-20 16:38:30 -07005101 @see WDI_Start
5102 @return Result of the function call
5103*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005104WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005105WDI_UpdateCfgReq
5106(
5107 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5108 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5109 void* pUserData
5110)
5111{
5112 WDI_EventInfoType wdiEventData;
5113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5114
5115 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005116 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005117 ------------------------------------------------------------------------*/
5118 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5119 {
5120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5121 "WDI API call before module is initialized - Fail request");
5122
Jeff Johnsone7245742012-09-05 17:12:55 -07005123 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005124 }
5125
5126 /*------------------------------------------------------------------------
5127 Fill in Event data and post to the Main FSM
5128 ------------------------------------------------------------------------*/
5129 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005130 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5131 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5132 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005133 wdiEventData.pUserData = pUserData;
5134
5135 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5136
5137}/*WDI_UpdateCfgReq*/
5138
5139
5140
5141/**
5142 @brief WDI_AddBAReq will be called when the upper MAC has setup
5143 successfully a BA session and needs to notify the HW for
5144 the appropriate settings to take place. Upon the call of
5145 this API the WLAN DAL will pack and send a HAL Add BA
5146 request message to the lower RIVA sub-system if DAL is
5147 in state STARTED.
5148
5149 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005150 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005151
5152 WDI_PostAssocReq must have been called.
5153
5154 @param wdiAddBAReqParams: the add BA parameters as specified by
5155 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005156
Jeff Johnson295189b2012-06-20 16:38:30 -07005157 wdiAddBARspCb: callback for passing back the response of
5158 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005159
Jeff Johnson295189b2012-06-20 16:38:30 -07005160 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005161 callback
5162
Jeff Johnson295189b2012-06-20 16:38:30 -07005163 @see WDI_PostAssocReq
5164 @return Result of the function call
5165*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005166WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005167WDI_AddBAReq
5168(
5169 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5170 WDI_AddBARspCb wdiAddBARspCb,
5171 void* pUserData
5172)
5173{
5174 WDI_EventInfoType wdiEventData;
5175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5176
5177 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005178 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005179 ------------------------------------------------------------------------*/
5180 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5181 {
5182 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5183 "WDI API call before module is initialized - Fail request");
5184
Jeff Johnsone7245742012-09-05 17:12:55 -07005185 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005186 }
5187
5188 /*------------------------------------------------------------------------
5189 Fill in Event data and post to the Main FSM
5190 ------------------------------------------------------------------------*/
5191 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005192 wdiEventData.pEventData = pwdiAddBAReqParams;
5193 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5194 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005195 wdiEventData.pUserData = pUserData;
5196
5197 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5198
5199}/*WDI_AddBAReq*/
5200
5201
5202/**
5203 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5204 successfully a BA session and needs to notify the HW for
5205 the appropriate settings to take place. Upon the call of
5206 this API the WLAN DAL will pack and send a HAL Add BA
5207 request message to the lower RIVA sub-system if DAL is
5208 in state STARTED.
5209
5210 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005211 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005212
5213 WDI_PostAssocReq must have been called.
5214
5215 @param wdiAddBAReqParams: the add BA parameters as specified by
5216 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005217
Jeff Johnson295189b2012-06-20 16:38:30 -07005218 wdiAddBARspCb: callback for passing back the response of
5219 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005220
Jeff Johnson295189b2012-06-20 16:38:30 -07005221 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005222 callback
5223
Jeff Johnson295189b2012-06-20 16:38:30 -07005224 @see WDI_PostAssocReq
5225 @return Result of the function call
5226*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005227WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005228WDI_TriggerBAReq
5229(
5230 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5231 WDI_TriggerBARspCb wdiTriggerBARspCb,
5232 void* pUserData
5233)
5234{
5235 WDI_EventInfoType wdiEventData;
5236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5237
5238 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005239 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005240 ------------------------------------------------------------------------*/
5241 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5242 {
5243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5244 "WDI API call before module is initialized - Fail request");
5245
Jeff Johnsone7245742012-09-05 17:12:55 -07005246 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005247 }
5248
5249 /*------------------------------------------------------------------------
5250 Fill in Event data and post to the Main FSM
5251 ------------------------------------------------------------------------*/
5252 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005253 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5254 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5255 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005256 wdiEventData.pUserData = pUserData;
5257
5258 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5259
5260}/*WDI_AddBAReq*/
5261
5262/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005263 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005264 wishes to update any of the Beacon parameters used by HW.
5265 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5266 message to the lower RIVA sub-system if DAL is in state
5267 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
Jeff Johnsone7245742012-09-05 17:12:55 -07005274 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005275 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005276
Jeff Johnson295189b2012-06-20 16:38:30 -07005277 wdiUpdateBeaconParamsRspCb: callback for passing back the
5278 response of the start 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_UpdateBeaconParamsReq
5288(
5289 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5290 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
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_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005312 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5313 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5314 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005315 wdiEventData.pUserData = pUserData;
5316
5317 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5318
5319}/*WDI_UpdateBeaconParamsReq*/
5320
5321/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005322 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005323 wishes to update the Beacon template used by HW.
5324 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template 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 wdiSendBeaconParams: 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 wdiSendBeaconParamsRspCb: 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_SendBeaconParamsReq
5347(
5348 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5349 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
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_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005371 wdiEventData.pEventData = pwdiSendBeaconParams;
5372 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5373 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005374 wdiEventData.pUserData = pUserData;
5375
5376 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5377
5378}/*WDI_SendBeaconParamsReq*/
5379
5380/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005381 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005382 upper MAC wants to update the probe response template to
5383 be transmitted as Soft AP
5384 Upon the call of this API the WLAN DAL will
5385 pack and send the probe rsp template message to the
5386 lower RIVA sub-system if DAL is in state STARTED.
5387
5388 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005389 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005390
5391
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005393 specified 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 Send Beacon Params operation received
5397 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005398
Jeff Johnson295189b2012-06-20 16:38:30 -07005399 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005400 callback
5401
Jeff Johnson295189b2012-06-20 16:38:30 -07005402 @see WDI_AddBAReq
5403 @return Result of the function call
5404*/
5405
Jeff Johnsone7245742012-09-05 17:12:55 -07005406WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005407WDI_UpdateProbeRspTemplateReq
5408(
5409 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5410 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5411 void* pUserData
5412)
5413{
5414 WDI_EventInfoType wdiEventData;
5415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5416
5417 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005418 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005419 ------------------------------------------------------------------------*/
5420 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5421 {
5422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5423 "WDI API call before module is initialized - Fail request");
5424
Jeff Johnsone7245742012-09-05 17:12:55 -07005425 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005426 }
5427
5428 /*------------------------------------------------------------------------
5429 Fill in Event data and post to the Main FSM
5430 ------------------------------------------------------------------------*/
5431 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005432 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5433 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5434 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005435 wdiEventData.pUserData = pUserData;
5436
5437 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5438
5439}/*WDI_UpdateProbeRspTemplateReq*/
5440
5441/**
5442 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5443 to the NV memory.
5444
5445
5446 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5447 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005448
Jeff Johnson295189b2012-06-20 16:38:30 -07005449 wdiNvDownloadRspCb: callback for passing back the response of
5450 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005451
Jeff Johnson295189b2012-06-20 16:38:30 -07005452 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005453 callback
5454
Jeff Johnson295189b2012-06-20 16:38:30 -07005455 @see WDI_PostAssocReq
5456 @return Result of the function call
5457*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005458WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005459WDI_NvDownloadReq
5460(
5461 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5462 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5463 void* pUserData
5464)
5465{
5466 WDI_EventInfoType wdiEventData;
5467
5468 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005469 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005470 ------------------------------------------------------------------------*/
5471 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5472 {
5473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5474 "WDI API call before module is initialized - Fail request");
5475
Jeff Johnsone7245742012-09-05 17:12:55 -07005476 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005477 }
5478
5479 /*------------------------------------------------------------------------
5480 Fill in Event data and post to the Main FSM
5481 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005482 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5483 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5484 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5485 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005486 wdiEventData.pUserData = pUserData;
5487
5488 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5489
5490}/*WDI_NVDownloadReq*/
5491
Jeff Johnson295189b2012-06-20 16:38:30 -07005492/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005493 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005494 upper MAC wants to send Notice of Absence
5495 Upon the call of this API the WLAN DAL will
5496 pack and send the probe rsp template message to the
5497 lower RIVA sub-system if DAL is in state STARTED.
5498
5499 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005500 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005501
5502
Jeff Johnsone7245742012-09-05 17:12:55 -07005503 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005505
Jeff Johnson295189b2012-06-20 16:38:30 -07005506 wdiSendBeaconParamsRspCb: callback for passing back the
5507 response of the Send Beacon Params operation received
5508 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005509
Jeff Johnson295189b2012-06-20 16:38:30 -07005510 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005511 callback
5512
Jeff Johnson295189b2012-06-20 16:38:30 -07005513 @see WDI_AddBAReq
5514 @return Result of the function call
5515*/
5516WDI_Status
5517WDI_SetP2PGONOAReq
5518(
5519 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5520 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5521 void* pUserData
5522)
5523{
5524 WDI_EventInfoType wdiEventData;
5525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 ------------------------------------------------------------------------*/
5541 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005542 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5543 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5544 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005545 wdiEventData.pUserData = pUserData;
5546
5547 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5548
5549}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005550
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305551#ifdef FEATURE_WLAN_TDLS
5552/**
5553 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5554 upper MAC wants to send TDLS Link Establish Request Parameters
5555 Upon the call of this API the WLAN DAL will
5556 pack and send the TDLS Link Establish Request message to the
5557 lower RIVA sub-system if DAL is in state STARTED.
5558
5559 In state BUSY this request will be queued. Request won't
5560 be allowed in any other state.
5561
5562
5563 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5564 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5565
5566 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5567 response of the TDLS Link Establish request received
5568 from the device
5569
5570 pUserData: user data will be passed back with the
5571 callback
5572
5573 @see
5574 @return Result of the function call
5575*/
5576WDI_Status
5577WDI_SetTDLSLinkEstablishReq
5578(
5579 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5580 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5581 void* pUserData
5582)
5583{
5584 WDI_EventInfoType wdiEventData;
5585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5586
5587 /*------------------------------------------------------------------------
5588 Sanity Check
5589 ------------------------------------------------------------------------*/
5590 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5591 {
5592 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5593 "WDI API call before module is initialized - Fail request");
5594
5595 return WDI_STATUS_E_NOT_ALLOWED;
5596 }
5597
5598 /*------------------------------------------------------------------------
5599 Fill in Event data and post to the Main FSM
5600 ------------------------------------------------------------------------*/
5601 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5602 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5603 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5604 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5605 wdiEventData.pUserData = pUserData;
5606
5607 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5608
5609}/*WDI_SetTDLSLinkEstablishReq*/
5610#endif
5611
Jeff Johnson295189b2012-06-20 16:38:30 -07005612/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005613 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005614 UMAC wanted to add STA self while opening any new session
5615 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005616 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005617
5618
Jeff Johnsone7245742012-09-05 17:12:55 -07005619 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005620 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005621
Jeff Johnson295189b2012-06-20 16:38:30 -07005622 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005623 callback
5624
5625 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005626 @return Result of the function call
5627*/
5628WDI_Status
5629WDI_AddSTASelfReq
5630(
5631 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5632 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5633 void* pUserData
5634)
5635{
5636 WDI_EventInfoType wdiEventData;
5637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5638
5639 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005640 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005641 ------------------------------------------------------------------------*/
5642 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5643 {
5644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5645 "WDI API call before module is initialized - Fail request");
5646
Jeff Johnsone7245742012-09-05 17:12:55 -07005647 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005648 }
5649
5650 /*------------------------------------------------------------------------
5651 Fill in Event data and post to the Main FSM
5652 ------------------------------------------------------------------------*/
5653 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005654 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5655 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5656 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005657 wdiEventData.pUserData = pUserData;
5658
5659 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5660
5661}/*WDI_AddSTASelfReq*/
5662
5663
Jeff Johnsone7245742012-09-05 17:12:55 -07005664#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005665/**
5666 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5667 the device of a successful add TSpec negotiation. HW
5668 needs to receive the TSpec Info from the UMAC in order
5669 to configure properly the QoS data traffic. Upon the
5670 call of this API the WLAN DAL will pack and send a HAL
5671 Add TS request message to the lower RIVA sub-system if
5672 DAL is in state STARTED.
5673
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 WDI_PostAssocReq must have been called.
5678
5679 @param wdiAddTsReqParams: the add TS parameters as specified by
5680 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005681
Jeff Johnson295189b2012-06-20 16:38:30 -07005682 wdiAddTsRspCb: callback for passing back the response of
5683 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005684
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005686 callback
5687
Jeff Johnson295189b2012-06-20 16:38:30 -07005688 @see WDI_PostAssocReq
5689 @return Result of the function call
5690*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005691WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005692WDI_AggrAddTSReq
5693(
5694 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5695 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5696 void* pUserData
5697)
5698{
5699 WDI_EventInfoType wdiEventData;
5700 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5701
5702 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005703 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005704 ------------------------------------------------------------------------*/
5705 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5706 {
5707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5708 "WDI API call before module is initialized - Fail request");
5709
Jeff Johnsone7245742012-09-05 17:12:55 -07005710 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005711 }
5712
5713 /*------------------------------------------------------------------------
5714 Fill in Event data and post to the Main FSM
5715 ------------------------------------------------------------------------*/
5716 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005717 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5718 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5719 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005720 wdiEventData.pUserData = pUserData;
5721
5722 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5723
5724}/*WDI_AggrAddTSReq*/
5725
5726#endif /* WLAN_FEATURE_VOWIFI_11R */
5727
Jeff Johnson295189b2012-06-20 16:38:30 -07005728/**
5729 @brief WDI_FTMCommandReq
5730 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005731
5732 @param ftmCommandReq: FTM Command Body
5733 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005734 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005735
Jeff Johnson295189b2012-06-20 16:38:30 -07005736 @see
5737 @return Result of the function call
5738*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005739WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005740WDI_FTMCommandReq
5741(
5742 WDI_FTMCommandReqType *ftmCommandReq,
5743 WDI_FTMCommandRspCb ftmCommandRspCb,
5744 void *pUserData
5745)
5746{
5747 WDI_EventInfoType wdiEventData;
5748 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5749
5750 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005751 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005752 ------------------------------------------------------------------------*/
5753 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5754 {
5755 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5756 "WDI API call before module is initialized - Fail request");
5757
Jeff Johnsone7245742012-09-05 17:12:55 -07005758 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005759 }
5760
5761 /*------------------------------------------------------------------------
5762 Fill in Event data and post to the Main FSM
5763 ------------------------------------------------------------------------*/
5764 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5765 wdiEventData.pEventData = (void *)ftmCommandReq;
5766 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5767 wdiEventData.pCBfnc = ftmCommandRspCb;
5768 wdiEventData.pUserData = pUserData;
5769
5770 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5771}
Jeff Johnson295189b2012-06-20 16:38:30 -07005772/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005773 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005774
5775 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005776 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005777
5778
5779 @param pwdiResumeReqParams: as specified by
5780 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005781
Jeff Johnson295189b2012-06-20 16:38:30 -07005782 wdiResumeReqRspCb: callback for passing back the response of
5783 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005784
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005786 callback
5787
5788 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005789 @return Result of the function call
5790*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005791WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005792WDI_HostResumeReq
5793(
5794 WDI_ResumeParamsType* pwdiResumeReqParams,
5795 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5796 void* pUserData
5797)
5798{
5799 WDI_EventInfoType wdiEventData;
5800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5801
5802 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005803 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005804 ------------------------------------------------------------------------*/
5805 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5806 {
5807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5808 "WDI API call before module is initialized - Fail request");
5809
Jeff Johnsone7245742012-09-05 17:12:55 -07005810 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005811 }
5812
5813 /*------------------------------------------------------------------------
5814 Fill in Event data and post to the Main FSM
5815 ------------------------------------------------------------------------*/
5816 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005817 wdiEventData.pEventData = pwdiResumeReqParams;
5818 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5819 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005820 wdiEventData.pUserData = pUserData;
5821
5822 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5823
5824}/*WDI_HostResumeReq*/
5825
5826/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005827 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005828
5829 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005830 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005831
5832
5833 @param pwdiDelStaSelfReqParams: as specified by
5834 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005835
Jeff Johnson295189b2012-06-20 16:38:30 -07005836 wdiDelStaSelfRspCb: callback for passing back the response of
5837 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005838
Jeff Johnson295189b2012-06-20 16:38:30 -07005839 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005840 callback
5841
Jeff Johnson295189b2012-06-20 16:38:30 -07005842 @see WDI_PostAssocReq
5843 @return Result of the function call
5844*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005845WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005846WDI_DelSTASelfReq
5847(
5848 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5849 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5850 void* pUserData
5851)
5852{
5853 WDI_EventInfoType wdiEventData;
5854 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5855
5856 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005857 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005858 ------------------------------------------------------------------------*/
5859 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5860 {
5861 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5862 "WDI API call before module is initialized - Fail request");
5863
Jeff Johnsone7245742012-09-05 17:12:55 -07005864 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005865 }
5866
5867 /*------------------------------------------------------------------------
5868 Fill in Event data and post to the Main FSM
5869 ------------------------------------------------------------------------*/
5870 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005871 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5872 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5873 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005874 wdiEventData.pUserData = pUserData;
5875
5876 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5877
5878}/*WDI_AggrAddTSReq*/
5879
5880/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005881 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5882 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005883 Upon the call of this API the WLAN DAL will pack
5884 and send a HAL Set Tx Per Tracking request message to the
5885 lower RIVA sub-system if DAL is in state STARTED.
5886
5887 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005888 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005889
Jeff Johnsone7245742012-09-05 17:12:55 -07005890 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005891 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005892
Jeff Johnson295189b2012-06-20 16:38:30 -07005893 pwdiSetTxPerTrackingRspCb: callback for passing back the
5894 response of the set Tx PER Tracking configurations operation received
5895 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005896
Jeff Johnson295189b2012-06-20 16:38:30 -07005897 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005898 callback
5899
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 @return Result of the function call
5901*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005902WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005903WDI_SetTxPerTrackingReq
5904(
5905 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5906 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5907 void* pUserData
5908)
5909{
5910 WDI_EventInfoType wdiEventData;
5911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5912
5913 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005914 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005915 ------------------------------------------------------------------------*/
5916 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5917 {
5918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5919 "WDI API call before module is initialized - Fail request");
5920
Jeff Johnsone7245742012-09-05 17:12:55 -07005921 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005922 }
5923
5924 /*------------------------------------------------------------------------
5925 Fill in Event data and post to the Main FSM
5926 ------------------------------------------------------------------------*/
5927 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005928 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005929 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005930 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005931 wdiEventData.pUserData = pUserData;
5932
5933 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5934
5935}/*WDI_SetTxPerTrackingReq*/
5936
5937/**
5938 @brief WDI_SetTmLevelReq
5939 If HW Thermal condition changed, driver should react based on new
5940 HW thermal condition.
5941
5942 @param pwdiSetTmLevelReq: New thermal condition information
5943
5944 pwdiSetTmLevelRspCb: callback
5945
5946 usrData: user data will be passed back with the
5947 callback
5948
5949 @return Result of the function call
5950*/
5951WDI_Status
5952WDI_SetTmLevelReq
5953(
5954 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5955 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5956 void *usrData
5957)
5958{
5959 WDI_EventInfoType wdiEventData;
5960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5961
5962 /*------------------------------------------------------------------------
5963 Sanity Check
5964 ------------------------------------------------------------------------*/
5965 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5966 {
5967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5968 "WDI API call before module is initialized - Fail request");
5969
5970 return WDI_STATUS_E_NOT_ALLOWED;
5971 }
5972
5973 /*------------------------------------------------------------------------
5974 Fill in Event data and post to the Main FSM
5975 ------------------------------------------------------------------------*/
5976 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5977 wdiEventData.pEventData = pwdiSetTmLevelReq;
5978 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5979 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5980 wdiEventData.pUserData = usrData;
5981
5982 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5983}
5984
5985/**
5986 @brief WDI_HostSuspendInd
5987
5988 Suspend Indication from the upper layer will be sent
5989 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005990
Jeff Johnson295189b2012-06-20 16:38:30 -07005991 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005992
5993 @see
5994
Jeff Johnson295189b2012-06-20 16:38:30 -07005995 @return Status of the request
5996*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005997WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005998WDI_HostSuspendInd
5999(
6000 WDI_SuspendParamsType* pwdiSuspendIndParams
6001)
6002{
6003
6004 WDI_EventInfoType wdiEventData;
6005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6006
6007 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006008 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006009 ------------------------------------------------------------------------*/
6010 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6011 {
6012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6013 "WDI API call before module is initialized - Fail request");
6014
Jeff Johnsone7245742012-09-05 17:12:55 -07006015 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006016 }
6017
6018 /*------------------------------------------------------------------------
6019 Fill in Event data and post to the Main FSM
6020 ------------------------------------------------------------------------*/
6021 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006022 wdiEventData.pEventData = pwdiSuspendIndParams;
6023 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6024 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006025 wdiEventData.pUserData = NULL;
6026
6027 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6028
6029}/*WDI_HostSuspendInd*/
6030
6031/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006032 @brief WDI_TrafficStatsInd
6033 Traffic Stats from the upper layer will be sent
6034 down to HAL
6035
6036 @param WDI_TrafficStatsIndType
6037
6038 @see
6039
6040 @return Status of the request
6041*/
6042WDI_Status
6043WDI_TrafficStatsInd
6044(
6045 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6046)
6047{
6048
6049 WDI_EventInfoType wdiEventData;
6050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6051
6052 /*------------------------------------------------------------------------
6053 Sanity Check
6054 ------------------------------------------------------------------------*/
6055 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6056 {
6057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6058 "WDI API call before module is initialized - Fail request");
6059
6060 return WDI_STATUS_E_NOT_ALLOWED;
6061 }
6062
6063 /*------------------------------------------------------------------------
6064 Fill in Event data and post to the Main FSM
6065 ------------------------------------------------------------------------*/
6066 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6067 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6068 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6069 wdiEventData.pCBfnc = NULL;
6070 wdiEventData.pUserData = NULL;
6071
6072 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6073
6074}/*WDI_TrafficStatsInd*/
6075
Chet Lanctot186b5732013-03-18 10:26:30 -07006076#ifdef WLAN_FEATURE_11W
6077/**
6078 @brief WDI_ExcludeUnencryptedInd
6079 Register with HAL to receive/drop unencrypted frames
6080
6081 @param WDI_ExcludeUnencryptIndType
6082
6083 @see
6084
6085 @return Status of the request
6086*/
6087WDI_Status
6088WDI_ExcludeUnencryptedInd
6089(
6090 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6091)
6092{
6093
6094 WDI_EventInfoType wdiEventData;
6095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6096
6097 /*------------------------------------------------------------------------
6098 Sanity Check
6099 ------------------------------------------------------------------------*/
6100 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6101 {
6102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6103 "WDI API call before module is initialized - Fail request");
6104
6105 return WDI_STATUS_E_NOT_ALLOWED;
6106 }
6107
6108 /*------------------------------------------------------------------------
6109 Fill in Event data and post to the Main FSM
6110 ------------------------------------------------------------------------*/
6111 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6112 wdiEventData.pEventData = pWdiExcUnencParams;
6113 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6114 wdiEventData.pCBfnc = NULL;
6115 wdiEventData.pUserData = NULL;
6116
6117 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6118
6119}/*WDI_TrafficStatsInd*/
6120#endif
6121
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006122/**
Yue Mab9c86f42013-08-14 15:59:08 -07006123 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6124
6125 @param addPeriodicTxPtrnParams: Add Pattern parameters
6126
6127 @see
6128
6129 @return Status of the request
6130*/
6131WDI_Status
6132WDI_AddPeriodicTxPtrnInd
6133(
6134 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6135)
6136{
6137 WDI_EventInfoType wdiEventData;
6138
6139 /*-------------------------------------------------------------------------
6140 Sanity Check
6141 ------------------------------------------------------------------------*/
6142 if (eWLAN_PAL_FALSE == gWDIInitialized)
6143 {
6144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6145 "WDI API call before module is initialized - Fail request!");
6146
6147 return WDI_STATUS_E_NOT_ALLOWED;
6148 }
6149
6150 /*-------------------------------------------------------------------------
6151 Fill in Event data and post to the Main FSM
6152 ------------------------------------------------------------------------*/
6153 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6154 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6155 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6156 wdiEventData.pCBfnc = NULL;
6157 wdiEventData.pUserData = NULL;
6158
6159 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6160}
6161
6162/**
6163 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6164
6165 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6166
6167 @see
6168
6169 @return Status of the request
6170*/
6171WDI_Status
6172WDI_DelPeriodicTxPtrnInd
6173(
6174 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6175)
6176{
6177 WDI_EventInfoType wdiEventData;
6178
6179 /*-------------------------------------------------------------------------
6180 Sanity Check
6181 ------------------------------------------------------------------------*/
6182 if (eWLAN_PAL_FALSE == gWDIInitialized)
6183 {
6184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6185 "WDI API call before module is initialized - Fail request!");
6186
6187 return WDI_STATUS_E_NOT_ALLOWED;
6188 }
6189
6190 /*-------------------------------------------------------------------------
6191 Fill in Event data and post to the Main FSM
6192 ------------------------------------------------------------------------*/
6193 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6194 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6195 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6196 wdiEventData.pCBfnc = NULL;
6197 wdiEventData.pUserData = NULL;
6198
6199 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6200}
6201
6202/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006203 @brief WDI_HALDumpCmdReq
6204 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006205
6206 @param halDumpCmdReqParams: Hal Dump Command Body
6207 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006208 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006209
Jeff Johnson295189b2012-06-20 16:38:30 -07006210 @see
6211 @return Result of the function call
6212*/
6213WDI_Status WDI_HALDumpCmdReq
6214(
6215 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6216 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6217 void *pUserData
6218)
6219{
6220 WDI_EventInfoType wdiEventData;
6221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6222
6223 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006224 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006225 ------------------------------------------------------------------------*/
6226 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6227 {
6228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6229 "WDI API call before module is initialized - Fail request");
6230
Jeff Johnsone7245742012-09-05 17:12:55 -07006231 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006232 }
6233
6234 /*------------------------------------------------------------------------
6235 Fill in Event data and post to the Main FSM
6236 ------------------------------------------------------------------------*/
6237 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6238 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6239 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6240 wdiEventData.pCBfnc = halDumpCmdRspCb;
6241 wdiEventData.pUserData = pUserData;
6242
6243 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6244}
6245
Jeff Johnsone7245742012-09-05 17:12:55 -07006246/*============================================================================
6247
Jeff Johnson295189b2012-06-20 16:38:30 -07006248 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006249
Jeff Johnson295189b2012-06-20 16:38:30 -07006250 ============================================================================*/
6251
6252/**
6253 @brief Main FSM Start function for all states except BUSY
6254
Jeff Johnsone7245742012-09-05 17:12:55 -07006255
6256 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006257 wdiEV: event posted to the main DAL FSM
6258 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006259 structure
6260
Jeff Johnson295189b2012-06-20 16:38:30 -07006261 @see
6262 @return Result of the function call
6263*/
6264WDI_Status
6265WDI_PostMainEvent
6266(
Jeff Johnsone7245742012-09-05 17:12:55 -07006267 WDI_ControlBlockType* pWDICtx,
6268 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006269 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006270
Jeff Johnson295189b2012-06-20 16:38:30 -07006271)
6272{
Jeff Johnsone7245742012-09-05 17:12:55 -07006273 WDI_Status wdiStatus;
6274 WDI_MainFuncType pfnWDIMainEvHdlr;
6275 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6277
6278 /*-------------------------------------------------------------------------
6279 Sanity check
6280 -------------------------------------------------------------------------*/
6281 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6282 ( wdiEV >= WDI_MAX_EVENT ))
6283 {
6284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6285 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6286 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006287 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006288 }
6289
6290 /*Access to the global state must be locked */
6291 wpalMutexAcquire(&pWDICtx->wptMutex);
6292
6293 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006294 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006295
6296 wdiOldState = pWDICtx->uGlobalState;
6297
6298 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006299 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6300 response comes from CCPU for the request sent by host:
6301 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 -07006302 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 -07006303 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006304 CCPU:
6305 don't change the state */
6306 if ( WDI_RESPONSE_EVENT != wdiEV)
6307 {
6308 /*Transition to BUSY State - the request is now being processed by the FSM,
6309 if the request fails we shall transition back to the old state, if not
6310 the request will manage its own state transition*/
6311 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6312 }
6313 /* If the state function associated with the EV is NULL it means that this
6314 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006315 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006316 {
6317 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006318 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006319 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006320 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006321 }
6322 else
6323 {
6324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006325 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006326 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006327 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006328 }
6329
6330 /* If a request handles itself well it will end up in a success or in a
6331 pending
6332 Success - means that the request was processed and the proper state
6333 transition already occurred or will occur when the resp is received
6334 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006335
Jeff Johnson295189b2012-06-20 16:38:30 -07006336 Pending - means the request could not be processed at this moment in time
6337 because the FSM was already busy so no state transition or dequeueing
6338 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006339
Jeff Johnson295189b2012-06-20 16:38:30 -07006340 Success for synchronous case means that the transition may occur and
6341 processing of pending requests may continue - so it should go through
6342 and restores the state and continue processing queued requests*/
6343 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6344 ( WDI_STATUS_PENDING != wdiStatus ))
6345 {
6346 if ( WDI_RESPONSE_EVENT != wdiEV)
6347 {
6348 /*The request has failed or could not be processed - transition back to
6349 the old state - check to see if anything was queued and try to execute
6350 The dequeue logic should post a message to a thread and return - no
6351 actual processing can occur */
6352 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6353 }
6354 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006355
Jeff Johnson295189b2012-06-20 16:38:30 -07006356 }
6357
6358 /* we have completed processing the event */
6359 wpalMutexRelease(&pWDICtx->wptMutex);
6360
Jeff Johnsone7245742012-09-05 17:12:55 -07006361 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006362
6363}/*WDI_PostMainEvent*/
6364
6365
6366/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006367 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006368--------------------------------------------------------------------------*/
6369/**
6370 @brief Main FSM Start function for all states except BUSY
6371
Jeff Johnsone7245742012-09-05 17:12:55 -07006372
6373 @param pWDICtx: pointer to the WLAN DAL context
6374 pEventData: pointer to the event information structure
6375
Jeff Johnson295189b2012-06-20 16:38:30 -07006376 @see
6377 @return Result of the function call
6378*/
6379WDI_Status
6380WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006381(
Jeff Johnson295189b2012-06-20 16:38:30 -07006382 WDI_ControlBlockType* pWDICtx,
6383 WDI_EventInfoType* pEventData
6384)
6385{
6386
6387 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006388 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006389 ----------------------------------------------------------------------*/
6390 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6391 {
6392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006393 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006394 pWDICtx, pEventData);
6395 return WDI_STATUS_E_FAILURE;
6396 }
6397
6398 wpalMutexAcquire(&pWDICtx->wptMutex);
6399
6400 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006401 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006402 ----------------------------------------------------------------------*/
6403 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6404 {
6405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6406 "Control Transport not yet Open - queueing the request");
6407
6408 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006409 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006410
6411 wpalMutexRelease(&pWDICtx->wptMutex);
6412 return WDI_STATUS_PENDING;
6413 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006414
Jeff Johnson295189b2012-06-20 16:38:30 -07006415 wpalMutexRelease(&pWDICtx->wptMutex);
6416
6417 /*Return Success*/
6418 return WDI_ProcessRequest( pWDICtx, pEventData );
6419
6420}/*WDI_MainStart*/
6421
6422/**
6423 @brief Main FSM Response function for state INIT
6424
Jeff Johnsone7245742012-09-05 17:12:55 -07006425
6426 @param pWDICtx: pointer to the WLAN DAL context
6427 pEventData: pointer to the event information structure
6428
Jeff Johnson295189b2012-06-20 16:38:30 -07006429 @see
6430 @return Result of the function call
6431*/
6432WDI_Status
6433WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006434(
Jeff Johnson295189b2012-06-20 16:38:30 -07006435 WDI_ControlBlockType* pWDICtx,
6436 WDI_EventInfoType* pEventData
6437)
6438{
6439 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006440 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006441 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006442 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006443
6444 /*Return Success*/
6445 return WDI_STATUS_E_NOT_ALLOWED;
6446}/* WDI_MainRspInit */
6447
6448/**
6449 @brief Main FSM Close function for all states except BUSY
6450
Jeff Johnsone7245742012-09-05 17:12:55 -07006451
6452 @param pWDICtx: pointer to the WLAN DAL context
6453 pEventData: pointer to the event information structure
6454
Jeff Johnson295189b2012-06-20 16:38:30 -07006455 @see
6456 @return Result of the function call
6457*/
6458WDI_Status
6459WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006460(
Jeff Johnson295189b2012-06-20 16:38:30 -07006461 WDI_ControlBlockType* pWDICtx,
6462 WDI_EventInfoType* pEventData
6463)
6464{
6465
6466 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006467 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006468 ----------------------------------------------------------------------*/
6469 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6470 {
6471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006472 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006473 pWDICtx, pEventData);
6474 return WDI_STATUS_E_FAILURE;
6475 }
6476
6477 /*Return Success*/
6478 return WDI_ProcessRequest( pWDICtx, pEventData );
6479
6480}/*WDI_MainClose*/
6481/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006482 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006483--------------------------------------------------------------------------*/
6484/**
6485 @brief Main FSM Start function for state STARTED
6486
Jeff Johnsone7245742012-09-05 17:12:55 -07006487
6488 @param pWDICtx: pointer to the WLAN DAL context
6489 pEventData: pointer to the event information structure
6490
Jeff Johnson295189b2012-06-20 16:38:30 -07006491 @see
6492 @return Result of the function call
6493*/
6494WDI_Status
6495WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006496(
Jeff Johnson295189b2012-06-20 16:38:30 -07006497 WDI_ControlBlockType* pWDICtx,
6498 WDI_EventInfoType* pEventData
6499)
6500{
6501 WDI_StartRspCb wdiStartRspCb = NULL;
6502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6503
6504 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006505 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006506 ----------------------------------------------------------------------*/
6507 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6508 {
6509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006510 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006511 pWDICtx, pEventData);
6512 return WDI_STATUS_E_FAILURE;
6513 }
6514
6515 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006516 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006517 ----------------------------------------------------------------------*/
6518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006519 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006520
6521 wpalMutexAcquire(&pWDICtx->wptMutex);
6522
6523 /*Transition back to started because the post function transitioned us to
6524 busy*/
6525 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6526
6527 /*Check to see if any request is pending*/
6528 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006529
Jeff Johnson295189b2012-06-20 16:38:30 -07006530 wpalMutexRelease(&pWDICtx->wptMutex);
6531
6532 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006533 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6534
Jeff Johnson295189b2012-06-20 16:38:30 -07006535 /*Notify UMAC*/
6536 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6537
6538 /*Return Success*/
6539 return WDI_STATUS_SUCCESS;
6540
6541}/*WDI_MainStartStarted*/
6542
6543/**
6544 @brief Main FSM Stop 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_MainStopStarted
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 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006561 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006562 ----------------------------------------------------------------------*/
6563 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6564 {
6565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006566 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006567 pWDICtx, pEventData);
6568 return WDI_STATUS_E_FAILURE;
6569 }
6570
6571 /*State at this point is BUSY - because we enter this state before posting
6572 an event to the FSM in order to prevent potential race conditions*/
6573
6574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6575 "Processing stop request in FSM");
6576
6577 /*Return Success*/
6578 return WDI_ProcessRequest( pWDICtx, pEventData );
6579
6580}/*WDI_MainStopStarted*/
6581/**
6582 @brief Main FSM Request function for state started
6583
Jeff Johnsone7245742012-09-05 17:12:55 -07006584
6585 @param pWDICtx: pointer to the WLAN DAL context
6586 pEventData: pointer to the event information structure
6587
Jeff Johnson295189b2012-06-20 16:38:30 -07006588 @see
6589 @return Result of the function call
6590*/
6591WDI_Status
6592WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006593(
Jeff Johnson295189b2012-06-20 16:38:30 -07006594 WDI_ControlBlockType* pWDICtx,
6595 WDI_EventInfoType* pEventData
6596)
6597{
6598
6599 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006600 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006601 ----------------------------------------------------------------------*/
6602 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6603 {
6604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006605 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006606 pWDICtx, pEventData);
6607 return WDI_STATUS_E_FAILURE;
6608 }
6609
6610 /*State at this point is BUSY - because we enter this state before posting
6611 an event to the FSM in order to prevent potential race conditions*/
6612
6613 /*Return Success*/
6614 return WDI_ProcessRequest( pWDICtx, pEventData );
6615
6616}/*WDI_MainReqStarted*/
6617
6618/**
6619 @brief Main FSM Response function for all states except INIT
6620
Jeff Johnsone7245742012-09-05 17:12:55 -07006621
6622 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006623 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006624
Jeff Johnson295189b2012-06-20 16:38:30 -07006625 @see
6626 @return Result of the function call
6627*/
6628WDI_Status
6629WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006630(
Jeff Johnson295189b2012-06-20 16:38:30 -07006631 WDI_ControlBlockType* pWDICtx,
6632 WDI_EventInfoType* pEventData
6633)
6634{
Jeff Johnsone7245742012-09-05 17:12:55 -07006635 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006636 wpt_boolean expectedResponse;
6637
6638 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006639 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006640 ----------------------------------------------------------------------*/
6641 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6642 {
6643 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006644 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006645 pWDICtx, pEventData);
6646 return WDI_STATUS_E_FAILURE;
6647 }
6648
6649 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6650 {
6651 /* we received an expected response */
6652 expectedResponse = eWLAN_PAL_TRUE;
6653
6654 /*We expect that we will transition to started after this processing*/
6655 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6656
6657 /* we are no longer expecting a response */
6658 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6659 }
6660 else
6661 {
6662 /* we received an indication or unexpected response */
6663 expectedResponse = eWLAN_PAL_FALSE;
6664 /* for indications no need to update state from what it is right
6665 now, unless it explicitly does it in the indication handler (say
6666 for device failure ind) */
6667 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6668 }
6669
6670 /*Process the response and indication */
6671 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6672
6673 /*Lock the CB as we are about to do a state transition*/
6674 wpalMutexAcquire(&pWDICtx->wptMutex);
6675
6676 /*Transition to the expected state after the response processing
6677 - this should always be started state with the following exceptions:
6678 1. processing of a failed start response
6679 2. device failure detected while processing response
6680 3. stop response received*/
6681 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006682
Jeff Johnson295189b2012-06-20 16:38:30 -07006683 /*Dequeue request that may have been queued while we were waiting for the
6684 response */
6685 if ( expectedResponse )
6686 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006687 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006688 }
6689
6690 wpalMutexRelease(&pWDICtx->wptMutex);
6691
6692 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006693 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006694
6695}/*WDI_MainRsp*/
6696
6697/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006698 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006699--------------------------------------------------------------------------*/
6700/**
6701 @brief Main FSM Stop function for state STOPPED
6702
Jeff Johnsone7245742012-09-05 17:12:55 -07006703
6704 @param pWDICtx: pointer to the WLAN DAL context
6705 pEventData: pointer to the event information structure
6706
Jeff Johnson295189b2012-06-20 16:38:30 -07006707 @see
6708 @return Result of the function call
6709*/
6710WDI_Status
6711WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006712(
Jeff Johnson295189b2012-06-20 16:38:30 -07006713 WDI_ControlBlockType* pWDICtx,
6714 WDI_EventInfoType* pEventData
6715)
6716{
6717 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006718 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006719 ----------------------------------------------------------------------*/
6720 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6721 {
6722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006723 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006724 pWDICtx, pEventData);
6725 return WDI_STATUS_E_FAILURE;
6726 }
6727
6728 /*We should normally not get a STOP request if we are already stopped
6729 since we should normally be stopped by the UMAC. However in some
6730 error situations we put ourselves in the stopped state without the
6731 UMAC knowing, so when we get a STOP request in this state we still
6732 process it since we need to clean up the underlying state */
6733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6734 "Processing stop request while stopped in FSM");
6735
6736 /*Return Success*/
6737 return WDI_ProcessRequest( pWDICtx, pEventData );
6738
6739}/*WDI_MainStopStopped*/
6740
6741/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006742 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006743--------------------------------------------------------------------------*/
6744/**
6745 @brief Main FSM Start function for state BUSY
6746
Jeff Johnsone7245742012-09-05 17:12:55 -07006747
6748 @param pWDICtx: pointer to the WLAN DAL context
6749 pEventData: pointer to the event information structure
6750
Jeff Johnson295189b2012-06-20 16:38:30 -07006751 @see
6752 @return Result of the function call
6753*/
6754WDI_Status
6755WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006756(
Jeff Johnson295189b2012-06-20 16:38:30 -07006757 WDI_ControlBlockType* pWDICtx,
6758 WDI_EventInfoType* pEventData
6759)
6760{
6761 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006762 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006763 ----------------------------------------------------------------------*/
6764 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6765 {
6766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006767 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006768 pWDICtx, pEventData);
6769 return WDI_STATUS_E_FAILURE;
6770 }
6771
6772 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006773 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006774 ----------------------------------------------------------------------*/
6775 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6776 "WDI Busy state - queue start request");
6777
6778 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006779 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006780
6781 /*Return Success*/
6782 return WDI_STATUS_PENDING;
6783}/*WDI_MainStartBusy*/
6784
6785/**
6786 @brief Main FSM Stop function for state BUSY
6787
Jeff Johnsone7245742012-09-05 17:12:55 -07006788
6789 @param pWDICtx: pointer to the WLAN DAL context
6790 pEventData: pointer to the event information structure
6791
Jeff Johnson295189b2012-06-20 16:38:30 -07006792 @see
6793 @return Result of the function call
6794*/
6795WDI_Status
6796WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006797(
Jeff Johnson295189b2012-06-20 16:38:30 -07006798 WDI_ControlBlockType* pWDICtx,
6799 WDI_EventInfoType* pEventData
6800)
6801{
6802 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006803 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006804 ----------------------------------------------------------------------*/
6805 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6806 {
6807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006808 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006809 pWDICtx, pEventData);
6810 return WDI_STATUS_E_FAILURE;
6811 }
6812
6813 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006814 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006815 ----------------------------------------------------------------------*/
6816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6817 "WDI Busy state - queue stop request");
6818
Jeff Johnsone7245742012-09-05 17:12:55 -07006819 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006820 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006821
Jeff Johnson295189b2012-06-20 16:38:30 -07006822}/*WDI_MainStopBusy*/
6823
6824/**
6825 @brief Main FSM Request function for state BUSY
6826
Jeff Johnsone7245742012-09-05 17:12:55 -07006827
6828 @param pWDICtx: pointer to the WLAN DAL context
6829 pEventData: pointer to the event information structure
6830
Jeff Johnson295189b2012-06-20 16:38:30 -07006831 @see
6832 @return Result of the function call
6833*/
6834WDI_Status
6835WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006836(
Jeff Johnson295189b2012-06-20 16:38:30 -07006837 WDI_ControlBlockType* pWDICtx,
6838 WDI_EventInfoType* pEventData
6839)
6840{
6841 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006842 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006843 ----------------------------------------------------------------------*/
6844 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6845 {
6846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006847 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006848 pWDICtx, pEventData);
6849 return WDI_STATUS_E_FAILURE;
6850 }
6851
6852 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006853 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006854 ----------------------------------------------------------------------*/
6855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6856 "WDI Busy state - queue request %d because waiting for response %d",
6857 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6858
Jeff Johnsone7245742012-09-05 17:12:55 -07006859 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006860 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006861
Jeff Johnson295189b2012-06-20 16:38:30 -07006862}/*WDI_MainReqBusy*/
6863/**
6864 @brief Main FSM Close function for state BUSY
6865
Jeff Johnsone7245742012-09-05 17:12:55 -07006866
6867 @param pWDICtx: pointer to the WLAN DAL context
6868 pEventData: pointer to the event information structure
6869
Jeff Johnson295189b2012-06-20 16:38:30 -07006870 @see
6871 @return Result of the function call
6872*/
6873WDI_Status
6874WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006875(
Jeff Johnson295189b2012-06-20 16:38:30 -07006876 WDI_ControlBlockType* pWDICtx,
6877 WDI_EventInfoType* pEventData
6878)
6879{
6880 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006881 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006882 ----------------------------------------------------------------------*/
6883 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6884 {
6885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006886 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006887 pWDICtx, pEventData);
6888 return WDI_STATUS_E_FAILURE;
6889 }
6890
6891 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006892 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006893 ----------------------------------------------------------------------*/
6894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6895 "WDI Busy state - queue close request");
6896
Jeff Johnsone7245742012-09-05 17:12:55 -07006897 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006898 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006899
Jeff Johnson295189b2012-06-20 16:38:30 -07006900}/*WDI_MainCloseBusy*/
6901
6902/**
6903 @brief Main FSM Shutdown function for INIT & STARTED states
6904
6905
6906 @param pWDICtx: pointer to the WLAN DAL context
6907 pEventData: pointer to the event information structure
6908
6909 @see
6910 @return Result of the function call
6911*/
6912WDI_Status
6913WDI_MainShutdown
6914(
6915 WDI_ControlBlockType* pWDICtx,
6916 WDI_EventInfoType* pEventData
6917)
6918{
6919 /*--------------------------------------------------------------------
6920 Sanity Check
6921 ----------------------------------------------------------------------*/
6922 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6923 {
6924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006925 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006926 pWDICtx, pEventData);
6927 return WDI_STATUS_E_FAILURE;
6928 }
6929
6930 /*State at this point is BUSY - because we enter this state before posting
6931 an event to the FSM in order to prevent potential race conditions*/
6932
6933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6934 "Processing shutdown request in FSM");
6935
6936 /*Return Success*/
6937 return WDI_ProcessRequest( pWDICtx, pEventData );
6938
6939}/*WDI_MainShutdown*/
6940
6941/**
6942 @brief Main FSM Shutdown function for BUSY state
6943
6944
6945 @param pWDICtx: pointer to the WLAN DAL context
6946 pEventData: pointer to the event information structure
6947
6948 @see
6949 @return Result of the function call
6950*/
6951WDI_Status
6952WDI_MainShutdownBusy
6953(
6954 WDI_ControlBlockType* pWDICtx,
6955 WDI_EventInfoType* pEventData
6956)
6957{
6958 /*--------------------------------------------------------------------
6959 Sanity Check
6960 ----------------------------------------------------------------------*/
6961 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6962 {
6963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006964 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006965 pWDICtx, pEventData);
6966 return WDI_STATUS_E_FAILURE;
6967 }
6968
6969 /* If you are waiting for a HAL response at this stage, you are not
6970 * going to get it. Riva is already shutdown/crashed.
6971 */
6972 wpalTimerStop(&gWDICb.wptResponseTimer);
6973
6974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6975 "Processing shutdown request in FSM: Busy state ");
6976
6977 return WDI_ProcessRequest( pWDICtx, pEventData );
6978
6979}/*WDI_MainShutdownBusy*/
6980
6981
Jeff Johnsone7245742012-09-05 17:12:55 -07006982/*=======================================================================
6983
Jeff Johnson295189b2012-06-20 16:38:30 -07006984 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006985
Jeff Johnson295189b2012-06-20 16:38:30 -07006986*=======================================================================*/
6987
6988/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006989 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006990========================================================================*/
6991/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006992 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006993 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006994
6995 @param pWDICtx: pointer to the WLAN DAL context
6996 pEventData: pointer to the event information structure
6997
Jeff Johnson295189b2012-06-20 16:38:30 -07006998 @see
6999 @return Result of the function call
7000*/
7001WDI_Status
7002WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007003(
Jeff Johnson295189b2012-06-20 16:38:30 -07007004 WDI_ControlBlockType* pWDICtx,
7005 WDI_EventInfoType* pEventData
7006)
7007{
7008 WDI_StartReqParamsType* pwdiStartParams = NULL;
7009 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007010 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007011 wpt_uint16 usDataOffset = 0;
7012 wpt_uint16 usSendSize = 0;
7013
Jeff Johnsone7245742012-09-05 17:12:55 -07007014 tHalMacStartReqMsg halStartReq;
7015 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7017
7018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007019 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007020 -------------------------------------------------------------------------*/
7021 if (( NULL == pEventData ) ||
7022 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7023 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7024 {
7025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007029 }
7030
7031 /*-----------------------------------------------------------------------
7032 Get message buffer
7033 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007034 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007035 pwdiStartParams->usConfigBufferLen;
7036
Jeff Johnsone7245742012-09-05 17:12:55 -07007037 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007038 usLen,
7039 &pSendBuffer, &usDataOffset, &usSendSize))||
7040 ( usSendSize < (usDataOffset + usLen )))
7041 {
7042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007043 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007044 pEventData, pwdiStartParams, wdiStartRspCb);
7045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007047 }
7048
7049 /*-----------------------------------------------------------------------
7050 Fill in the message
7051 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007052 halStartReq.startReqParams.driverType =
7053 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007054
Jeff Johnsone7245742012-09-05 17:12:55 -07007055 halStartReq.startReqParams.uConfigBufferLen =
7056 pwdiStartParams->usConfigBufferLen;
7057 wpalMemoryCopy( pSendBuffer+usDataOffset,
7058 &halStartReq.startReqParams,
7059 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007060
Jeff Johnsone7245742012-09-05 17:12:55 -07007061 usDataOffset += sizeof(halStartReq.startReqParams);
7062 wpalMemoryCopy( pSendBuffer+usDataOffset,
7063 pwdiStartParams->pConfigBuffer,
7064 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007065
7066 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007067 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007068
7069 /*Save Low Level Ind CB and associated user data - it will be used further
7070 on when an indication is coming from the lower MAC*/
7071 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007072 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007073
Jeff Johnsone7245742012-09-05 17:12:55 -07007074 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007075 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007076 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007077 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007078 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007079 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7080
Jeff Johnsone7245742012-09-05 17:12:55 -07007081
Jeff Johnson295189b2012-06-20 16:38:30 -07007082}/*WDI_ProcessStartReq*/
7083
7084/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007085 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007086 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007087
7088 @param pWDICtx: pointer to the WLAN DAL context
7089 pEventData: pointer to the event information structure
7090
Jeff Johnson295189b2012-06-20 16:38:30 -07007091 @see
7092 @return Result of the function call
7093*/
7094WDI_Status
7095WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007096(
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 WDI_ControlBlockType* pWDICtx,
7098 WDI_EventInfoType* pEventData
7099)
7100{
7101 WDI_StopReqParamsType* pwdiStopParams = NULL;
7102 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007103 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007104 wpt_uint16 usDataOffset = 0;
7105 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007106 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007107 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7109
7110 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007111 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007112 -------------------------------------------------------------------------*/
7113 if (( NULL == pEventData ) ||
7114 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7115 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7116 {
7117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007118 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007119 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007120 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007121 }
7122
7123 /*-----------------------------------------------------------------------
7124 Get message buffer
7125 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007126 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007127 sizeof(halStopReq.stopReqParams),
7128 &pSendBuffer, &usDataOffset, &usSendSize))||
7129 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7130 {
7131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007132 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007133 pEventData, pwdiStopParams, wdiStopRspCb);
7134 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007135 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007136 }
7137
7138 /*-----------------------------------------------------------------------
7139 Fill in the message
7140 -----------------------------------------------------------------------*/
7141 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7142 pwdiStopParams->wdiStopReason);
7143
Jeff Johnsone7245742012-09-05 17:12:55 -07007144 wpalMemoryCopy( pSendBuffer+usDataOffset,
7145 &halStopReq.stopReqParams,
7146 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007147
7148 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007149 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007150
7151 /*! TO DO: stop the data services */
7152 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7153 {
7154 /*Stop the STA Table !UT- check this logic again
7155 It is safer to do it here than on the response - because a stop is imminent*/
7156 WDI_STATableStop(pWDICtx);
7157
7158 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007159 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7160 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007161 {
7162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7163 "WDI Init failed to reset power state event");
7164
Jeff Johnsone7245742012-09-05 17:12:55 -07007165 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007166 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007167 }
7168 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007169 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7170 if( eWLAN_PAL_STATUS_SUCCESS != status )
7171 {
7172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007173 "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 -08007174 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007175 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007176 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007177 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007178 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007179 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007180 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7181 WDI_SET_POWER_STATE_TIMEOUT);
7182 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007183 {
7184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7185 "WDI Init failed to wait on an event");
7186
Jeff Johnsone7245742012-09-05 17:12:55 -07007187 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007188 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007189 }
7190 }
7191
7192 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007193 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007194 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007195 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007196 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7197
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007198fail:
7199 // Release the message buffer so we don't leak
7200 wpalMemoryFree(pSendBuffer);
7201
7202failRequest:
7203 //WDA should have failure check to avoid the memory leak
7204 return WDI_STATUS_E_FAILURE;
7205
Jeff Johnson295189b2012-06-20 16:38:30 -07007206}/*WDI_ProcessStopReq*/
7207
7208/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007209 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007210 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007211
7212 @param pWDICtx: pointer to the WLAN DAL context
7213 pEventData: pointer to the event information structure
7214
Jeff Johnson295189b2012-06-20 16:38:30 -07007215 @see
7216 @return Result of the function call
7217*/
7218WDI_Status
7219WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007220(
Jeff Johnson295189b2012-06-20 16:38:30 -07007221 WDI_ControlBlockType* pWDICtx,
7222 WDI_EventInfoType* pEventData
7223)
7224{
Jeff Johnsone7245742012-09-05 17:12:55 -07007225 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7227
7228 /*Lock control block for cleanup*/
7229 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007230
Jeff Johnson295189b2012-06-20 16:38:30 -07007231 /*Clear all pending request*/
7232 WDI_ClearPendingRequests(pWDICtx);
7233
7234 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007235 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007236
7237 /* Close Data transport*/
7238 /* FTM mode does not open Data Path */
7239 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7240 {
7241 WDTS_Close(pWDICtx);
7242 }
7243
7244 /*Close the STA Table !UT- check this logic again*/
7245 WDI_STATableClose(pWDICtx);
7246
7247 /*close the PAL */
7248 wptStatus = wpalClose(pWDICtx->pPALContext);
7249 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7250 {
7251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7252 "Failed to wpal Close %d", wptStatus);
7253 WDI_ASSERT(0);
7254 }
7255
7256 /*Transition back to init state*/
7257 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7258
7259 wpalMutexRelease(&pWDICtx->wptMutex);
7260
7261 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007262 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007263
Jeff Johnsone7245742012-09-05 17:12:55 -07007264 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007265}/*WDI_ProcessCloseReq*/
7266
7267
7268/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007269 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007270===========================================================================*/
7271
7272/**
7273 @brief Process Init Scan Request function (called when Main FSM
7274 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007275
7276 @param pWDICtx: pointer to the WLAN DAL context
7277 pEventData: pointer to the event information structure
7278
Jeff Johnson295189b2012-06-20 16:38:30 -07007279 @see
7280 @return Result of the function call
7281*/
7282WDI_Status
7283WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007284(
Jeff Johnson295189b2012-06-20 16:38:30 -07007285 WDI_ControlBlockType* pWDICtx,
7286 WDI_EventInfoType* pEventData
7287)
7288{
7289 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7290 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007291 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007292 wpt_uint16 usDataOffset = 0;
7293 wpt_uint16 usSendSize = 0;
7294 wpt_uint8 i = 0;
7295
7296 tHalInitScanReqMsg halInitScanReqMsg;
7297
Jeff Johnsone7245742012-09-05 17:12:55 -07007298 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007299 * It shold be removed once host and riva changes are in sync*/
7300 tHalInitScanConReqMsg halInitScanConReqMsg;
7301
7302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7303
7304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007306 -------------------------------------------------------------------------*/
7307 if (( NULL == pEventData ) ||
7308 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7309 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7310 {
7311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007315 }
7316
7317#if 0
7318 wpalMutexAcquire(&pWDICtx->wptMutex);
7319 /*-----------------------------------------------------------------------
7320 Check to see if SCAN is already in progress - if so reject the req
7321 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007322 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007323 -----------------------------------------------------------------------*/
7324 if ( pWDICtx->bScanInProgress )
7325 {
7326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7327 "Scan is already in progress - subsequent scan is not allowed"
7328 " until the first scan completes");
7329
7330 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 }
7333
Jeff Johnsone7245742012-09-05 17:12:55 -07007334 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7335 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007336
7337 wpalMutexRelease(&pWDICtx->wptMutex);
7338#endif
Viral Modid86bde22012-12-10 13:09:21 -08007339 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007340 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007341 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007342 * It shold be removed once host and riva changes are in sync*/
7343 /*-----------------------------------------------------------------------
7344 Get message buffer
7345 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007346 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007347 sizeof(halInitScanConReqMsg.initScanParams),
7348 &pSendBuffer, &usDataOffset, &usSendSize))||
7349 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7350 {
7351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007352 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007353 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007356 }
7357
7358
7359 /*-----------------------------------------------------------------------
7360 Fill in the message
7361 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007362 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7364
7365 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7366 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7367
Jeff Johnsone7245742012-09-05 17:12:55 -07007368 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007369 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007370 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007371 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007372 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007373 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7374
7375 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7376 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7377
Jeff Johnson295189b2012-06-20 16:38:30 -07007378 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7379 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007380
Jeff Johnsone7245742012-09-05 17:12:55 -07007381 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007382 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7383
7384 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7385 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007386 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007387 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7388 }
7389
Jeff Johnsone7245742012-09-05 17:12:55 -07007390 wpalMemoryCopy( pSendBuffer+usDataOffset,
7391 &halInitScanConReqMsg.initScanParams,
7392 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007393 }
7394 else
7395 {
7396 /*-----------------------------------------------------------------------
7397 Get message buffer
7398 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007399 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007400 sizeof(halInitScanReqMsg.initScanParams),
7401 &pSendBuffer, &usDataOffset, &usSendSize))||
7402 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7403 {
7404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007405 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007406 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007409 }
7410
7411
7412 /*-----------------------------------------------------------------------
7413 Fill in the message
7414 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007415 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007416 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7417
7418 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7419 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7420
Jeff Johnsone7245742012-09-05 17:12:55 -07007421 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007422 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007423 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007424 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007426 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7427
7428 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7429 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7430
Jeff Johnsone7245742012-09-05 17:12:55 -07007431 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007432 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7433
7434 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7435 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007436 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7438 }
7439
Jeff Johnsone7245742012-09-05 17:12:55 -07007440 wpalMemoryCopy( pSendBuffer+usDataOffset,
7441 &halInitScanReqMsg.initScanParams,
7442 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007443 }
7444
7445 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007446 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007447
7448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007449 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007450 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007451 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007452 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7453
7454}/*WDI_ProcessInitScanReq*/
7455
7456/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007457 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007458 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007459
7460 @param pWDICtx: pointer to the WLAN DAL context
7461 pEventData: pointer to the event information structure
7462
Jeff Johnson295189b2012-06-20 16:38:30 -07007463 @see
7464 @return Result of the function call
7465*/
7466WDI_Status
7467WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007468(
Jeff Johnson295189b2012-06-20 16:38:30 -07007469 WDI_ControlBlockType* pWDICtx,
7470 WDI_EventInfoType* pEventData
7471)
7472{
7473 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7474 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007475 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007476 wpt_uint16 usDataOffset = 0;
7477 wpt_uint16 usSendSize = 0;
7478
Jeff Johnsone7245742012-09-05 17:12:55 -07007479 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7481
7482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007483 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007484 -------------------------------------------------------------------------*/
7485 if (( NULL == pEventData ) ||
7486 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7487 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7488 {
7489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007490 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007493 }
7494
7495#if 0
7496 wpalMutexAcquire(&pWDICtx->wptMutex);
7497 /*-----------------------------------------------------------------------
7498 Check to see if SCAN is already in progress - start scan is only
7499 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007500 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007501 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007502 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7504 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7505 {
7506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7507 "Scan start not allowed in this state %d %d",
7508 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007509
Jeff Johnson295189b2012-06-20 16:38:30 -07007510 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007511 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007512 }
7513
Jeff Johnsone7245742012-09-05 17:12:55 -07007514 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007515
7516 wpalMutexRelease(&pWDICtx->wptMutex);
7517#endif
7518
7519 /*-----------------------------------------------------------------------
7520 Get message buffer
7521 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007522 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007523 sizeof(halStartScanReqMsg.startScanParams),
7524 &pSendBuffer, &usDataOffset, &usSendSize))||
7525 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7526 {
7527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007528 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007529 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7530 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007531 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007532 }
7533
Jeff Johnsone7245742012-09-05 17:12:55 -07007534 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007535 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007536 wpalMemoryCopy( pSendBuffer+usDataOffset,
7537 &halStartScanReqMsg.startScanParams,
7538 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007539
7540 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007541 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007542
7543 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007544 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007545 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007546 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007547 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7548}/*WDI_ProcessStartScanReq*/
7549
7550
7551/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007552 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007553 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007554
7555 @param pWDICtx: pointer to the WLAN DAL context
7556 pEventData: pointer to the event information structure
7557
Jeff Johnson295189b2012-06-20 16:38:30 -07007558 @see
7559 @return Result of the function call
7560*/
7561WDI_Status
7562WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007563(
Jeff Johnson295189b2012-06-20 16:38:30 -07007564 WDI_ControlBlockType* pWDICtx,
7565 WDI_EventInfoType* pEventData
7566)
7567{
7568 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7569 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007570 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007571 wpt_uint16 usDataOffset = 0;
7572 wpt_uint16 usSendSize = 0;
7573
Jeff Johnsone7245742012-09-05 17:12:55 -07007574 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7576
7577 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007578 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007579 -------------------------------------------------------------------------*/
7580 if (( NULL == pEventData ) ||
7581 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7582 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7583 {
7584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007585 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007588 }
7589
Jeff Johnsone7245742012-09-05 17:12:55 -07007590 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7591 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007592 * forwarded to HAL and result in hang*/
7593#if 0
7594 wpalMutexAcquire(&pWDICtx->wptMutex);
7595 /*-----------------------------------------------------------------------
7596 Check to see if SCAN is already in progress - end scan is only
7597 allowed when a scan is ongoing and the state of the scan procedure
7598 is started
7599 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007600 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007601 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7602 {
7603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7604 "End start not allowed in this state %d %d",
7605 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007606
Jeff Johnson295189b2012-06-20 16:38:30 -07007607 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007608 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007609 }
7610
Jeff Johnsone7245742012-09-05 17:12:55 -07007611 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007612
7613 wpalMutexRelease(&pWDICtx->wptMutex);
7614#endif
7615
7616 /*-----------------------------------------------------------------------
7617 Get message buffer
7618 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007619 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007620 sizeof(halEndScanReqMsg.endScanParams),
7621 &pSendBuffer, &usDataOffset, &usSendSize))||
7622 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7623 {
7624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007625 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007626 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007629 }
7630
7631 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7632
Jeff Johnsone7245742012-09-05 17:12:55 -07007633 wpalMemoryCopy( pSendBuffer+usDataOffset,
7634 &halEndScanReqMsg.endScanParams,
7635 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007636
7637 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007638 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007639
7640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007641 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007642 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007643 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007644 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7645}/*WDI_ProcessEndScanReq*/
7646
7647
7648/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007649 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007650 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007651
7652 @param pWDICtx: pointer to the WLAN DAL context
7653 pEventData: pointer to the event information structure
7654
Jeff Johnson295189b2012-06-20 16:38:30 -07007655 @see
7656 @return Result of the function call
7657*/
7658WDI_Status
7659WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007660(
Jeff Johnson295189b2012-06-20 16:38:30 -07007661 WDI_ControlBlockType* pWDICtx,
7662 WDI_EventInfoType* pEventData
7663)
7664{
7665 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7666 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007667 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 wpt_uint16 usDataOffset = 0;
7669 wpt_uint16 usSendSize = 0;
7670 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08007671 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007672 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7674
7675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007676 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007677 -------------------------------------------------------------------------*/
7678 if (( NULL == pEventData ) ||
7679 ( NULL == pEventData->pEventData) ||
7680 ( NULL == pEventData->pCBfnc))
7681 {
7682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007683 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007686 }
7687
7688 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7689 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007690 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7691 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007692 * forwarded to HAL and result in hang*/
7693#if 0
7694 wpalMutexAcquire(&pWDICtx->wptMutex);
7695 /*-----------------------------------------------------------------------
7696 Check to see if SCAN is already in progress
7697 Finish scan gets invoked any scan states. ie. abort scan
7698 It should be allowed in any states.
7699 -----------------------------------------------------------------------*/
7700 if ( !pWDICtx->bScanInProgress )
7701 {
7702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7703 "Finish start not allowed in this state %d",
7704 pWDICtx->bScanInProgress );
7705
7706 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08007707 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007708 }
7709
7710 /*-----------------------------------------------------------------------
7711 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007712 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007713 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007714 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7715 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007716 wpalMutexRelease(&pWDICtx->wptMutex);
7717#endif
7718
7719 if ( pWDICtx->bInBmps )
7720 {
7721 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08007722 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7723 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7724 {
7725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007726 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08007727 WDI_ASSERT(0);
7728 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 }
7730
7731 /*-----------------------------------------------------------------------
7732 Get message buffer
7733 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 sizeof(halFinishScanReqMsg.finishScanParams),
7736 &pSendBuffer, &usDataOffset, &usSendSize))||
7737 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7738 {
7739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007740 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007741 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007744 }
7745
Jeff Johnsone7245742012-09-05 17:12:55 -07007746 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007747 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7748
Jeff Johnsone7245742012-09-05 17:12:55 -07007749 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007750 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7751
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7754
7755 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7756 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7757
Jeff Johnsone7245742012-09-05 17:12:55 -07007758 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007759 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007760 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007761 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007762 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007763 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7764
Jeff Johnsone7245742012-09-05 17:12:55 -07007765 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7767
7768 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7769 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007770 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007771 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7772 }
7773
7774 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7775 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7776
Jeff Johnsone7245742012-09-05 17:12:55 -07007777 wpalMemoryCopy( pSendBuffer+usDataOffset,
7778 &halFinishScanReqMsg.finishScanParams,
7779 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007780
7781 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007782 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007783
7784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007785 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007786 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007787 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007788 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7789}/*WDI_ProcessFinishScanReq*/
7790
7791
7792/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007793 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007794==========================================================================*/
7795/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007796 @brief Process BSS Join for a given Session
7797
7798 @param pWDICtx: pointer to the WLAN DAL context
7799 pEventData: pointer to the event information structure
7800
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 @see
7802 @return Result of the function call
7803*/
7804WDI_Status
7805WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007806(
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 WDI_ControlBlockType* pWDICtx,
7808 WDI_JoinReqParamsType* pwdiJoinParams,
7809 WDI_JoinRspCb wdiJoinRspCb,
7810 void* pUserData
7811)
7812{
7813 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007814 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007815 wpt_uint16 usDataOffset = 0;
7816 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007818
Jeff Johnsone7245742012-09-05 17:12:55 -07007819 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7821
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007822 wpalMutexAcquire(&pWDICtx->wptMutex);
7823
Jeff Johnson295189b2012-06-20 16:38:30 -07007824 /*------------------------------------------------------------------------
7825 Check to see if we have any session with this BSSID already stored, we
7826 should not
7827 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007828 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7829 pwdiJoinParams->wdiReqInfo.macBSSID,
7830 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007831
7832 if ( NULL != pBSSSes )
7833 {
7834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007835 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7836 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007837
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007838 /*reset the bAssociationInProgress otherwise the next
7839 *join request will be queued*/
7840 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7841 wpalMutexRelease(&pWDICtx->wptMutex);
7842 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007843 }
7844
Jeff Johnson295189b2012-06-20 16:38:30 -07007845 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007846 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007847 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 if ( NULL == pBSSSes )
7850 {
7851
7852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7853 "DAL has no free sessions - cannot run another join");
7854
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007855 /*reset the bAssociationInProgress otherwise the next
7856 *join request will be queued*/
7857 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007858 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007859 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007860 }
7861
7862 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007863 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7864 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007865 WDI_MAC_ADDR_LEN);
7866
7867 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007868 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007869 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007870
Jeff Johnson295189b2012-06-20 16:38:30 -07007871 wpalMutexRelease(&pWDICtx->wptMutex);
7872
7873 /*-----------------------------------------------------------------------
7874 Get message buffer
7875 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007876 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007877 sizeof(halJoinReqMsg.joinReqParams),
7878 &pSendBuffer, &usDataOffset, &usSendSize))||
7879 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7880 {
7881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007882 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007883 pUserData, pwdiJoinParams, wdiJoinRspCb);
7884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007886 }
7887
7888 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007889 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007890
7891 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007892 pwdiJoinParams->wdiReqInfo.macSTASelf,
7893 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007894
Jeff Johnsone7245742012-09-05 17:12:55 -07007895 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007896 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7897
7898 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7899
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007900#ifdef WLAN_FEATURE_VOWIFI
7901 halJoinReqMsg.joinReqParams.maxTxPower =
7902 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7903#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007904 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007905 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7906#endif
7907
Jeff Johnsone7245742012-09-05 17:12:55 -07007908 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007909 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7910 wdiSecondaryChannelOffset);
7911
Jeff Johnsone7245742012-09-05 17:12:55 -07007912 wpalMemoryCopy( pSendBuffer+usDataOffset,
7913 &halJoinReqMsg.joinReqParams,
7914 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007915
7916 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007917 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007918
7919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007920 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007921 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7923 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007924
7925}/*WDI_ProcessBSSSessionJoinReq*/
7926
7927/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007928 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007929 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007930
7931 @param pWDICtx: pointer to the WLAN DAL context
7932 pEventData: pointer to the event information structure
7933
Jeff Johnson295189b2012-06-20 16:38:30 -07007934 @see
7935 @return Result of the function call
7936*/
7937WDI_Status
7938WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007939(
Jeff Johnson295189b2012-06-20 16:38:30 -07007940 WDI_ControlBlockType* pWDICtx,
7941 WDI_EventInfoType* pEventData
7942)
7943{
7944 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7945 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7946 WDI_JoinRspCb wdiJoinRspCb = NULL;
7947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7948
7949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007951 -------------------------------------------------------------------------*/
7952 if (( NULL == pEventData ) ||
7953 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7954 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7955 {
7956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007957 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007960 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007961
Jeff Johnson295189b2012-06-20 16:38:30 -07007962 /*-------------------------------------------------------------------------
7963 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007964 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007965 -------------------------------------------------------------------------*/
7966 wpalMutexAcquire(&pWDICtx->wptMutex);
7967
7968 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7969 {
7970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7971 "Association is currently in progress, queueing new join req");
7972
7973 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007974 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007975 pwdiJoinParams->wdiReqInfo.macBSSID);
7976
7977 wpalMutexRelease(&pWDICtx->wptMutex);
7978
Jeff Johnsone7245742012-09-05 17:12:55 -07007979 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 }
7981
7982 /*Starting a new association */
7983 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7984 wpalMutexRelease(&pWDICtx->wptMutex);
7985
7986 /*Process the Join Request*/
7987 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7988 wdiJoinRspCb,pEventData->pUserData);
7989
7990}/*WDI_ProcessJoinReq*/
7991
7992
7993/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007994 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007995 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007996
7997 @param pWDICtx: pointer to the WLAN DAL context
7998 pEventData: pointer to the event information structure
7999
Jeff Johnson295189b2012-06-20 16:38:30 -07008000 @see
8001 @return Result of the function call
8002*/
8003WDI_Status
8004WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008005(
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 WDI_ControlBlockType* pWDICtx,
8007 WDI_EventInfoType* pEventData
8008)
8009{
8010 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8011 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008012 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008013 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008014 wpt_uint16 uMsgSize = 0;
8015 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008016 wpt_uint16 usDataOffset = 0;
8017 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008018 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008019
Jeff Johnsone7245742012-09-05 17:12:55 -07008020 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8022
8023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008024 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008025 -------------------------------------------------------------------------*/
8026 if (( NULL == pEventData ) ||
8027 ( NULL == pEventData->pEventData ) ||
8028 ( NULL == pEventData->pCBfnc ))
8029 {
8030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008031 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008032 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008034 }
8035
8036 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8037 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8038 /*-------------------------------------------------------------------------
8039 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008040 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008041 -------------------------------------------------------------------------*/
8042 wpalMutexAcquire(&pWDICtx->wptMutex);
8043
8044 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008045 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008046 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008047 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8048 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8049 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008050
Jeff Johnsone7245742012-09-05 17:12:55 -07008051 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008052 {
8053#ifdef WLAN_FEATURE_VOWIFI_11R
8054 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008055 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008056 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008057 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008058 if ( NULL == pBSSSes )
8059 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008060
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8062 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008063
Jeff Johnson295189b2012-06-20 16:38:30 -07008064 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008065 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008066 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008067
Jeff Johnson295189b2012-06-20 16:38:30 -07008068 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008069 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8070 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008071 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008072
Jeff Johnson295189b2012-06-20 16:38:30 -07008073 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008074 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008075 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8076#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008077 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008078 * Request in case of IBSS*/
8079 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8080 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8081 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8082 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8083 {
8084 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008085 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008086 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 if ( NULL == pBSSSes )
8089 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008090
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8092 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008093
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008095 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008096 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008097
Jeff Johnson295189b2012-06-20 16:38:30 -07008098 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008099 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8100 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008101 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008102
Jeff Johnson295189b2012-06-20 16:38:30 -07008103 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008105 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8106 }
8107 else
8108 {
8109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008110 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8111 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8112 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8113
Jeff Johnson295189b2012-06-20 16:38:30 -07008114 /* for IBSS testing */
8115 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008116 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008117 }
8118#endif
8119 }
8120
8121 /*------------------------------------------------------------------------
8122 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008123 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008124 ------------------------------------------------------------------------*/
8125 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8126 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8128 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8129 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8130 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008131
Jeff Johnsone7245742012-09-05 17:12:55 -07008132 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008133
8134 wpalMutexRelease(&pWDICtx->wptMutex);
8135
Jeff Johnsone7245742012-09-05 17:12:55 -07008136 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008137 }
8138
8139 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008140 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8141 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 sizeof(pWDICtx->wdiCachedConfigBssReq));
8143
8144 wpalMutexRelease(&pWDICtx->wptMutex);
8145
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8147#ifdef WLAN_FEATURE_11AC
8148 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008149 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008150 else
8151#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008152 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008153
8154 /*-----------------------------------------------------------------------
8155 Get message buffer
8156 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008157 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008158 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8159 ( usSendSize < (usDataOffset + uMsgSize )))
8160 {
8161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008162 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008163 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008166 }
8167
8168 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008169#ifdef WLAN_FEATURE_11AC
8170 if (WDI_getFwWlanFeatCaps(DOT11AC))
8171 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8172 &pwdiConfigBSSParams->wdiReqInfo);
8173 else
8174#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008175 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008176 &pwdiConfigBSSParams->wdiReqInfo);
8177
8178 /* Need to fill in the STA Index to invalid, since at this point we have not
8179 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008180 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008181
8182 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008183 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8184
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008185#ifdef WLAN_FEATURE_11AC
8186 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8187 wpalMemoryCopy( pSendBuffer+usDataOffset,
8188 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8189 uMsgSize);
8190 }else
8191#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008192 {
8193 if ( uMsgSize <= sizeof(tConfigBssParams) )
8194 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008195 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008196 &halConfigBssReqMsg.uBssParams.configBssParams,
8197 uMsgSize);
8198 }
8199 else
8200 {
8201 return WDI_STATUS_E_FAILURE;
8202 }
8203 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008204
8205 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008206 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008207
8208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008209 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008210 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008211 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8212 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008213 WDI_CONFIG_BSS_RESP);
8214
8215}/*WDI_ProcessConfigBSSReq*/
8216
8217
8218/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008219 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008220 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008221
8222 @param pWDICtx: pointer to the WLAN DAL context
8223 pEventData: pointer to the event information structure
8224
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 @see
8226 @return Result of the function call
8227*/
8228WDI_Status
8229WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008230(
Jeff Johnson295189b2012-06-20 16:38:30 -07008231 WDI_ControlBlockType* pWDICtx,
8232 WDI_EventInfoType* pEventData
8233)
8234{
8235 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8236 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008237 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008238 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008239 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008240 wpt_uint16 usDataOffset = 0;
8241 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008243
Jeff Johnsone7245742012-09-05 17:12:55 -07008244 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8246
8247 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008248 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008249 -------------------------------------------------------------------------*/
8250 if (( NULL == pEventData ) ||
8251 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8252 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8253 {
8254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008258 }
8259
8260 /*-------------------------------------------------------------------------
8261 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008262 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008263 -------------------------------------------------------------------------*/
8264 wpalMutexAcquire(&pWDICtx->wptMutex);
8265
8266 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008267 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008268 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008269 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8270 pwdiDelBSSParams->ucBssIdx,
8271 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008272
Jeff Johnsone7245742012-09-05 17:12:55 -07008273 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 {
8275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008276 "%s: BSS does not yet exist. ucBssIdx %d",
8277 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008278
8279 wpalMutexRelease(&pWDICtx->wptMutex);
8280
8281 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008282 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008283
8284 /*------------------------------------------------------------------------
8285 Check if this BSS is being currently processed or queued,
8286 if queued - queue the new request as well
8287 ------------------------------------------------------------------------*/
8288 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008289 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8291 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8292 __func__, pwdiDelBSSParams->ucBssIdx);
8293
8294 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8295
8296 wpalMutexRelease(&pWDICtx->wptMutex);
8297
8298 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008299 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008300
Jeff Johnson295189b2012-06-20 16:38:30 -07008301 /*-----------------------------------------------------------------------
8302 If we receive a Del BSS request for an association that is already in
8303 progress, it indicates that the assoc has failed => we no longer have
8304 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008305 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008306 -----------------------------------------------------------------------*/
8307 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8308 {
8309 /*We can switch to false here because even if a subsequent Join comes in
8310 it will only be processed when DAL transitions out of BUSY state which
8311 happens when the Del BSS request comes */
8312 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8313
8314 /*Former association is complete - prepare next pending assoc for
8315 processing */
8316 WDI_DequeueAssocRequest(pWDICtx);
8317 }
8318
8319 wpalMutexRelease(&pWDICtx->wptMutex);
8320 /*-----------------------------------------------------------------------
8321 Get message buffer
8322 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008324 sizeof(halBssReqMsg.deleteBssParams),
8325 &pSendBuffer, &usDataOffset, &usSendSize))||
8326 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8327 {
8328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008329 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008330 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008333 }
8334
8335 /*Fill in the message request structure*/
8336
8337 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008338 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008339
Jeff Johnsone7245742012-09-05 17:12:55 -07008340 wpalMemoryCopy( pSendBuffer+usDataOffset,
8341 &halBssReqMsg.deleteBssParams,
8342 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008343
8344 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008345 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008346
Jeff Johnsone7245742012-09-05 17:12:55 -07008347
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008349 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008350 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008351 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008352 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8353
Jeff Johnsone7245742012-09-05 17:12:55 -07008354
Jeff Johnson295189b2012-06-20 16:38:30 -07008355}/*WDI_ProcessDelBSSReq*/
8356
8357/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008358 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008360
8361 @param pWDICtx: pointer to the WLAN DAL context
8362 pEventData: pointer to the event information structure
8363
Jeff Johnson295189b2012-06-20 16:38:30 -07008364 @see
8365 @return Result of the function call
8366*/
8367WDI_Status
8368WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008369(
Jeff Johnson295189b2012-06-20 16:38:30 -07008370 WDI_ControlBlockType* pWDICtx,
8371 WDI_EventInfoType* pEventData
8372)
8373{
8374 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8375 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008378 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008379 wpt_uint16 usDataOffset = 0;
8380 wpt_uint16 usSendSize = 0;
8381 wpt_uint16 uMsgSize = 0;
8382 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008383 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008384
Jeff Johnsone7245742012-09-05 17:12:55 -07008385 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8387
8388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 -------------------------------------------------------------------------*/
8391 if (( NULL == pEventData ) ||
8392 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8393 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8394 {
8395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008396 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008398 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008399 }
8400
8401 /*-------------------------------------------------------------------------
8402 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008403 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008404 -------------------------------------------------------------------------*/
8405 wpalMutexAcquire(&pWDICtx->wptMutex);
8406
8407 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008408 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008409 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8411 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8412 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008413
8414 if ( NULL == pBSSSes )
8415 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8417 "%s: Association sequence for this BSS does not yet exist - "
8418 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8419 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008420
8421 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008422 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008423 }
8424
8425 /*------------------------------------------------------------------------
8426 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008427 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008428 ------------------------------------------------------------------------*/
8429 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8430 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8432 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8433 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008434
Jeff Johnsone7245742012-09-05 17:12:55 -07008435 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008436
8437 wpalMutexRelease(&pWDICtx->wptMutex);
8438
Jeff Johnsone7245742012-09-05 17:12:55 -07008439 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008440 }
8441
8442 /*-----------------------------------------------------------------------
8443 If Post Assoc was not yet received - the current association must
8444 be in progress
8445 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008446 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008447 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8448 {
8449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8450 "Association sequence for this BSS association no longer in "
8451 "progress - not allowed");
8452
8453 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008454 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008455 }
8456
8457 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008459 -----------------------------------------------------------------------*/
8460 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8461 {
8462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8463 "Post Assoc not allowed before JOIN - failing request");
8464
8465 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008466 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008467 }
8468
8469 wpalMutexRelease(&pWDICtx->wptMutex);
8470
8471 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8472 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8473 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008474 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008475 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008476 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008477 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8478 ( usSendSize < (usDataOffset + uMsgSize )))
8479 {
8480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008481 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008482 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008485 }
8486
8487 /*Copy the STA parameters */
8488 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8489 &pwdiPostAssocParams->wdiSTAParams );
8490
8491 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 WDI_STATableFindStaidByAddr(pWDICtx,
8494 pwdiPostAssocParams->wdiSTAParams.macSTA,
8495 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8496 {
8497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008498 MAC_ADDRESS_STR
8499 ": This station does not exist in the WDI Station Table",
8500 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008502 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 }
8505
8506 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008507 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008508 pBSSSes->ucBSSIdx;
8509
8510 /*Copy the BSS parameters */
8511 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8512 &pwdiPostAssocParams->wdiBSSParams);
8513
8514 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 WDI_STATableFindStaidByAddr(pWDICtx,
8517 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008518 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008519 {
8520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008521 MAC_ADDRESS_STR
8522 ": This station does not exist in the WDI Station Table",
8523 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008524 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008525 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008527 }
8528
8529 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008530 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008531 pBSSSes->ucBSSIdx;
8532
Jeff Johnsone7245742012-09-05 17:12:55 -07008533
8534 wpalMemoryCopy( pSendBuffer+usDataOffset,
8535 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8536 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008537
8538 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8539
Jeff Johnsone7245742012-09-05 17:12:55 -07008540 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8541 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8542 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008543
Jeff Johnsone7245742012-09-05 17:12:55 -07008544
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008546 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008547
Jeff Johnsone7245742012-09-05 17:12:55 -07008548
8549 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008552
8553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008554 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008555 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008556 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008557 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8558
Jeff Johnsone7245742012-09-05 17:12:55 -07008559
Jeff Johnson295189b2012-06-20 16:38:30 -07008560}/*WDI_ProcessPostAssocReq*/
8561
8562/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008565
8566 @param pWDICtx: pointer to the WLAN DAL context
8567 pEventData: pointer to the event information structure
8568
Jeff Johnson295189b2012-06-20 16:38:30 -07008569 @see
8570 @return Result of the function call
8571*/
8572WDI_Status
8573WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008574(
Jeff Johnson295189b2012-06-20 16:38:30 -07008575 WDI_ControlBlockType* pWDICtx,
8576 WDI_EventInfoType* pEventData
8577)
8578{
8579 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8580 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008581 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008582 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 wpt_uint16 usDataOffset = 0;
8585 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8588
Jeff Johnsone7245742012-09-05 17:12:55 -07008589 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8591
8592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008594 -------------------------------------------------------------------------*/
8595 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8596 ( NULL == pEventData->pCBfnc ))
8597 {
8598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008602 }
8603
8604 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8605 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8606 /*-------------------------------------------------------------------------
8607 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008608 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008609 -------------------------------------------------------------------------*/
8610 wpalMutexAcquire(&pWDICtx->wptMutex);
8611
8612 /*------------------------------------------------------------------------
8613 Find the BSS for which the request is made and identify WDI session
8614 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008615 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8616 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008617 &macBSSID))
8618 {
8619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008620 "This station does not exist in the WDI Station Table %d",
8621 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008622 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 }
8625
Jeff Johnsone7245742012-09-05 17:12:55 -07008626 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8627 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8630 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8631 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008632
8633 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008634 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008635 }
8636
8637 /*------------------------------------------------------------------------
8638 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008639 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008640 ------------------------------------------------------------------------*/
8641 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8642 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8644 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8645 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008646
Jeff Johnsone7245742012-09-05 17:12:55 -07008647 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008648 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008649 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 }
8651
8652 wpalMutexRelease(&pWDICtx->wptMutex);
8653 /*-----------------------------------------------------------------------
8654 Get message buffer
8655 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008656 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008657 sizeof(halDelStaReqMsg.delStaParams),
8658 &pSendBuffer, &usDataOffset, &usSendSize))||
8659 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8660 {
8661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008662 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008663 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 }
8667
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8669 wpalMemoryCopy( pSendBuffer+usDataOffset,
8670 &halDelStaReqMsg.delStaParams,
8671 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008672
8673 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008674 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008675
8676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008677 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008678 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008679 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008680 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8681
8682}/*WDI_ProcessDelSTAReq*/
8683
8684
8685/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008686 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008687==========================================================================*/
8688/**
8689 @brief Process Set BSS Key Request function (called when Main FSM
8690 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008691
8692 @param pWDICtx: pointer to the WLAN DAL context
8693 pEventData: pointer to the event information structure
8694
Jeff Johnson295189b2012-06-20 16:38:30 -07008695 @see
8696 @return Result of the function call
8697*/
8698WDI_Status
8699WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008700(
Jeff Johnson295189b2012-06-20 16:38:30 -07008701 WDI_ControlBlockType* pWDICtx,
8702 WDI_EventInfoType* pEventData
8703)
8704{
8705 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8706 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008710 wpt_uint16 usDataOffset = 0;
8711 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008712 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008713 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8714 wpt_uint8 keyIndex = 0;
8715
8716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8717
8718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008719 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 -------------------------------------------------------------------------*/
8721 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8722 ( NULL == pEventData->pCBfnc ))
8723 {
8724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008725 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008728 }
8729
8730 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8731 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8732 /*-------------------------------------------------------------------------
8733 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 -------------------------------------------------------------------------*/
8736 wpalMutexAcquire(&pWDICtx->wptMutex);
8737
8738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008739 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008740 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8742 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8743 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008744
Jeff Johnsone7245742012-09-05 17:12:55 -07008745 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008746 {
8747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8749 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008750
8751 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 }
8754
8755 /*------------------------------------------------------------------------
8756 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 ------------------------------------------------------------------------*/
8759 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8760 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8762 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8763 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008764
Jeff Johnsone7245742012-09-05 17:12:55 -07008765 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008766 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008767 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008768 }
8769
8770
8771 wpalMutexRelease(&pWDICtx->wptMutex);
8772 /*-----------------------------------------------------------------------
8773 Get message buffer
8774 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008776 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8777 &pSendBuffer, &usDataOffset, &usSendSize))||
8778 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8779 {
8780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008781 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8783 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008784 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008785 }
8786
8787 /*-----------------------------------------------------------------------
8788 Copy the Key parameters into the HAL message
8789 -----------------------------------------------------------------------*/
8790
Jeff Johnsone7245742012-09-05 17:12:55 -07008791 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008792
Jeff Johnsone7245742012-09-05 17:12:55 -07008793 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8795
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8798
8799 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8800 keyIndex++)
8801 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008802 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008803 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8804 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8805 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8806 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8807 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8808 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008809 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008810 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008811 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008812 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008813 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008814 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8815 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 WDI_MAX_KEY_LENGTH);
8818 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008819
8820 wpalMemoryCopy( pSendBuffer+usDataOffset,
8821 &halSetBssKeyReqMsg.setBssKeyParams,
8822 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008823
8824 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008825 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008826
8827 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008829 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8831 wdiSetBSSKeyRspCb, pEventData->pUserData,
8832 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008833
8834}/*WDI_ProcessSetBssKeyReq*/
8835
8836/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008837 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008838 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008839
8840 @param pWDICtx: pointer to the WLAN DAL context
8841 pEventData: pointer to the event information structure
8842
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 @see
8844 @return Result of the function call
8845*/
8846WDI_Status
8847WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008848(
Jeff Johnson295189b2012-06-20 16:38:30 -07008849 WDI_ControlBlockType* pWDICtx,
8850 WDI_EventInfoType* pEventData
8851)
8852{
8853 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8854 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008855 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008857 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 wpt_uint16 usDataOffset = 0;
8859 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008860 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008861 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8863
8864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 -------------------------------------------------------------------------*/
8867 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8868 ( NULL == pEventData->pCBfnc ))
8869 {
8870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008874 }
8875
8876 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8877 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8878 /*-------------------------------------------------------------------------
8879 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008880 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008881 -------------------------------------------------------------------------*/
8882 wpalMutexAcquire(&pWDICtx->wptMutex);
8883
8884 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008885 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008886 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008887 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8888 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8889 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008890
Jeff Johnsone7245742012-09-05 17:12:55 -07008891 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008892 {
8893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8895 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008896
8897 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 }
8900
8901 /*------------------------------------------------------------------------
8902 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008903 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008904 ------------------------------------------------------------------------*/
8905 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8906 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8908 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8909 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008910
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008913 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 }
8915
8916
8917 wpalMutexRelease(&pWDICtx->wptMutex);
8918
8919 /*-----------------------------------------------------------------------
8920 Get message buffer
8921 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008922 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008923 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8924 &pSendBuffer, &usDataOffset, &usSendSize))||
8925 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8926 {
8927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008928 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008929 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8930 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008931 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008932 }
8933 /*-----------------------------------------------------------------------
8934 Copy the Key parameters into the HAL message
8935 -----------------------------------------------------------------------*/
8936 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8937
Jeff Johnsone7245742012-09-05 17:12:55 -07008938 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008939 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8940
8941 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8942
Jeff Johnsone7245742012-09-05 17:12:55 -07008943 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008944 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8945
Jeff Johnsone7245742012-09-05 17:12:55 -07008946 wpalMemoryCopy( pSendBuffer+usDataOffset,
8947 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8948 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008949
8950 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008951 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008952
8953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008954 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008956 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008957 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008958 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008959}/*WDI_ProcessRemoveBssKeyReq*/
8960
8961/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008962 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008963 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008964
8965 @param pWDICtx: pointer to the WLAN DAL context
8966 pEventData: pointer to the event information structure
8967
Jeff Johnson295189b2012-06-20 16:38:30 -07008968 @see
8969 @return Result of the function call
8970*/
8971WDI_Status
8972WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008973(
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 WDI_ControlBlockType* pWDICtx,
8975 WDI_EventInfoType* pEventData
8976)
8977{
8978 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8979 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8980 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008981 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008982 wpt_uint16 usDataOffset = 0;
8983 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008985 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008986 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008987 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8988 wpt_uint8 keyIndex = 0;
8989
8990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8991
8992 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 -------------------------------------------------------------------------*/
8995 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8996 ( NULL == pEventData->pCBfnc ))
8997 {
8998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008999 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009000 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 }
9003
9004 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9005 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9006 /*-------------------------------------------------------------------------
9007 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009008 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 -------------------------------------------------------------------------*/
9010 wpalMutexAcquire(&pWDICtx->wptMutex);
9011
9012 /*------------------------------------------------------------------------
9013 Find the BSS for which the request is made and identify WDI session
9014 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9016 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009017 &macBSSID))
9018 {
9019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009020 "This station does not exist in the WDI Station Table %d",
9021 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009024 }
9025
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9027 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009028 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9030 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9031 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009032
9033 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009036
Jeff Johnson295189b2012-06-20 16:38:30 -07009037 /*------------------------------------------------------------------------
9038 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009039 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 ------------------------------------------------------------------------*/
9041 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9042 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9044 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9045 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009046
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009048 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009049 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009050 }
9051
9052
9053 wpalMutexRelease(&pWDICtx->wptMutex);
9054 /*-----------------------------------------------------------------------
9055 Get message buffer
9056 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009058 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9059 &pSendBuffer, &usDataOffset, &usSendSize))||
9060 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9061 {
9062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009063 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009064 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9065 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 }
9068 /*-----------------------------------------------------------------------
9069 Copy the STA Key parameters into the HAL message
9070 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9073
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9076
9077 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9078
9079 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9080
9081 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9082
Jeff Johnson295189b2012-06-20 16:38:30 -07009083 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9084 keyIndex++)
9085 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9088 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9089 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9090 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9091 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9092 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009093 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009094 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9099 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009100 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009101 WDI_MAX_KEY_LENGTH);
9102 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009103
Jeff Johnsone7245742012-09-05 17:12:55 -07009104 wpalMemoryCopy( pSendBuffer+usDataOffset,
9105 &halSetStaKeyReqMsg.setStaKeyParams,
9106 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009107
9108 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009109 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009110
9111 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9115 wdiSetSTAKeyRspCb, pEventData->pUserData,
9116 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009117
9118}/*WDI_ProcessSetSTAKeyReq*/
9119
9120/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009121 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009122 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009123
9124 @param pWDICtx: pointer to the WLAN DAL context
9125 pEventData: pointer to the event information structure
9126
Jeff Johnson295189b2012-06-20 16:38:30 -07009127 @see
9128 @return Result of the function call
9129*/
9130WDI_Status
9131WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009132(
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 WDI_ControlBlockType* pWDICtx,
9134 WDI_EventInfoType* pEventData
9135)
9136{
9137 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9138 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9139 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009140 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009141 wpt_uint16 usDataOffset = 0;
9142 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 wpt_macAddr macBSSID;
9145 wpt_uint8 ucCurrentBSSSesIdx;
9146 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9148
9149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009150 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 -------------------------------------------------------------------------*/
9152 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9153 ( NULL == pEventData->pCBfnc ))
9154 {
9155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009156 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 }
9160
9161 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9162 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9163 /*-------------------------------------------------------------------------
9164 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009166 -------------------------------------------------------------------------*/
9167 wpalMutexAcquire(&pWDICtx->wptMutex);
9168
9169 /*------------------------------------------------------------------------
9170 Find the BSS for which the request is made and identify WDI session
9171 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009172 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9173 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 &macBSSID))
9175 {
9176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009177 "This station does not exist in the WDI Station Table %d",
9178 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 }
9182
Jeff Johnsone7245742012-09-05 17:12:55 -07009183 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9184 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009185 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9187 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9188 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009189
9190 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009191 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009192 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009193
Jeff Johnson295189b2012-06-20 16:38:30 -07009194 /*------------------------------------------------------------------------
9195 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009196 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009197 ------------------------------------------------------------------------*/
9198 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9199 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9201 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9202 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009203
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009206 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 }
9208
9209
9210
9211 wpalMutexRelease(&pWDICtx->wptMutex);
9212 /*-----------------------------------------------------------------------
9213 Get message buffer
9214 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9217 &pSendBuffer, &usDataOffset, &usSendSize))||
9218 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9219 {
9220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009221 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009222 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9223 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009224 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009225 }
9226
9227 /*-----------------------------------------------------------------------
9228 Copy the Key parameters into the HAL message
9229 -----------------------------------------------------------------------*/
9230
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009232 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9233
Jeff Johnsone7245742012-09-05 17:12:55 -07009234 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009235 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9236
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009238 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9239
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009241 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9242
Jeff Johnsone7245742012-09-05 17:12:55 -07009243 wpalMemoryCopy( pSendBuffer+usDataOffset,
9244 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9245 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009246
9247 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009249
9250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009251 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009252 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009253 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009256
9257}/*WDI_ProcessRemoveSTAKeyReq*/
9258
9259/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009260 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009262
9263 @param pWDICtx: pointer to the WLAN DAL context
9264 pEventData: pointer to the event information structure
9265
Jeff Johnson295189b2012-06-20 16:38:30 -07009266 @see
9267 @return Result of the function call
9268*/
9269WDI_Status
9270WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009271(
Jeff Johnson295189b2012-06-20 16:38:30 -07009272 WDI_ControlBlockType* pWDICtx,
9273 WDI_EventInfoType* pEventData
9274)
9275{
9276 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9277 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9278 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009280 wpt_uint16 usDataOffset = 0;
9281 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009284 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009285 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9286 wpt_uint8 keyIndex = 0;
9287
9288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9289
9290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009291 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 -------------------------------------------------------------------------*/
9293 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9294 ( NULL == pEventData->pCBfnc ))
9295 {
9296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009297 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009300 }
9301
9302 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9303 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9304 /*-------------------------------------------------------------------------
9305 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009306 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009307 -------------------------------------------------------------------------*/
9308 wpalMutexAcquire(&pWDICtx->wptMutex);
9309
9310 /*------------------------------------------------------------------------
9311 Find the BSS for which the request is made and identify WDI session
9312 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009313 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9314 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009315 &macBSSID))
9316 {
9317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009318 "This station does not exist in the WDI Station Table %d",
9319 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009322 }
9323
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9325 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009326 {
9327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009328 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009329 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009330
9331 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009333 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009334
Jeff Johnson295189b2012-06-20 16:38:30 -07009335 /*------------------------------------------------------------------------
9336 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 ------------------------------------------------------------------------*/
9339 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9340 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9342 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9343 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009344
Jeff Johnsone7245742012-09-05 17:12:55 -07009345 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009346 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009347 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009348 }
9349
9350
9351 wpalMutexRelease(&pWDICtx->wptMutex);
9352 /*-----------------------------------------------------------------------
9353 Get message buffer
9354 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009355 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9357 &pSendBuffer, &usDataOffset, &usSendSize))||
9358 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9359 {
9360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009361 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 }
9366 /*-----------------------------------------------------------------------
9367 Copy the STA Key parameters into the HAL message
9368 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9371
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9374
9375 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9376
9377 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9378
9379 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9380
Jeff Johnson295189b2012-06-20 16:38:30 -07009381 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9382 keyIndex++)
9383 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9386 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9387 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9388 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9389 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9390 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009391 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009392 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009393 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009394 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009395 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009396 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9397 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 WDI_MAX_KEY_LENGTH);
9400 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009401
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 wpalMemoryCopy( pSendBuffer+usDataOffset,
9403 &halSetStaKeyReqMsg.setStaKeyParams,
9404 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009405
9406 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009408
9409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009412 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9413 wdiSetSTAKeyRspCb, pEventData->pUserData,
9414 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009415
9416}/*WDI_ProcessSetSTABcastKeyReq*/
9417
9418/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009421
9422 @param pWDICtx: pointer to the WLAN DAL context
9423 pEventData: pointer to the event information structure
9424
Jeff Johnson295189b2012-06-20 16:38:30 -07009425 @see
9426 @return Result of the function call
9427*/
9428WDI_Status
9429WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009430(
Jeff Johnson295189b2012-06-20 16:38:30 -07009431 WDI_ControlBlockType* pWDICtx,
9432 WDI_EventInfoType* pEventData
9433)
9434{
9435 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9436 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9437 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009438 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 wpt_uint16 usDataOffset = 0;
9440 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009441 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009442 wpt_macAddr macBSSID;
9443 wpt_uint8 ucCurrentBSSSesIdx;
9444 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9446
9447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 -------------------------------------------------------------------------*/
9450 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9451 ( NULL == pEventData->pCBfnc ))
9452 {
9453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009454 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009457 }
9458
9459 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9460 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9461 /*-------------------------------------------------------------------------
9462 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009464 -------------------------------------------------------------------------*/
9465 wpalMutexAcquire(&pWDICtx->wptMutex);
9466
9467 /*------------------------------------------------------------------------
9468 Find the BSS for which the request is made and identify WDI session
9469 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009470 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9471 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 &macBSSID))
9473 {
9474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009475 "This station does not exist in the WDI Station Table %d",
9476 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009477 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 }
9480
Jeff Johnsone7245742012-09-05 17:12:55 -07009481 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9482 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009483 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9485 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9486 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009487
9488 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009489 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009490 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009491
Jeff Johnson295189b2012-06-20 16:38:30 -07009492 /*------------------------------------------------------------------------
9493 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009494 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009495 ------------------------------------------------------------------------*/
9496 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9497 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9499 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9500 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009501
Jeff Johnsone7245742012-09-05 17:12:55 -07009502 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009503 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009504 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009505 }
9506
9507
9508
9509 wpalMutexRelease(&pWDICtx->wptMutex);
9510 /*-----------------------------------------------------------------------
9511 Get message buffer
9512 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009513 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009514 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9515 &pSendBuffer, &usDataOffset, &usSendSize))||
9516 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9517 {
9518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009519 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009520 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 }
9524
9525 /*-----------------------------------------------------------------------
9526 Copy the Key parameters into the HAL message
9527 -----------------------------------------------------------------------*/
9528
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009530 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9531
Jeff Johnsone7245742012-09-05 17:12:55 -07009532 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009533 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9534
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009536 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9537
Jeff Johnsone7245742012-09-05 17:12:55 -07009538 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009539 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9540
Jeff Johnsone7245742012-09-05 17:12:55 -07009541 wpalMemoryCopy( pSendBuffer+usDataOffset,
9542 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9543 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009544
9545 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009546 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009547
9548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009549 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009550 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009551 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009554
9555}/*WDI_ProcessRemoveSTABcastKeyReq*/
9556
9557/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009559==========================================================================*/
9560/**
9561 @brief Process Add TSpec Request function (called when Main FSM
9562 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009563
9564 @param pWDICtx: pointer to the WLAN DAL context
9565 pEventData: pointer to the event information structure
9566
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 @see
9568 @return Result of the function call
9569*/
9570WDI_Status
9571WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009572(
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 WDI_ControlBlockType* pWDICtx,
9574 WDI_EventInfoType* pEventData
9575)
9576{
9577 WDI_AddTSReqParamsType* pwdiAddTSParams;
9578 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009579 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009580 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 wpt_uint16 usDataOffset = 0;
9583 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009584 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009585 wpt_macAddr macBSSID;
9586 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009587
Jeff Johnson295189b2012-06-20 16:38:30 -07009588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9589
9590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 -------------------------------------------------------------------------*/
9593 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9594 ( NULL == pEventData->pCBfnc ))
9595 {
9596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009597 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 }
9601
9602 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9603 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9604 /*-------------------------------------------------------------------------
9605 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 -------------------------------------------------------------------------*/
9608 wpalMutexAcquire(&pWDICtx->wptMutex);
9609
9610 /*------------------------------------------------------------------------
9611 Find the BSS for which the request is made and identify WDI session
9612 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009613 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9614 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009615 &macBSSID))
9616 {
9617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009618 "This station does not exist in the WDI Station Table %d",
9619 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009620 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009622 }
9623
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9625 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009626 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9628 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9629 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009630
9631 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009634
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 /*------------------------------------------------------------------------
9636 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009637 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009638 ------------------------------------------------------------------------*/
9639 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9640 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9642 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9643 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009644
Jeff Johnsone7245742012-09-05 17:12:55 -07009645 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009646 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009647 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009648 }
9649
9650 wpalMutexRelease(&pWDICtx->wptMutex);
9651 /*-----------------------------------------------------------------------
9652 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009654 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009655 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9656 sizeof(halAddTsParams),
9657 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009658 &usSendSize))||
9659 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9660 {
9661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009662 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009663 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009666 }
9667
9668 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9669 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9670
9671 //TSPEC IE
9672 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9673 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009674 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009675 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009676 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009677 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009678 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009680 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009681 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009682 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009683 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009684 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009686 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009687 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009688 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009689 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009692 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009693 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009696 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009697 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009702 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009703 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9704
9705 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009706 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009707 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009711 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009714 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009717 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009718 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009719 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9720
9721 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009722 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009723 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009724 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009725 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9726
Jeff Johnsone7245742012-09-05 17:12:55 -07009727 wpalMemoryCopy( pSendBuffer+usDataOffset,
9728 &halAddTsParams,
9729 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009730
9731 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009732 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009733
9734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009735 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009736 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009737 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009738 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009739 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009740}/*WDI_ProcessAddTSpecReq*/
9741
9742
9743/**
9744 @brief Process Del TSpec Request function (called when Main FSM
9745 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009746
9747 @param pWDICtx: pointer to the WLAN DAL context
9748 pEventData: pointer to the event information structure
9749
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 @see
9751 @return Result of the function call
9752*/
9753WDI_Status
9754WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009755(
Jeff Johnson295189b2012-06-20 16:38:30 -07009756 WDI_ControlBlockType* pWDICtx,
9757 WDI_EventInfoType* pEventData
9758)
9759{
9760 WDI_DelTSReqParamsType* pwdiDelTSParams;
9761 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009762 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 wpt_uint16 usDataOffset = 0;
9766 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009767 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009768 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9769
9770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009771 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 -------------------------------------------------------------------------*/
9773 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9774 ( NULL == pEventData->pCBfnc ))
9775 {
9776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009777 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009778 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009780 }
9781
9782 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9783 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9784
9785 /*-------------------------------------------------------------------------
9786 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009787 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009788 -------------------------------------------------------------------------*/
9789 wpalMutexAcquire(&pWDICtx->wptMutex);
9790
9791 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009792 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009793 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009794 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9795 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9796 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009797
Jeff Johnsone7245742012-09-05 17:12:55 -07009798 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009799 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9801 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9802 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9803
Jeff Johnson295189b2012-06-20 16:38:30 -07009804 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 }
9807
9808 /*------------------------------------------------------------------------
9809 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009810 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009811 ------------------------------------------------------------------------*/
9812 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9813 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9815 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9816 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009817
Jeff Johnsone7245742012-09-05 17:12:55 -07009818 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009819 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009820 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009821 }
9822
9823
9824 wpalMutexRelease(&pWDICtx->wptMutex);
9825 /*-----------------------------------------------------------------------
9826 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009827 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009828 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009829 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009830 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9831 &pSendBuffer, &usDataOffset, &usSendSize))||
9832 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9833 {
9834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009835 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009836 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9837 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
Jeff Johnsone7245742012-09-05 17:12:55 -07009841 wpalMemoryCopy( pSendBuffer+usDataOffset,
9842 &pwdiDelTSParams->wdiDelTSInfo,
9843 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009844
9845 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009847
9848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009849 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009851 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9852 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009853}/*WDI_ProcessDelTSpecReq*/
9854
9855/**
9856 @brief Process Update EDCA Params Request function (called when
9857 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009858
9859 @param pWDICtx: pointer to the WLAN DAL context
9860 pEventData: pointer to the event information structure
9861
Jeff Johnson295189b2012-06-20 16:38:30 -07009862 @see
9863 @return Result of the function call
9864*/
9865WDI_Status
9866WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009867(
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 WDI_ControlBlockType* pWDICtx,
9869 WDI_EventInfoType* pEventData
9870)
9871{
9872 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9873 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009874 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009875 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009876 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009877 wpt_uint16 usDataOffset = 0;
9878 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009879 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9881
9882 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009884 -------------------------------------------------------------------------*/
9885 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9886 ( NULL == pEventData->pCBfnc ))
9887 {
9888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009889 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009892 }
9893
9894 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9895 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9896 /*-------------------------------------------------------------------------
9897 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 -------------------------------------------------------------------------*/
9900 wpalMutexAcquire(&pWDICtx->wptMutex);
9901
9902 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009903 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009904 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009905 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9906 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9907 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009908
Jeff Johnsone7245742012-09-05 17:12:55 -07009909 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009910 {
9911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009912 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9913 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009914
9915 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009916 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 }
9918
9919 /*------------------------------------------------------------------------
9920 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 ------------------------------------------------------------------------*/
9923 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9924 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9926 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9927 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009928
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009930 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 }
9933
9934
9935 wpalMutexRelease(&pWDICtx->wptMutex);
9936 /*-----------------------------------------------------------------------
9937 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009938 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009939 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009940 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009941 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9942 &pSendBuffer, &usDataOffset, &usSendSize))||
9943 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9944 {
9945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009946 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009950 }
9951
Jeff Johnsone7245742012-09-05 17:12:55 -07009952 wpalMemoryCopy( pSendBuffer+usDataOffset,
9953 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9954 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009955
9956 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009958
9959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009960 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009961 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009962 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9963 wdiUpdateEDCARspCb, pEventData->pUserData,
9964 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009965}/*WDI_ProcessUpdateEDCAParamsReq*/
9966
9967/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009969 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009970
9971 @param pWDICtx: pointer to the WLAN DAL context
9972 pEventData: pointer to the event information structure
9973
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 @see
9975 @return Result of the function call
9976*/
9977WDI_Status
9978WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009979(
Jeff Johnson295189b2012-06-20 16:38:30 -07009980 WDI_ControlBlockType* pWDICtx,
9981 WDI_EventInfoType* pEventData
9982)
9983{
9984 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9985 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009986 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009987 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009988 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009989 wpt_uint16 usDataOffset = 0;
9990 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009991 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009992 wpt_macAddr macBSSID;
9993
9994 tAddBASessionReqMsg halAddBASessionReq;
9995 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9996
9997 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009998 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009999 -------------------------------------------------------------------------*/
10000 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10001 ( NULL == pEventData->pCBfnc ))
10002 {
10003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010004 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010007 }
10008
Jeff Johnsone7245742012-09-05 17:12:55 -070010009 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010011 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010012 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10013 /*-------------------------------------------------------------------------
10014 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010015 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010016 -------------------------------------------------------------------------*/
10017 wpalMutexAcquire(&pWDICtx->wptMutex);
10018
10019 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10023 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010024 &macBSSID))
10025 {
10026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010027 "This station does not exist in the WDI Station Table %d",
10028 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010029 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010030 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010031 }
10032
10033
Jeff Johnsone7245742012-09-05 17:12:55 -070010034 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010035
Jeff Johnsone7245742012-09-05 17:12:55 -070010036 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10039 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10040 __func__, MAC_ADDR_ARRAY(macBSSID));
10041
Jeff Johnson295189b2012-06-20 16:38:30 -070010042 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010043 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010044 }
10045
10046 /*------------------------------------------------------------------------
10047 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 ------------------------------------------------------------------------*/
10050 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10051 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10053 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10054 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010055
Jeff Johnsone7245742012-09-05 17:12:55 -070010056 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010057 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010058 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010059 }
10060
10061
10062 wpalMutexRelease(&pWDICtx->wptMutex);
10063 /*-----------------------------------------------------------------------
10064 Get message buffer
10065 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010066 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10067 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010068 sizeof(halAddBASessionReq.addBASessionParams),
10069 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010070 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010071 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10072 {
10073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010074 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010078 }
10079
10080 halAddBASessionReq.addBASessionParams.staIdx =
10081 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10082 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10083 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10084 WDI_MAC_ADDR_LEN);
10085 halAddBASessionReq.addBASessionParams.baTID =
10086 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10087 halAddBASessionReq.addBASessionParams.baPolicy =
10088 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10089 halAddBASessionReq.addBASessionParams.baBufferSize =
10090 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10091 halAddBASessionReq.addBASessionParams.baTimeout =
10092 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10093 halAddBASessionReq.addBASessionParams.baSSN =
10094 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10095 halAddBASessionReq.addBASessionParams.baDirection =
10096 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10097
Jeff Johnsone7245742012-09-05 17:12:55 -070010098 wpalMemoryCopy( pSendBuffer+usDataOffset,
10099 &halAddBASessionReq.addBASessionParams,
10100 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010101
10102 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010104
10105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010106 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010107 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010108 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10109 wdiAddBASessionRspCb, pEventData->pUserData,
10110 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010111}/*WDI_ProcessAddBASessionReq*/
10112
10113/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010114 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010115 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010116
10117 @param pWDICtx: pointer to the WLAN DAL context
10118 pEventData: pointer to the event information structure
10119
Jeff Johnson295189b2012-06-20 16:38:30 -070010120 @see
10121 @return Result of the function call
10122*/
10123WDI_Status
10124WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010125(
Jeff Johnson295189b2012-06-20 16:38:30 -070010126 WDI_ControlBlockType* pWDICtx,
10127 WDI_EventInfoType* pEventData
10128)
10129{
10130 WDI_DelBAReqParamsType* pwdiDelBAParams;
10131 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010132 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010133 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010134 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010135 wpt_uint16 usDataOffset = 0;
10136 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010137 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 wpt_macAddr macBSSID;
10139 tDelBAParams halDelBAparam;
10140 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10141
10142 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010143 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 -------------------------------------------------------------------------*/
10145 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10146 ( NULL == pEventData->pCBfnc ))
10147 {
10148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010149 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010150 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010152 }
10153
10154 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10155 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10156 /*-------------------------------------------------------------------------
10157 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010158 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010159 -------------------------------------------------------------------------*/
10160 wpalMutexAcquire(&pWDICtx->wptMutex);
10161
10162 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10166 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 &macBSSID))
10168 {
10169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010170 "This station does not exist in the WDI Station Table %d",
10171 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010172 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 }
10175
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010177
Jeff Johnsone7245742012-09-05 17:12:55 -070010178 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010179 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10181 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10182 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010183
10184 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010185 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010186 }
10187
10188 /*------------------------------------------------------------------------
10189 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010190 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010191 ------------------------------------------------------------------------*/
10192 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10193 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10195 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10196 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010197
Jeff Johnsone7245742012-09-05 17:12:55 -070010198 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010199 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010200 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010201 }
10202
10203 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010204 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010205 sizeof(halDelBAparam),
10206 &pSendBuffer, &usDataOffset, &usSendSize))||
10207 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10208 {
10209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010210 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010211 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010214 }
10215
10216 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10217 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10218 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10219
Jeff Johnsone7245742012-09-05 17:12:55 -070010220 wpalMemoryCopy( pSendBuffer+usDataOffset,
10221 &halDelBAparam,
10222 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010223
10224 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010225 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010226
10227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010228 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010229 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010230 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10231 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010232}/*WDI_ProcessDelBAReq*/
10233
10234#ifdef FEATURE_WLAN_CCX
10235
10236WDI_Status
10237WDI_ProcessTSMStatsReq
10238(
10239 WDI_ControlBlockType* pWDICtx,
10240 WDI_EventInfoType* pEventData
10241)
10242{
10243 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10244 WDI_TsmRspCb wdiTSMRspCb;
10245 wpt_uint8 ucCurrentBSSSesIdx = 0;
10246 WDI_BSSSessionType* pBSSSes = NULL;
10247 wpt_uint8* pSendBuffer = NULL;
10248 wpt_uint16 usDataOffset = 0;
10249 wpt_uint16 usSendSize = 0;
10250 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10251 tTsmStatsParams halTsmStatsReqParams = {0};
10252
10253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10254
10255 /*-------------------------------------------------------------------------
10256 Sanity check
10257 -------------------------------------------------------------------------*/
10258 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10259 ( NULL == pEventData->pCBfnc ))
10260 {
10261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010263 WDI_ASSERT(0);
10264 return WDI_STATUS_E_FAILURE;
10265 }
10266
10267 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10268 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10269 /*-------------------------------------------------------------------------
10270 Check to see if we are in the middle of an association, if so queue, if
10271 not it means it is free to process request
10272 -------------------------------------------------------------------------*/
10273 wpalMutexAcquire(&pWDICtx->wptMutex);
10274
10275 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10276 if ( NULL == pBSSSes )
10277 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10279 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10280 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010281
10282 wpalMutexRelease(&pWDICtx->wptMutex);
10283 return WDI_STATUS_E_NOT_ALLOWED;
10284 }
10285
10286 /*------------------------------------------------------------------------
10287 Check if this BSS is being currently processed or queued,
10288 if queued - queue the new request as well
10289 ------------------------------------------------------------------------*/
10290 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10291 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010293 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010294 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010295
10296 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10297 wpalMutexRelease(&pWDICtx->wptMutex);
10298 return wdiStatus;
10299 }
10300
10301 wpalMutexRelease(&pWDICtx->wptMutex);
10302 /*-----------------------------------------------------------------------
10303 Get message buffer
10304 ! TO DO : proper conversion into the HAL Message Request Format
10305 -----------------------------------------------------------------------*/
10306 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10307 sizeof(halTsmStatsReqParams),
10308 &pSendBuffer, &usDataOffset, &usSendSize))||
10309 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10310 {
10311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010312 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 pEventData, pwdiTSMParams, wdiTSMRspCb);
10314 WDI_ASSERT(0);
10315 return WDI_STATUS_E_FAILURE;
10316 }
10317
10318 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10319 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10320 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10321 WDI_MAC_ADDR_LEN);
10322 wpalMemoryCopy( pSendBuffer+usDataOffset,
10323 &halTsmStatsReqParams,
10324 sizeof(halTsmStatsReqParams));
10325
10326 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10327 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10328
10329 /*-------------------------------------------------------------------------
10330 Send TSM Stats Request to HAL
10331 -------------------------------------------------------------------------*/
10332 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10333 wdiTSMRspCb, pEventData->pUserData,
10334 WDI_TSM_STATS_RESP);
10335}/*WDI_ProcessTSMStatsReq*/
10336
10337#endif
10338
10339
10340/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010342 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010343
10344 @param pWDICtx: pointer to the WLAN DAL context
10345 pEventData: pointer to the event information structure
10346
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 @see
10348 @return Result of the function call
10349*/
10350WDI_Status
10351WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010352(
Jeff Johnson295189b2012-06-20 16:38:30 -070010353 WDI_ControlBlockType* pWDICtx,
10354 WDI_EventInfoType* pEventData
10355)
10356{
10357 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10358 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010359 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 wpt_uint16 usDataOffset = 0;
10361 wpt_uint16 usSendSize = 0;
10362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10363
10364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010366 -------------------------------------------------------------------------*/
10367 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10368 ( NULL == pEventData->pCBfnc ))
10369 {
10370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010374 }
10375
10376 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10377 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10378 /*-----------------------------------------------------------------------
10379 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010380 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010381 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010382 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010383 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10384 &pSendBuffer, &usDataOffset, &usSendSize))||
10385 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10386 {
10387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010388 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010389 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010392 }
10393
Jeff Johnsone7245742012-09-05 17:12:55 -070010394 wpalMemoryCopy( pSendBuffer+usDataOffset,
10395 &pwdiFlushAcParams->wdiFlushAcInfo,
10396 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010397
10398 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010399 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010400
10401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010403 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010404 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10405 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010406}/*WDI_ProcessFlushAcReq*/
10407
10408/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010409 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010410 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010411
10412 @param pWDICtx: pointer to the WLAN DAL context
10413 pEventData: pointer to the event information structure
10414
Jeff Johnson295189b2012-06-20 16:38:30 -070010415 @see
10416 @return Result of the function call
10417*/
10418WDI_Status
10419WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010420(
Jeff Johnson295189b2012-06-20 16:38:30 -070010421 WDI_ControlBlockType* pWDICtx,
10422 WDI_EventInfoType* pEventData
10423)
10424{
10425 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10426 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010427 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010428 wpt_uint16 usDataOffset = 0;
10429 wpt_uint16 usSendSize = 0;
10430
10431 tBtAmpEventMsg haltBtAmpEventMsg;
10432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10433
10434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010435 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010436 -------------------------------------------------------------------------*/
10437 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10438 ( NULL == pEventData->pCBfnc ))
10439 {
10440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010444 }
10445
10446 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10447 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10448 /*-----------------------------------------------------------------------
10449 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010452 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10454 &pSendBuffer, &usDataOffset, &usSendSize))||
10455 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10456 {
10457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010458 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010462 }
10463
Jeff Johnsone7245742012-09-05 17:12:55 -070010464 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010465 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010466 wpalMemoryCopy( pSendBuffer+usDataOffset,
10467 &haltBtAmpEventMsg.btAmpEventParams,
10468 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010469
10470 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010471 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010472
10473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10477 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010478}/*WDI_ProcessBtAmpEventReq*/
10479
10480/**
10481 @brief Process Add STA self Request function (called when Main FSM
10482 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010483
10484 @param pWDICtx: pointer to the WLAN DAL context
10485 pEventData: pointer to the event information structure
10486
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 @see
10488 @return Result of the function call
10489*/
10490WDI_Status
10491WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010492(
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 WDI_ControlBlockType* pWDICtx,
10494 WDI_EventInfoType* pEventData
10495)
10496{
10497 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10498 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 wpt_uint16 usDataOffset = 0;
10501 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010502 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10504
10505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010507 -------------------------------------------------------------------------*/
10508 if (( NULL == pEventData ) ||
10509 ( NULL == pEventData->pEventData) ||
10510 ( NULL == pEventData->pCBfnc))
10511 {
10512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010513 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010514 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010516 }
10517
Jeff Johnsone7245742012-09-05 17:12:55 -070010518 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010519 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010520 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010521 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10522 /*-----------------------------------------------------------------------
10523 Get message buffer
10524 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010525 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10526 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010527 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010528 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010529 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010530 {
10531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010532 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010536 }
10537
10538 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010539 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010540 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10541
Jeff Johnsone7245742012-09-05 17:12:55 -070010542 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010543 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10544 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10545 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10546 {
10547 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10548 }
10549 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10550 VOS_P2P_CLIENT_MODE) ||
10551 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10552 VOS_P2P_DEVICE))
10553 {
10554 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10555 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010557 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010558
10559 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010561
10562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010563 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010564 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010565 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10566 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10567 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010568}/*WDI_ProcessAddSTASelfReq*/
10569
10570
10571
10572/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010573 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010574 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010575
10576 @param pWDICtx: pointer to the WLAN DAL context
10577 pEventData: pointer to the event information structure
10578
Jeff Johnson295189b2012-06-20 16:38:30 -070010579 @see
10580 @return Result of the function call
10581*/
10582WDI_Status
10583WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010584(
Jeff Johnson295189b2012-06-20 16:38:30 -070010585 WDI_ControlBlockType* pWDICtx,
10586 WDI_EventInfoType* pEventData
10587)
10588{
10589 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10590 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010591 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010592 wpt_uint16 usDataOffset = 0;
10593 wpt_uint16 usSendSize = 0;
10594 tDelStaSelfParams halSetDelSelfSTAParams;
10595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10596
10597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010598 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010599 -------------------------------------------------------------------------*/
10600 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10601 ( NULL == pEventData->pCBfnc ))
10602 {
10603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010604 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010607 }
10608
Jeff Johnsone7245742012-09-05 17:12:55 -070010609 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010610 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10611 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10612
10613 /*-----------------------------------------------------------------------
10614 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010615 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010616 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010617 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010618 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10619 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010620 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010621 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10622 {
10623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010624 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010625 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10626 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010628 }
10629
Jeff Johnsone7245742012-09-05 17:12:55 -070010630 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010631 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10632
Jeff Johnsone7245742012-09-05 17:12:55 -070010633 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10634 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010635
10636 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010637 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010638
10639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010640 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010641 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010642 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10643 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 WDI_DEL_STA_SELF_RESP);
10645
10646}
10647
Jeff Johnsone7245742012-09-05 17:12:55 -070010648#ifdef FEATURE_OEM_DATA_SUPPORT
10649/**
10650 @brief Process Start Oem Data Request function (called when Main
10651 FSM allows it)
10652
10653 @param pWDICtx: pointer to the WLAN DAL context
10654 pEventData: pointer to the event information structure
10655
10656 @see
10657 @return Result of the function call
10658*/
10659WDI_Status
10660WDI_ProcessStartOemDataReq
10661(
10662 WDI_ControlBlockType* pWDICtx,
10663 WDI_EventInfoType* pEventData
10664)
10665{
10666 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10667 WDI_oemDataRspCb wdiOemDataRspCb;
10668 wpt_uint8* pSendBuffer = NULL;
10669 wpt_uint16 usDataOffset = 0;
10670 wpt_uint16 usSendSize = 0;
10671 wpt_uint16 reqLen;
10672 tStartOemDataReqParams* halStartOemDataReqParams;
10673
10674 /*-------------------------------------------------------------------------
10675 Sanity check
10676 -------------------------------------------------------------------------*/
10677 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10678 ( NULL == pEventData->pCBfnc ))
10679 {
10680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010681 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010682 WDI_ASSERT(0);
10683 return WDI_STATUS_E_FAILURE;
10684 }
10685
10686 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10687 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10688
10689 /*-----------------------------------------------------------------------
10690 Get message buffer
10691 -----------------------------------------------------------------------*/
10692
10693 reqLen = sizeof(tStartOemDataReqParams);
10694
10695 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10696 WDI_START_OEM_DATA_REQ, reqLen,
10697 &pSendBuffer, &usDataOffset, &usSendSize))||
10698 (usSendSize < (usDataOffset + reqLen)))
10699 {
10700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010701 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010702 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10703 WDI_ASSERT(0);
10704 return WDI_STATUS_E_FAILURE;
10705 }
10706
10707 //copying WDI OEM DATA REQ PARAMS to shared memory
10708 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10709
10710 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10711 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10712
10713 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10714 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10715
10716 /*-------------------------------------------------------------------------
10717 Send Start Request to HAL
10718 -------------------------------------------------------------------------*/
10719 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10720 wdiOemDataRspCb, pEventData->pUserData,
10721 WDI_START_OEM_DATA_RESP);
10722}/*WDI_ProcessStartOemDataReq*/
10723#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010724
10725/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010726 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010727 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010728
10729 @param pWDICtx: pointer to the WLAN DAL context
10730 pEventData: pointer to the event information structure
10731
Jeff Johnson295189b2012-06-20 16:38:30 -070010732 @see
10733 @return Result of the function call
10734*/
10735WDI_Status
10736WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010737(
Jeff Johnson295189b2012-06-20 16:38:30 -070010738 WDI_ControlBlockType* pWDICtx,
10739 WDI_EventInfoType* pEventData
10740)
10741{
10742 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10743 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010744 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010745 wpt_uint16 usDataOffset = 0;
10746 wpt_uint16 usSendSize = 0;
10747 tHalWlanHostResumeReqParam halResumeReqParams;
10748
10749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10750
10751 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 -------------------------------------------------------------------------*/
10754 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10755 ( NULL == pEventData->pCBfnc ))
10756 {
10757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010758 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010760 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010761 }
10762
10763 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10764 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10765
10766 /*-----------------------------------------------------------------------
10767 Get message buffer
10768 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010769 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010770 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10771 &pSendBuffer, &usDataOffset, &usSendSize))||
10772 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10773 {
10774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010775 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010776 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 }
10780
Jeff Johnsone7245742012-09-05 17:12:55 -070010781 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010782 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010783
10784 wpalMemoryCopy( pSendBuffer+usDataOffset,
10785 &halResumeReqParams,
10786 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010787
10788 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010789 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010790
10791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010792 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010793 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010794 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10795 wdiHostResumeRspCb, pEventData->pUserData,
10796 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010797}/*WDI_ProcessHostResumeReq*/
10798
10799/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010801 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010802
10803 @param pWDICtx: pointer to the WLAN DAL context
10804 pEventData: pointer to the event information structure
10805
Jeff Johnson295189b2012-06-20 16:38:30 -070010806 @see
10807 @return Result of the function call
10808*/
10809WDI_Status
10810WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010811(
Jeff Johnson295189b2012-06-20 16:38:30 -070010812 WDI_ControlBlockType* pWDICtx,
10813 WDI_EventInfoType* pEventData
10814)
10815{
10816 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10817 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010818 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010819 wpt_uint16 usDataOffset = 0;
10820 wpt_uint16 usSendSize = 0;
10821 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10823
10824 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010825 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010826 -------------------------------------------------------------------------*/
10827 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10828 ( NULL == pEventData->pCBfnc ))
10829 {
10830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010831 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010833 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010834 }
10835
10836 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10837 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010838
Jeff Johnson295189b2012-06-20 16:38:30 -070010839 /*-----------------------------------------------------------------------
10840 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010842 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010843 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010844 sizeof(halTxPerTrackingReqParam),
10845 &pSendBuffer, &usDataOffset, &usSendSize))||
10846 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10847 {
10848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010849 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010850 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10851 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010852 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010853 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010854
Jeff Johnson295189b2012-06-20 16:38:30 -070010855 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10856 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10857 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10858 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010859
10860 wpalMemoryCopy( pSendBuffer+usDataOffset,
10861 &halTxPerTrackingReqParam,
10862 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010863
10864 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010865 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010866
10867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010868 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010870 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10871 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010872}/*WDI_ProcessSetTxPerTrackingReq*/
10873
10874/*=========================================================================
10875 Indications
10876=========================================================================*/
10877
10878/**
10879 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010880
10881 @param pWDICtx: pointer to the WLAN DAL context
10882 pEventData: pointer to the event information structure
10883
Jeff Johnson295189b2012-06-20 16:38:30 -070010884 @see
10885 @return Result of the function call
10886*/
10887WDI_Status
10888WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010889(
Jeff Johnson295189b2012-06-20 16:38:30 -070010890 WDI_ControlBlockType* pWDICtx,
10891 WDI_EventInfoType* pEventData
10892)
10893{
10894 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010895 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 wpt_uint16 usDataOffset = 0;
10897 wpt_uint16 usSendSize = 0;
10898 WDI_Status wdiStatus;
10899 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10901
10902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010903 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010904 -------------------------------------------------------------------------*/
10905 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10906 {
10907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010908 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010909 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010911 }
10912
10913 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10914
10915 /*-----------------------------------------------------------------------
10916 Get message buffer
10917 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010918 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10919 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010920 sizeof(halWlanSuspendIndparams),
10921 &pSendBuffer, &usDataOffset, &usSendSize))||
10922 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10923 {
10924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10925 "Unable to get send buffer in Suspend Ind ");
10926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010928 }
10929
10930 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10931 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10932
Jeff Johnsone7245742012-09-05 17:12:55 -070010933 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070010934 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010935
Jeff Johnsone7245742012-09-05 17:12:55 -070010936 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10937 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010938
10939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010940 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010941 -------------------------------------------------------------------------*/
10942 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010943 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010944
Jeff Johnsone7245742012-09-05 17:12:55 -070010945 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010946 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10947}/*WDI_ProcessHostSuspendInd*/
10948
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080010949
10950
10951/**
10952 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10953
10954 @param pWDICtx: pointer to the WLAN DAL context
10955 pEventData: pointer to the event information structure
10956
10957 @see
10958 @return Result of the function call
10959*/
10960WDI_Status
10961WDI_ProcessTrafficStatsInd
10962(
10963 WDI_ControlBlockType* pWDICtx,
10964 WDI_EventInfoType* pEventData
10965)
10966{
10967 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10968 wpt_uint8* pSendBuffer = NULL;
10969 wpt_uint16 usDataOffset = 0;
10970 wpt_uint16 usSendSize = 0;
10971 WDI_Status wdiStatus;
10972 tStatsClassBIndParams* pStatsClassBIndParams;
10973 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10974
10975 /*-------------------------------------------------------------------------
10976 Sanity check
10977 -------------------------------------------------------------------------*/
10978 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10979 {
10980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10981 "%s: Invalid parameters in Traffic Stats ind",__func__);
10982 WDI_ASSERT(0);
10983 return WDI_STATUS_E_FAILURE;
10984 }
10985
10986 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10987
10988 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10989 {
10990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10991 "%s: Invalid parameters in Traffic Stats ind",__func__);
10992 WDI_ASSERT(0);
10993 return WDI_STATUS_E_FAILURE;
10994 }
10995
10996 /*-----------------------------------------------------------------------
10997 Get message buffer
10998 -----------------------------------------------------------------------*/
10999 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11000 WDI_TRAFFIC_STATS_IND,
11001 sizeof(tStatsClassBIndParams),
11002 &pSendBuffer, &usDataOffset, &usSendSize))||
11003 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11004 {
11005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11006 "Unable to get send buffer in Traffic Stats Ind ");
11007 WDI_ASSERT(0);
11008 return WDI_STATUS_E_FAILURE;
11009 }
11010
11011 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11012
11013 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11014
11015 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11016 pTrafficStatsIndParams->pTrafficStats,
11017 pTrafficStatsIndParams->length);
11018
11019 /*-------------------------------------------------------------------------
11020 Send Suspend Request to HAL
11021 -------------------------------------------------------------------------*/
11022 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11023 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11024
11025 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11026 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11027}/*WDI_ProcessTrafficStatsInd*/
11028
Chet Lanctot186b5732013-03-18 10:26:30 -070011029#ifdef WLAN_FEATURE_11W
11030/**
11031 @brief Process Exclude Unencrypted Indications function (called
11032 when Main FSM allows it)
11033
11034 @param pWDICtx: pointer to the WLAN DAL context
11035 pEventData: pointer to the event information structure
11036
11037 @see
11038 @return Result of the function call
11039*/
11040WDI_Status
11041WDI_ProcessExcludeUnencryptInd
11042(
11043 WDI_ControlBlockType* pWDICtx,
11044 WDI_EventInfoType* pEventData
11045)
11046{
11047 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11048 wpt_uint8* pSendBuffer = NULL;
11049 wpt_uint16 usDataOffset = 0;
11050 wpt_uint16 usSendSize = 0;
11051 WDI_Status wdiStatus;
11052 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11054
11055 /*-------------------------------------------------------------------------
11056 Sanity check
11057 -------------------------------------------------------------------------*/
11058 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11059 {
11060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11061 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11062 WDI_ASSERT(0);
11063 return WDI_STATUS_E_FAILURE;
11064 }
11065
11066 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11067
11068 /*-----------------------------------------------------------------------
11069 Get message buffer
11070 -----------------------------------------------------------------------*/
11071 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11072 WDI_EXCLUDE_UNENCRYPTED_IND,
11073 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11074 &pSendBuffer, &usDataOffset, &usSendSize))||
11075 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11076 {
11077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11078 "Unable to get send buffer in Exclude Unencrypted Ind ");
11079 WDI_ASSERT(0);
11080 return WDI_STATUS_E_FAILURE;
11081 }
11082
11083 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11084
11085 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11086
11087 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11088 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11089
11090 /*-------------------------------------------------------------------------
11091 Send Suspend Request to HAL
11092 -------------------------------------------------------------------------*/
11093 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11094 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11095
11096 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11097 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11098}/*WDI_ProcessExcludeUnencryptInd*/
11099#endif
11100
Yue Mab9c86f42013-08-14 15:59:08 -070011101/**
11102 @brief Process Add Periodic Tx Pattern Indication function (called when
11103 Main FSM allows it)
11104
11105 @param pWDICtx: pointer to the WLAN DAL context
11106 pEventData: pointer to the event information structure
11107
11108 @see
11109 @return Result of the function call
11110*/
11111WDI_Status
11112WDI_ProcessAddPeriodicTxPtrnInd
11113(
11114 WDI_ControlBlockType* pWDICtx,
11115 WDI_EventInfoType* pEventData
11116)
11117{
11118 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11119 wpt_uint8* pSendBuffer = NULL;
11120 wpt_uint16 usDataOffset = 0;
11121 wpt_uint16 usSendSize = 0;
11122 WDI_Status wdiStatus;
11123 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11124 wpt_uint8 selfStaIdx = 0;
11125
11126 /*-------------------------------------------------------------------------
11127 Sanity check
11128 -------------------------------------------------------------------------*/
11129 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11130 {
11131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11132 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11133 WDI_ASSERT(0);
11134 return WDI_STATUS_E_FAILURE;
11135 }
11136
11137 pAddPeriodicTxPtrnParams =
11138 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11139
11140 /*------------------------------------------------------------------------
11141 Get message buffer
11142 ------------------------------------------------------------------------*/
11143 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11144 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11145 &pSendBuffer, &usDataOffset, &usSendSize))||
11146 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11147 {
11148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11149 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11150 __func__);
11151 WDI_ASSERT(0);
11152 return WDI_STATUS_E_FAILURE;
11153 }
11154
11155 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11156
11157 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11158 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11159 &selfStaIdx))
11160 {
11161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11162 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011163 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011164
11165 return WDI_STATUS_E_FAILURE;
11166 }
11167
11168 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11169 halAddPeriodicTxPtrn->ucPtrnId =
11170 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11171 halAddPeriodicTxPtrn->usPtrnSize =
11172 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11173 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11174 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11175
11176 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11177 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11178 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11179
11180 /*-------------------------------------------------------------------------
11181 Send Indication to HAL
11182 -------------------------------------------------------------------------*/
11183 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11184 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11185
11186 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11187
11188 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11189 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11190
11191 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11192} /* WDI_ProcessAddPeriodicTxPtrnInd */
11193
11194/**
11195 @brief Process Delete Periodic Tx Pattern Indication function (called when
11196 Main FSM allows it)
11197
11198 @param pWDICtx: pointer to the WLAN DAL context
11199 pEventData: pointer to the event information structure
11200
11201 @see
11202 @return Result of the function call
11203*/
11204WDI_Status
11205WDI_ProcessDelPeriodicTxPtrnInd
11206(
11207 WDI_ControlBlockType* pWDICtx,
11208 WDI_EventInfoType* pEventData
11209)
11210{
11211 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11212 wpt_uint8* pSendBuffer = NULL;
11213 wpt_uint16 usDataOffset = 0;
11214 wpt_uint16 usSendSize = 0;
11215 WDI_Status wdiStatus;
11216 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11217 wpt_uint8 selfStaIdx = 0;
11218
11219 /*-------------------------------------------------------------------------
11220 Sanity check
11221 -------------------------------------------------------------------------*/
11222 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11223 {
11224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11225 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11226 WDI_ASSERT(0);
11227 return WDI_STATUS_E_FAILURE;
11228 }
11229
11230 pDelPeriodicTxPtrnParams =
11231 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11232
11233 /*------------------------------------------------------------------------
11234 Get message buffer
11235 ------------------------------------------------------------------------*/
11236 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11237 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11238 &pSendBuffer, &usDataOffset, &usSendSize))||
11239 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11240 {
11241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11242 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11243 __func__);
11244 WDI_ASSERT(0);
11245 return WDI_STATUS_E_FAILURE;
11246 }
11247
11248 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11249
11250 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11251 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11252 &selfStaIdx))
11253 {
11254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11255 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011256 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011257
11258 return WDI_STATUS_E_FAILURE;
11259 }
11260
11261 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11262 halDelPeriodicTxPtrn->uPatternIdBitmap =
11263 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11264
11265 /*-------------------------------------------------------------------------
11266 Send Indication to HAL
11267 -------------------------------------------------------------------------*/
11268 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11269 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11270
11271 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11272
11273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11274 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11275
11276 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11277} /* WDI_ProcessDelPeriodicTxPtrnInd */
11278
Jeff Johnson295189b2012-06-20 16:38:30 -070011279/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011280 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011281==========================================================================*/
11282/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011283 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011284 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011285
11286 @param pWDICtx: pointer to the WLAN DAL context
11287 pEventData: pointer to the event information structure
11288
Jeff Johnson295189b2012-06-20 16:38:30 -070011289 @see
11290 @return Result of the function call
11291*/
11292WDI_Status
11293WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011294(
Jeff Johnson295189b2012-06-20 16:38:30 -070011295 WDI_ControlBlockType* pWDICtx,
11296 WDI_EventInfoType* pEventData
11297)
11298{
11299 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11300 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011301 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011302 wpt_uint16 usDataOffset = 0;
11303 wpt_uint16 usSendSize = 0;
11304 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11305 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11306
11307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011308 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 -------------------------------------------------------------------------*/
11310 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11311 ( NULL == pEventData->pCBfnc ))
11312 {
11313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011314 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011317 }
11318
11319 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11320 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11321 /*-----------------------------------------------------------------------
11322 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011323 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011324 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011325 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011326 sizeof(halSwitchChannelReq.switchChannelParams),
11327 &pSendBuffer, &usDataOffset, &usSendSize))||
11328 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11329 {
11330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011331 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011332 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11333 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011334 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011335 }
11336
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011338 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011339#ifndef WLAN_FEATURE_VOWIFI
11340 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011341 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11342#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011343 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011344 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11345
11346#ifdef WLAN_FEATURE_VOWIFI
11347 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011348 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011349 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11350 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11351 WDI_MAC_ADDR_LEN);
11352 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11353 pwdiSwitchChParams->wdiChInfo.macBSSId,
11354 WDI_MAC_ADDR_LEN);
11355#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011356 wpalMemoryCopy( pSendBuffer+usDataOffset,
11357 &halSwitchChannelReq.switchChannelParams,
11358 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011359
11360 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011361 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011362
11363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011364 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011365 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011366 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11367 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011368}/*WDI_ProcessChannelSwitchReq*/
11369
11370/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011371 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011372 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011373
11374 @param pWDICtx: pointer to the WLAN DAL context
11375 pEventData: pointer to the event information structure
11376
Jeff Johnson295189b2012-06-20 16:38:30 -070011377 @see
11378 @return Result of the function call
11379*/
11380WDI_Status
11381WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011382(
Jeff Johnson295189b2012-06-20 16:38:30 -070011383 WDI_ControlBlockType* pWDICtx,
11384 WDI_EventInfoType* pEventData
11385)
11386{
11387 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11388 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011389 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011390 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011391 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011392 wpt_uint16 usDataOffset = 0;
11393 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011394 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011395
Jeff Johnsone7245742012-09-05 17:12:55 -070011396 tConfigStaReqMsg halConfigStaReqMsg;
11397 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11399
11400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011401 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011402 -------------------------------------------------------------------------*/
11403 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11404 ( NULL == pEventData->pCBfnc ))
11405 {
11406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011407 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011408 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011410 }
11411
11412 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11413 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11414 /*-------------------------------------------------------------------------
11415 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011416 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011417 -------------------------------------------------------------------------*/
11418 wpalMutexAcquire(&pWDICtx->wptMutex);
11419
11420 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011421 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011422 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011423 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11424 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11425 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011426
Jeff Johnsone7245742012-09-05 17:12:55 -070011427 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011428 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11430 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11431 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011432
11433 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011434 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011435 }
11436
11437 /*------------------------------------------------------------------------
11438 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011439 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011440 ------------------------------------------------------------------------*/
11441 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11442 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11444 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11445 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011446
Jeff Johnsone7245742012-09-05 17:12:55 -070011447 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011448 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011449 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011450 }
11451
11452 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011453
11454 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11455#ifdef WLAN_FEATURE_11AC
11456 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011457 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011458 else
11459#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011460 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011461
Jeff Johnson295189b2012-06-20 16:38:30 -070011462 /*-----------------------------------------------------------------------
11463 Get message buffer
11464 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011465 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11466 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011468 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011469 {
11470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011471 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011472 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011475 }
11476
11477 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011478 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011479 &pwdiConfigSTAParams->wdiReqInfo);
11480
11481 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11482 {
11483 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011484 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011485 WDI_STATableFindStaidByAddr(pWDICtx,
11486 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011487 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011488 {
11489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011490 MAC_ADDRESS_STR
11491 ": This station does not exist in the WDI Station Table",
11492 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011493 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011494 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011496 }
11497 }
11498 else
11499 {
11500 /* Need to fill in the STA Index to invalid, since at this point we have not
11501 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070011502 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011503 }
11504
11505 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011506 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011507
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 wpalMemoryCopy( pSendBuffer+usDataOffset,
11509 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011510 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011511
11512 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011513 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011514
Jeff Johnsone7245742012-09-05 17:12:55 -070011515 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11516 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011517 sizeof(pWDICtx->wdiCachedConfigStaReq));
11518
11519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011520 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011521 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011522 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11523 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011524}/*WDI_ProcessConfigStaReq*/
11525
11526
11527/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011528 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011529 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011530
11531 @param pWDICtx: pointer to the WLAN DAL context
11532 pEventData: pointer to the event information structure
11533
Jeff Johnson295189b2012-06-20 16:38:30 -070011534 @see
11535 @return Result of the function call
11536*/
11537WDI_Status
11538WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011539(
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 WDI_ControlBlockType* pWDICtx,
11541 WDI_EventInfoType* pEventData
11542)
11543{
11544 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11545 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011548 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011549 wpt_uint16 usDataOffset = 0;
11550 wpt_uint16 usSendSize = 0;
11551 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011552 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11554
11555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011556 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011557 -------------------------------------------------------------------------*/
11558 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11559 ( NULL == pEventData->pCBfnc ))
11560 {
11561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011565 }
11566
11567 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11568 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11569 /*-------------------------------------------------------------------------
11570 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011571 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011572 -------------------------------------------------------------------------*/
11573 wpalMutexAcquire(&pWDICtx->wptMutex);
11574
11575 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011576 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011577 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011578 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11579 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11580 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011581
Jeff Johnsone7245742012-09-05 17:12:55 -070011582 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011583 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011585 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11586 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 }
11588 else
11589 {
11590 /*------------------------------------------------------------------------
11591 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011592 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011593 ------------------------------------------------------------------------*/
11594 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11595 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11597 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11598 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11599
11600 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 }
11604 }
11605 /* If the link is set to enter IDLE - the Session allocated for this BSS
11606 will be deleted on the Set Link State response coming from HAL
11607 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011608 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011609 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11610
11611 wpalMutexRelease(&pWDICtx->wptMutex);
11612 /*-----------------------------------------------------------------------
11613 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011614 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011615 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011616
11617 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011618 sizeof(halLinkStateReqMsg),
11619 &pSendBuffer, &usDataOffset, &usSendSize))||
11620 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11621 {
11622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011623 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011624 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11625 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011627 }
11628
11629 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11630 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11631
11632 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11633 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11634
Jeff Johnsone7245742012-09-05 17:12:55 -070011635 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011636 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11637
Jeff Johnsone7245742012-09-05 17:12:55 -070011638 wpalMemoryCopy( pSendBuffer+usDataOffset,
11639 &halLinkStateReqMsg,
11640 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011641
11642 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011643 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011644
11645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011646 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011647 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011648 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11649 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011650}/*WDI_ProcessSetLinkStateReq*/
11651
11652
11653/**
11654 @brief Process Get Stats Request function (called when Main FSM
11655 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011656
11657 @param pWDICtx: pointer to the WLAN DAL context
11658 pEventData: pointer to the event information structure
11659
Jeff Johnson295189b2012-06-20 16:38:30 -070011660 @see
11661 @return Result of the function call
11662*/
11663WDI_Status
11664WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011665(
Jeff Johnson295189b2012-06-20 16:38:30 -070011666 WDI_ControlBlockType* pWDICtx,
11667 WDI_EventInfoType* pEventData
11668)
11669{
11670 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11671 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011672 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011673 wpt_uint16 usDataOffset = 0;
11674 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011676 WDI_BSSSessionType* pBSSSes = NULL;
11677 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011678 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011679 tHalStatsReqMsg halStatsReqMsg;
11680 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11681
11682 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011683 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011684 -------------------------------------------------------------------------*/
11685 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11686 ( NULL == pEventData->pCBfnc ) )
11687 {
11688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011689 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011692 }
11693
11694 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11695 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11696
11697 /*-------------------------------------------------------------------------
11698 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011699 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011700 -------------------------------------------------------------------------*/
11701 wpalMutexAcquire(&pWDICtx->wptMutex);
11702
11703 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011704 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011705 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011706 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11707 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011708 &macBSSID))
11709 {
11710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011711 "This station does not exist in the WDI Station Table %d",
11712 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011713 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011714 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011715 }
11716
Jeff Johnsone7245742012-09-05 17:12:55 -070011717 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11718 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011719 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11721 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11722 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011723
11724 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011725 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011726 }
11727
11728 /*------------------------------------------------------------------------
11729 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011730 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011731 ------------------------------------------------------------------------*/
11732 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11733 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11735 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11736 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011737
Jeff Johnsone7245742012-09-05 17:12:55 -070011738 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011739 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011740 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011741 }
11742
11743
11744 wpalMutexRelease(&pWDICtx->wptMutex);
11745
11746 /*-----------------------------------------------------------------------
11747 Get message buffer
11748 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011749 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011750 sizeof(halStatsReqMsg.statsReqParams),
11751 &pSendBuffer, &usDataOffset, &usSendSize))||
11752 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11753 {
11754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011755 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011756 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11757 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011758 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011759 }
11760
Jeff Johnsone7245742012-09-05 17:12:55 -070011761 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011762 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011763 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011764 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011765 wpalMemoryCopy( pSendBuffer+usDataOffset,
11766 &halStatsReqMsg.statsReqParams,
11767 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011768
11769 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011770 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011771
11772 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011773 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011774 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011775 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11776 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011777}/*WDI_ProcessGetStatsReq*/
11778
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011779#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11780/**
11781 @brief Process Get Roam Rssi Request function (called when Main FSM
11782 allows it)
11783
11784 @param pWDICtx: pointer to the WLAN DAL context
11785 pEventData: pointer to the event information structure
11786
11787 @see
11788 @return Result of the function call
11789*/
11790WDI_Status
11791WDI_ProcessGetRoamRssiReq
11792(
11793 WDI_ControlBlockType* pWDICtx,
11794 WDI_EventInfoType* pEventData
11795)
11796{
11797 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11798 WDI_GetStatsRspCb wdiGetStatsRspCb;
11799 wpt_uint8* pSendBuffer = NULL;
11800 wpt_uint16 usDataOffset = 0;
11801 wpt_uint16 usSendSize = 0;
11802 wpt_uint8 ucCurrentBSSSesIdx = 0;
11803 WDI_BSSSessionType* pBSSSes = NULL;
11804 wpt_macAddr macBSSID;
11805 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11806 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11808 /*-------------------------------------------------------------------------
11809 Sanity check
11810 -------------------------------------------------------------------------*/
11811 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11812 ( NULL == pEventData->pCBfnc ) )
11813 {
11814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11815 "%s: Invalid parameters", __func__);
11816 WDI_ASSERT(0);
11817 return WDI_STATUS_E_FAILURE;
11818 }
11819
11820 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11821 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11822
11823 /*-------------------------------------------------------------------------
11824 Check to see if we are in the middle of an association, if so queue, if
11825 not it means it is free to process request
11826 -------------------------------------------------------------------------*/
11827 wpalMutexAcquire(&pWDICtx->wptMutex);
11828
11829 /*------------------------------------------------------------------------
11830 Find the BSS for which the request is made
11831 ------------------------------------------------------------------------*/
11832 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11833 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11834 &macBSSID))
11835 {
11836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011837 "This station does not exist in the WDI Station Table %d",
11838 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011839 wpalMutexRelease(&pWDICtx->wptMutex);
11840 return WDI_STATUS_E_FAILURE;
11841 }
11842
11843 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11844 if ( NULL == pBSSSes )
11845 {
11846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11847 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11848 __func__, MAC_ADDR_ARRAY(macBSSID));
11849
11850 wpalMutexRelease(&pWDICtx->wptMutex);
11851 return WDI_STATUS_E_NOT_ALLOWED;
11852 }
11853
11854 /*------------------------------------------------------------------------
11855 Check if this BSS is being currently processed or queued,
11856 if queued - queue the new request as well
11857 ------------------------------------------------------------------------*/
11858 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11859 {
11860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11861 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11862 __func__, MAC_ADDR_ARRAY(macBSSID));
11863
11864 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11865 wpalMutexRelease(&pWDICtx->wptMutex);
11866 return wdiStatus;
11867 }
11868
11869 wpalMutexRelease(&pWDICtx->wptMutex);
11870
11871 /*-----------------------------------------------------------------------
11872 Get message buffer
11873 -----------------------------------------------------------------------*/
11874 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11875 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11876 &pSendBuffer, &usDataOffset, &usSendSize))||
11877 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11878 {
11879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011880 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011881 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11882 WDI_ASSERT(0);
11883 return WDI_STATUS_E_FAILURE;
11884 }
11885
11886 halRssiRoamReqMsg.roamRssiReqParams.staId =
11887 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11888 wpalMemoryCopy( pSendBuffer+usDataOffset,
11889 &halRssiRoamReqMsg.roamRssiReqParams,
11890 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11891
11892 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11893 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11894
11895 /*-------------------------------------------------------------------------
11896 Send Get STA Request to HAL
11897 -------------------------------------------------------------------------*/
11898 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11899 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11900}/*WDI_ProcessGetRoamRssiReq*/
11901#endif
11902
Jeff Johnson295189b2012-06-20 16:38:30 -070011903/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011904 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011905 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011906
11907 @param pWDICtx: pointer to the WLAN DAL context
11908 pEventData: pointer to the event information structure
11909
Jeff Johnson295189b2012-06-20 16:38:30 -070011910 @see
11911 @return Result of the function call
11912*/
11913WDI_Status
11914WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011915(
Jeff Johnson295189b2012-06-20 16:38:30 -070011916 WDI_ControlBlockType* pWDICtx,
11917 WDI_EventInfoType* pEventData
11918)
11919{
11920 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11921 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11922
Jeff Johnsone7245742012-09-05 17:12:55 -070011923 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011924 wpt_uint16 usDataOffset = 0;
11925 wpt_uint16 usSendSize = 0;
11926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11927
11928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011929 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 -------------------------------------------------------------------------*/
11931 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11932 ( NULL == pEventData->pCBfnc))
11933 {
11934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011935 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011938 }
11939
11940 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11941 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11942
11943 /*-----------------------------------------------------------------------
11944 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011945 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011946 -----------------------------------------------------------------------*/
11947
Jeff Johnsone7245742012-09-05 17:12:55 -070011948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011949 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11950 &pSendBuffer, &usDataOffset, &usSendSize))||
11951 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11952 {
11953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011954 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011955 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011958 }
11959
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 wpalMemoryCopy( pSendBuffer+usDataOffset,
11961 &pwdiUpdateCfgParams->uConfigBufferLen,
11962 sizeof(wpt_uint32));
11963 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11964 pwdiUpdateCfgParams->pConfigBuffer,
11965 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011966
11967 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011968 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011969
11970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011971 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011972 -------------------------------------------------------------------------*/
11973
Jeff Johnsone7245742012-09-05 17:12:55 -070011974 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11975 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011976
11977}/*WDI_ProcessUpdateCfgReq*/
11978
11979
11980/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011981 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011982 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011983
11984 @param pWDICtx: pointer to the WLAN DAL context
11985 pEventData: pointer to the event information structure
11986
Jeff Johnson295189b2012-06-20 16:38:30 -070011987 @see
11988 @return Result of the function call
11989*/
11990WDI_Status
11991WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011992(
Jeff Johnson295189b2012-06-20 16:38:30 -070011993 WDI_ControlBlockType* pWDICtx,
11994 WDI_EventInfoType* pEventData
11995)
11996{
11997 WDI_AddBAReqParamsType* pwdiAddBAParams;
11998 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011999 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012000 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012001 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012002 wpt_uint16 usDataOffset = 0;
12003 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012004 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 wpt_macAddr macBSSID;
12006
12007 tAddBAReqMsg halAddBAReq;
12008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12009
12010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012011 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012012 -------------------------------------------------------------------------*/
12013 if (( NULL == pEventData ) ||
12014 ( NULL == pEventData->pEventData) ||
12015 ( NULL == pEventData->pCBfnc ))
12016 {
12017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012018 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012021 }
12022
12023 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12024 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12025
12026 /*-------------------------------------------------------------------------
12027 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012028 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012029 -------------------------------------------------------------------------*/
12030 wpalMutexAcquire(&pWDICtx->wptMutex);
12031
12032 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012033 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012034 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012035 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12036 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012037 &macBSSID))
12038 {
12039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012040 "This station does not exist in the WDI Station Table %d",
12041 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012042 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012044 }
12045
Jeff Johnsone7245742012-09-05 17:12:55 -070012046 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12047 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12050 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12051 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012052
12053 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012054 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012055 }
12056
12057 /*------------------------------------------------------------------------
12058 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012059 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012060 ------------------------------------------------------------------------*/
12061 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12062 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12064 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12065 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012066
Jeff Johnsone7245742012-09-05 17:12:55 -070012067 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012068 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012069 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012070 }
12071
12072
12073 wpalMutexRelease(&pWDICtx->wptMutex);
12074 /*-----------------------------------------------------------------------
12075 Get message buffer
12076 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012077 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012078 sizeof(halAddBAReq.addBAParams),
12079 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012080 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012081 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12082 {
12083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012084 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012088 }
12089
Jeff Johnsone7245742012-09-05 17:12:55 -070012090 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012091 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12092 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12093#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012094 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012095 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12096#endif
12097
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 wpalMemoryCopy( pSendBuffer+usDataOffset,
12099 &halAddBAReq.addBAParams,
12100 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012101
12102 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012103 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012104
12105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012106 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012107 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012108 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12109 wdiAddBARspCb, pEventData->pUserData,
12110 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012111}/*WDI_ProcessAddBAReq*/
12112
12113
12114
12115/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012116 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012117 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012118
12119 @param pWDICtx: pointer to the WLAN DAL context
12120 pEventData: pointer to the event information structure
12121
Jeff Johnson295189b2012-06-20 16:38:30 -070012122 @see
12123 @return Result of the function call
12124*/
12125WDI_Status
12126WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012127(
Jeff Johnson295189b2012-06-20 16:38:30 -070012128 WDI_ControlBlockType* pWDICtx,
12129 WDI_EventInfoType* pEventData
12130)
12131{
12132 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12133 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012134 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012135 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012136 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012137 wpt_uint16 usDataOffset = 0;
12138 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012139 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012140 wpt_uint16 index;
12141 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012142
Jeff Johnson295189b2012-06-20 16:38:30 -070012143 tTriggerBAReqMsg halTriggerBAReq;
12144 tTriggerBaReqCandidate* halTriggerBACandidate;
12145 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12147
12148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012149 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012150 -------------------------------------------------------------------------*/
12151 if (( NULL == pEventData ) ||
12152 ( NULL == pEventData->pEventData ) ||
12153 ( NULL == pEventData->pCBfnc ))
12154 {
12155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012156 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012159 }
12160
12161 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12162 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12163 /*-------------------------------------------------------------------------
12164 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012165 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012166 -------------------------------------------------------------------------*/
12167 wpalMutexAcquire(&pWDICtx->wptMutex);
12168
12169 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012170 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012171 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012172 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12173 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012174 &macBSSID))
12175 {
12176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012177 "This station does not exist in the WDI Station Table %d",
12178 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012179 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012181 }
12182
Jeff Johnsone7245742012-09-05 17:12:55 -070012183 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12184 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012185 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12187 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12188 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012189
12190 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012191 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012192 }
12193
12194 /*------------------------------------------------------------------------
12195 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012196 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012197 ------------------------------------------------------------------------*/
12198 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12199 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12201 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12202 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012203
Jeff Johnsone7245742012-09-05 17:12:55 -070012204 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012205 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012206 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012207 }
12208
12209
12210 wpalMutexRelease(&pWDICtx->wptMutex);
12211 /*-----------------------------------------------------------------------
12212 Get message buffer
12213 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012214 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12215 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012216 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012217 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012218 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12219 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012220 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012221 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012222 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012223 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12224 {
12225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012226 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012227 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012230 }
12231
Jeff Johnsone7245742012-09-05 17:12:55 -070012232 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012233 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012234 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012235 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12236
Jeff Johnsone7245742012-09-05 17:12:55 -070012237 wpalMemoryCopy( pSendBuffer+usDataOffset,
12238 &halTriggerBAReq.triggerBAParams,
12239 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012240
Jeff Johnsone7245742012-09-05 17:12:55 -070012241 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012242 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12243 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12244 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012245
12246 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012247 index++)
12248 {
12249 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12250 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12251 halTriggerBACandidate++;
12252 wdiTriggerBACandidate++;
12253 }
12254
12255 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012257
12258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012259 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012260 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012261 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12262 wdiTriggerBARspCb, pEventData->pUserData,
12263 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012264}/*WDI_ProcessTriggerBAReq*/
12265
12266
12267
12268/**
12269 @brief Process Update Beacon Params Request function (called when Main FSM
12270 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012271
12272 @param pWDICtx: pointer to the WLAN DAL context
12273 pEventData: pointer to the event information structure
12274
Jeff Johnson295189b2012-06-20 16:38:30 -070012275 @see
12276 @return Result of the function call
12277*/
12278WDI_Status
12279WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012280(
Jeff Johnson295189b2012-06-20 16:38:30 -070012281 WDI_ControlBlockType* pWDICtx,
12282 WDI_EventInfoType* pEventData
12283)
12284{
12285 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12286 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012287 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012288 wpt_uint16 usDataOffset = 0;
12289 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012290 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12292
12293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012294 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012295 -------------------------------------------------------------------------*/
12296 if (( NULL == pEventData ) ||
12297 ( NULL == pEventData->pEventData) ||
12298 ( NULL == pEventData->pCBfnc))
12299 {
12300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 }
12305
12306 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12307 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12308 /*-----------------------------------------------------------------------
12309 Get message buffer
12310 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012312 sizeof(halUpdateBeaconParams),
12313 &pSendBuffer, &usDataOffset, &usSendSize))||
12314 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12315 {
12316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012317 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012318 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012321 }
12322
12323 /*BSS Index of the BSS*/
12324 halUpdateBeaconParams.bssIdx =
12325 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12326 /*shortPreamble mode. HAL should update all the STA rates when it
12327 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012328 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012329 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12330 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012331 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012332 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12333 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012334 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012335 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12336
12337 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012338 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012339 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012340 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012341 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012342 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012343 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012344 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012345 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012346 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012347 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012348 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012349 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12350 halUpdateBeaconParams.fRIFSMode =
12351 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012352 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012353 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12354
Jeff Johnsone7245742012-09-05 17:12:55 -070012355 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12356 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012357
12358 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012359 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012360
12361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012362 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012363 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012364 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12365 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012366}/*WDI_ProcessUpdateBeaconParamsReq*/
12367
12368
12369
12370/**
12371 @brief Process Send Beacon template Request function (called when Main FSM
12372 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012373
12374 @param pWDICtx: pointer to the WLAN DAL context
12375 pEventData: pointer to the event information structure
12376
Jeff Johnson295189b2012-06-20 16:38:30 -070012377 @see
12378 @return Result of the function call
12379*/
12380WDI_Status
12381WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012382(
Jeff Johnson295189b2012-06-20 16:38:30 -070012383 WDI_ControlBlockType* pWDICtx,
12384 WDI_EventInfoType* pEventData
12385)
12386{
12387 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12388 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012389 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012390 wpt_uint16 usDataOffset = 0;
12391 wpt_uint16 usSendSize = 0;
12392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12393
12394 tSendBeaconReqMsg halSendBeaconReq;
12395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012397 -------------------------------------------------------------------------*/
12398 if (( NULL == pEventData ) ||
12399 ( NULL == pEventData->pEventData ) ||
12400 ( NULL == pEventData->pCBfnc ))
12401 {
12402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012403 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012404 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012405 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012406 }
12407
12408 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12409 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12410 /*-----------------------------------------------------------------------
12411 Get message buffer
12412 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012413 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012414 sizeof(halSendBeaconReq.sendBeaconParam),
12415 &pSendBuffer, &usDataOffset, &usSendSize))||
12416 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12417 {
12418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012419 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012420 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12421 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 }
12424
12425 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12426 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12427 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012428 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012429 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12430 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12431 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12432 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012433 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012434 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053012435 /* usP2PIeOffset should be atleast greater than timIeOffset */
12436 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12437 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12438 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12439 {
12440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12441 "Invalid usP2PIeOffset %hu",
12442 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12443 WDI_ASSERT(0);
12444 return WDI_STATUS_E_FAILURE;
12445 }
12446
Jeff Johnsone7245742012-09-05 17:12:55 -070012447 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012448 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012449
Jeff Johnsone7245742012-09-05 17:12:55 -070012450 wpalMemoryCopy( pSendBuffer+usDataOffset,
12451 &halSendBeaconReq.sendBeaconParam,
12452 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012453
12454 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012455 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012456
12457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012458 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012460 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12461 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012462}/*WDI_ProcessSendBeaconParamsReq*/
12463
12464/**
12465 @brief Process Update Beacon Params Request function (called when Main FSM
12466 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012467
12468 @param pWDICtx: pointer to the WLAN DAL context
12469 pEventData: pointer to the event information structure
12470
Jeff Johnson295189b2012-06-20 16:38:30 -070012471 @see
12472 @return Result of the function call
12473*/
12474WDI_Status
12475WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012476(
Jeff Johnson295189b2012-06-20 16:38:30 -070012477 WDI_ControlBlockType* pWDICtx,
12478 WDI_EventInfoType* pEventData
12479)
12480{
12481 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12482 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012483 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012484 wpt_uint16 usDataOffset = 0;
12485 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012486 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12488
12489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 -------------------------------------------------------------------------*/
12492 if (( NULL == pEventData ) ||
12493 ( NULL == pEventData->pEventData) ||
12494 ( NULL == pEventData->pCBfnc))
12495 {
12496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012497 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012500 }
12501
Jeff Johnsone7245742012-09-05 17:12:55 -070012502 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012503 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012504 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012505 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12506 /*-----------------------------------------------------------------------
12507 Get message buffer
12508 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012509 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012510 sizeof(halUpdateProbeRspTmplParams),
12511 &pSendBuffer, &usDataOffset, &usSendSize))||
12512 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12513 {
12514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012515 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012516 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012519 }
12520
12521 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012522 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012523 WDI_MAC_ADDR_LEN);
12524
Jeff Johnsone7245742012-09-05 17:12:55 -070012525 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012526 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12527
12528 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12529 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012531
12532
12533 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12534 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12535 WDI_PROBE_REQ_BITMAP_IE_LEN);
12536
Jeff Johnsone7245742012-09-05 17:12:55 -070012537 wpalMemoryCopy( pSendBuffer+usDataOffset,
12538 &halUpdateProbeRspTmplParams,
12539 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012540
12541 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012542 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012543
12544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012545 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012546 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012547 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12548 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12549 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012550}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12551
12552/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012553 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012554 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012555
12556 @param pWDICtx: pointer to the WLAN DAL context
12557 pEventData: pointer to the event information structure
12558
Jeff Johnson295189b2012-06-20 16:38:30 -070012559 @see
12560 @return Result of the function call
12561*/
12562WDI_Status
12563WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012564(
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 WDI_ControlBlockType* pWDICtx,
12566 WDI_EventInfoType* pEventData
12567)
12568{
12569
12570 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12571 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12572
12573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012574 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 -------------------------------------------------------------------------*/
12576 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012577 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012578 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012579 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012580 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12581 {
12582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012583 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012586 }
12587
12588 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012590 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12591
12592 /*cache the wdi nv request message here if the the first fragment
12593 * To issue the request to HAL for the next fragment */
12594 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12595 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012596 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12597 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012598 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12599
12600 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12601 pWDICtx->pRspCBUserData = pEventData->pUserData;
12602 }
12603
12604 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12605}
12606
12607/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012608 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012609 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012610
12611 @param pWDICtx: pointer to the WLAN DAL context
12612 pEventData: pointer to the event information structure
12613
Jeff Johnson295189b2012-06-20 16:38:30 -070012614 @see
12615 @return Result of the function call
12616*/
12617WDI_Status WDI_ProcessSetMaxTxPowerReq
12618(
12619 WDI_ControlBlockType* pWDICtx,
12620 WDI_EventInfoType* pEventData
12621)
12622{
12623 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12624 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012625 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012626 wpt_uint16 usDataOffset = 0;
12627 wpt_uint16 usSendSize = 0;
12628 tSetMaxTxPwrReq halSetMaxTxPower;
12629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12630
12631 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012632 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012633 -------------------------------------------------------------------------*/
12634 if (( NULL == pEventData ) ||
12635 ( NULL == pEventData->pEventData ) ||
12636 ( NULL == pEventData->pCBfnc ))
12637 {
12638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012639 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012642 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012643 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012644 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012645 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012646 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12647
12648 /*-----------------------------------------------------------------------
12649 Get message buffer
12650 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012651if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012652 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12653 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012654 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012655)))
12656 {
12657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012658 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012659 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012662 }
12663
12664 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12665 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12666 WDI_MAC_ADDR_LEN);
12667
12668 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12669 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12670 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012671 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012672 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012673
12674 wpalMemoryCopy( pSendBuffer+usDataOffset,
12675 &halSetMaxTxPower.setMaxTxPwrParams,
12676 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012677
12678 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012679 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012680
12681 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012683 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012684 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12685 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12686 WDI_SET_MAX_TX_POWER_RESP);
12687
Jeff Johnson295189b2012-06-20 16:38:30 -070012688}
12689
Arif Hussaina5ebce02013-08-09 15:09:58 -070012690/*
12691 @brief Process Set Max Tx Power Per Band Request function (called when Main
12692 FSM allows it)
12693
12694 @param pWDICtx: pointer to the WLAN DAL context
12695 pEventData: pointer to the event information structure
12696
12697 @see
12698 @return Result of the function call
12699*/
12700WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
12701(
12702 WDI_ControlBlockType* pWDICtx,
12703 WDI_EventInfoType* pEventData
12704)
12705{
12706 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
12707 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
12708 wpt_uint8* pSendBuffer = NULL;
12709 wpt_uint16 usDataOffset = 0;
12710 wpt_uint16 usSendSize = 0;
12711 tpSetMaxTxPwrPerBandReq phalSetMxTxPwrPerBand = NULL;
12712 WDI_Status rValue = WDI_STATUS_SUCCESS;
12713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12714
12715 /*-------------------------------------------------------------------------
12716 Sanity check
12717 -------------------------------------------------------------------------*/
12718 if (( NULL == pEventData ) ||
12719 ( NULL == pEventData->pEventData ) ||
12720 ( NULL == pEventData->pCBfnc ))
12721 {
12722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12723 "%s: Invalid parameters", __func__);
12724 WDI_ASSERT(0);
12725 return WDI_STATUS_E_FAILURE;
12726 }
12727 pwdiSetMaxTxPowerPerBandParams = \
12728 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
12729
12730 wdiSetMaxTxPowerPerBandRspCb = \
12731 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
12732
12733 /*-----------------------------------------------------------------------
12734 Get message buffer
12735 -----------------------------------------------------------------------*/
12736
12737 rValue = WDI_GetMessageBuffer(pWDICtx,
12738 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
12739 sizeof(tSetMaxTxPwrPerBandParams),
12740 &pSendBuffer, &usDataOffset, &usSendSize);
12741
12742 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
12743 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
12744 {
12745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12746 "Unable to get Set Max Tx Power Per Band req %p %p %p",
12747 pEventData, pwdiSetMaxTxPowerPerBandParams,
12748 wdiSetMaxTxPowerPerBandRspCb);
12749 WDI_ASSERT(0);
12750 return WDI_STATUS_E_FAILURE;
12751 }
12752
12753
12754 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandReq)(pSendBuffer + usDataOffset);
12755 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.bandInfo = \
12756 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
12757
12758 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.power = \
12759 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
12760
12761 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
12762 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
12763
12764 /*-------------------------------------------------------------------------
12765 Send Set Max Tx Power Per Band Request to HAL
12766 -------------------------------------------------------------------------*/
12767 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
12768 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
12769 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
12770}
12771
schang86c22c42013-03-13 18:41:24 -070012772/**
12773 @brief Process Set Tx Power Request function (called when Main
12774 FSM allows it)
12775
12776 @param pWDICtx: pointer to the WLAN DAL context
12777 pEventData: pointer to the event information structure
12778
12779 @see
12780 @return Result of the function call
12781*/
12782WDI_Status WDI_ProcessSetTxPowerReq
12783(
12784 WDI_ControlBlockType* pWDICtx,
12785 WDI_EventInfoType* pEventData
12786)
12787{
12788 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12789 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12790 wpt_uint8* pSendBuffer = NULL;
12791 wpt_uint16 usDataOffset = 0;
12792 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070012793 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070012794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12795
12796 /*-------------------------------------------------------------------------
12797 Sanity check
12798 -------------------------------------------------------------------------*/
12799 if (( NULL == pEventData ) ||
12800 ( NULL == pEventData->pEventData ) ||
12801 ( NULL == pEventData->pCBfnc ))
12802 {
12803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12804 "%s: Invalid parameters", __func__);
12805 WDI_ASSERT(0);
12806 return WDI_STATUS_E_FAILURE;
12807 }
12808
12809 pwdiSetTxPowerParams =
12810 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12811 wdiSetTxPowerRspCb =
12812 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12813
12814 /*-----------------------------------------------------------------------
12815 Get message buffer
12816 -----------------------------------------------------------------------*/
12817 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12818 sizeof(tSetTxPwrReqParams),
12819 &pSendBuffer, &usDataOffset, &usSendSize))||
12820 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12821 )))
12822 {
12823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012824 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070012825 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12826 WDI_ASSERT(0);
12827 return WDI_STATUS_E_FAILURE;
12828 }
12829
Leo Chang9a43db92013-03-25 17:39:58 -070012830 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12831 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12832 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070012833
12834 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12835 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12836
12837 /*-------------------------------------------------------------------------
12838 Send Set Tx Power Request to HAL
12839 -------------------------------------------------------------------------*/
12840 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12841 wdiSetTxPowerRspCb, pEventData->pUserData,
12842 WDI_SET_TX_POWER_RESP);
12843}
Jeff Johnson295189b2012-06-20 16:38:30 -070012844
12845/**
12846 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12847 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012848
12849 @param pWDICtx: pointer to the WLAN DAL context
12850 pEventData: pointer to the event information structure
12851
Jeff Johnson295189b2012-06-20 16:38:30 -070012852 @see
12853 @return Result of the function call
12854*/
12855WDI_Status
12856WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012857(
Jeff Johnson295189b2012-06-20 16:38:30 -070012858 WDI_ControlBlockType* pWDICtx,
12859 WDI_EventInfoType* pEventData
12860)
12861{
12862 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12863 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012864 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 wpt_uint16 usDataOffset = 0;
12866 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012867 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12869
12870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012872 -------------------------------------------------------------------------*/
12873 if (( NULL == pEventData ) ||
12874 ( NULL == pEventData->pEventData) ||
12875 ( NULL == pEventData->pCBfnc))
12876 {
12877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 }
12882
Jeff Johnsone7245742012-09-05 17:12:55 -070012883 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012884 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12887 /*-----------------------------------------------------------------------
12888 Get message buffer
12889 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012890 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12891 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 sizeof(halSetP2PGONOAParams),
12893 &pSendBuffer, &usDataOffset, &usSendSize))||
12894 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12895 {
12896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012897 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012898 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012901 }
12902
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012906 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12907 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012909 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012910 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012911 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012912 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012914 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012915 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12916
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 wpalMemoryCopy( pSendBuffer+usDataOffset,
12918 &halSetP2PGONOAParams,
12919 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012920
12921 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012922 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012923
12924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012926 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012927 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12928 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12929 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012930}/*WDI_ProcessP2PGONOAReq*/
12931
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053012932#ifdef FEATURE_WLAN_TDLS
12933
12934/**
12935 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12936 allows it)
12937
12938 @param pWDICtx: pointer to the WLAN DAL context
12939 pEventData: pointer to the event information structure
12940
12941 @see
12942 @return Result of the function call
12943*/
12944WDI_Status
12945WDI_ProcessTdlsLinkEstablishReq
12946(
12947 WDI_ControlBlockType* pWDICtx,
12948 WDI_EventInfoType* pEventData
12949)
12950{
12951 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12952 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12953 wpt_uint8* pSendBuffer = NULL;
12954 wpt_uint16 usDataOffset = 0;
12955 wpt_uint16 usSendSize = 0;
12956
12957 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12959
12960 /*-------------------------------------------------------------------------
12961 Sanity check
12962 -------------------------------------------------------------------------*/
12963 if (( NULL == pEventData ) ||
12964 ( NULL == pEventData->pEventData) ||
12965 ( NULL == pEventData->pCBfnc))
12966 {
12967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12968 "%s: Invalid parameters", __func__);
12969 WDI_ASSERT(0);
12970 return WDI_STATUS_E_FAILURE;
12971 }
12972 pwdiTDLSLinkEstablishReqParams =
12973 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12974 wdiTDLSLinkEstablishReqRspCb =
12975 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12976
12977
12978 /*-----------------------------------------------------------------------
12979 Get message buffer
12980 -----------------------------------------------------------------------*/
12981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12982 WDI_TDLS_LINK_ESTABLISH_REQ,
12983 sizeof(halSetTDLSLinkEstablishParams),
12984 &pSendBuffer, &usDataOffset, &usSendSize))||
12985 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12986 {
12987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012988 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053012989 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12990 WDI_ASSERT(0);
12991 return WDI_STATUS_E_FAILURE;
12992 }
12993
12994 halSetTDLSLinkEstablishParams.staIdx =
12995 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12996 halSetTDLSLinkEstablishParams.bIsResponder =
12997 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12998 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12999 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13000 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13001 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13002 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13003 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13004 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13005 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13006 halSetTDLSLinkEstablishParams.aAck = 0;
13007 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13008 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13009 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013010 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13011 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13012
13013 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13014 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13015 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13016 halSetTDLSLinkEstablishParams.validChannelsLen =
13017 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13018
13019 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13020 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13021 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13022 halSetTDLSLinkEstablishParams.validOperClassesLen =
13023 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013024
13025 wpalMemoryCopy( pSendBuffer+usDataOffset,
13026 &halSetTDLSLinkEstablishParams,
13027 sizeof(halSetTDLSLinkEstablishParams));
13028
13029 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13030 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13031
13032 /*-------------------------------------------------------------------------
13033 Send Update Probe Resp Template Request to HAL
13034 -------------------------------------------------------------------------*/
13035 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13036 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13037 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13038 return 0;
13039}/*WDI_ProcessTdlsLinkEstablishReq*/
13040
13041
13042#endif
13043
Jeff Johnson295189b2012-06-20 16:38:30 -070013044
13045
13046/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013047 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013048 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013049 @param None
13050
13051 @see
13052 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013053*/
13054void
13055WDI_SetPowerStateCb
13056(
13057 wpt_status status,
13058 unsigned int dxePhyAddr,
13059 void *pContext
13060)
13061{
13062 wpt_status wptStatus;
13063 WDI_ControlBlockType *pCB = NULL;
13064 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
13065 if(eWLAN_PAL_STATUS_E_FAILURE == status )
13066 {
13067 //it shouldn't happen, put an error msg
13068 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013069 /*
13070 * Trigger the event to bring the Enter BMPS req function to come
13071 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013072*/
13073 if( NULL != pContext )
13074 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013075 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 }
13077 else
13078 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013079 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013080 pCB = &gWDICb;
13081 }
13082 pCB->dxePhyAddr = dxePhyAddr;
13083 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13084 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13085 {
13086 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13087 "Failed to set an event");
13088
Jeff Johnsone7245742012-09-05 17:12:55 -070013089 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013090 }
13091 return;
13092}
13093
13094
13095/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013096 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013097 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013098
13099 @param pWDICtx: pointer to the WLAN DAL context
13100 pEventData: pointer to the event information structure
13101
Jeff Johnson295189b2012-06-20 16:38:30 -070013102 @see
13103 @return Result of the function call
13104*/
13105WDI_Status
13106WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013107(
Jeff Johnson295189b2012-06-20 16:38:30 -070013108 WDI_ControlBlockType* pWDICtx,
13109 WDI_EventInfoType* pEventData
13110)
13111{
Jeff Johnson43971f52012-07-17 12:26:56 -070013112 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013113 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013114 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013115 wpt_uint16 usDataOffset = 0;
13116 wpt_uint16 usSendSize = 0;
13117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13118
13119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013120 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013121 -------------------------------------------------------------------------*/
13122 if (( NULL == pEventData ) ||
13123 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
13124 {
13125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013126 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013128 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013129 }
13130
13131 /*-----------------------------------------------------------------------
13132 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013133 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013134 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013135 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013136 0,
13137 &pSendBuffer, &usDataOffset, &usSendSize))||
13138 ( usSendSize < (usDataOffset )))
13139 {
13140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013141 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013142 pEventData, wdiEnterImpsRspCb);
13143 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013144 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 }
13146
13147 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013148 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13149 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013150 {
13151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13152 "WDI Init failed to reset an event");
13153
Jeff Johnsone7245742012-09-05 17:12:55 -070013154 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013155 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013156 }
13157
13158 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013159 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13160 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013162 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013163 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013164 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013165 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013166
13167 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013168 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013169 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013170 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13171 WDI_SET_POWER_STATE_TIMEOUT);
13172 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013173 {
13174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13175 "WDI Init failed to wait on an event");
13176
Jeff Johnsone7245742012-09-05 17:12:55 -070013177 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013178 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013179 }
13180
13181 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013182 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013183 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013184 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13185 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013186
13187fail:
13188 // Release the message buffer so we don't leak
13189 wpalMemoryFree(pSendBuffer);
13190
13191failRequest:
13192 //WDA should have failure check to avoid the memory leak
13193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013194}/*WDI_ProcessEnterImpsReq*/
13195
13196/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013197 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013198 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013199
13200 @param pWDICtx: pointer to the WLAN DAL context
13201 pEventData: pointer to the event information structure
13202
Jeff Johnson295189b2012-06-20 16:38:30 -070013203 @see
13204 @return Result of the function call
13205*/
13206WDI_Status
13207WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013208(
Jeff Johnson295189b2012-06-20 16:38:30 -070013209 WDI_ControlBlockType* pWDICtx,
13210 WDI_EventInfoType* pEventData
13211)
13212{
13213 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013214 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013215 wpt_uint16 usDataOffset = 0;
13216 wpt_uint16 usSendSize = 0;
13217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13218
13219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013220 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013221 -------------------------------------------------------------------------*/
13222 if (( NULL == pEventData ) ||
13223 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13224 {
13225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013226 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013229 }
13230
13231 /*-----------------------------------------------------------------------
13232 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013233 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013234 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013235 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013236 0,
13237 &pSendBuffer, &usDataOffset, &usSendSize))||
13238 ( usSendSize < (usDataOffset )))
13239 {
13240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013241 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013242 pEventData, wdiExitImpsRspCb);
13243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 }
13246
13247 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013248 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013249 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013250 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13251 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013252}/*WDI_ProcessExitImpsReq*/
13253
13254/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013255 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013256 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013257
13258 @param pWDICtx: pointer to the WLAN DAL context
13259 pEventData: pointer to the event information structure
13260
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 @see
13262 @return Result of the function call
13263*/
13264WDI_Status
13265WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013266(
Jeff Johnson295189b2012-06-20 16:38:30 -070013267 WDI_ControlBlockType* pWDICtx,
13268 WDI_EventInfoType* pEventData
13269)
13270{
13271 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13272 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = 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 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013277 wpt_status wptStatus;
13278
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13280
13281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013283 -------------------------------------------------------------------------*/
13284 if (( NULL == pEventData ) ||
13285 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13286 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13287 {
13288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013289 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013290 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013291 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013292 }
13293
13294 /*-----------------------------------------------------------------------
13295 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013296 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013297 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013298 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013299 sizeof(enterBmpsReq),
13300 &pSendBuffer, &usDataOffset, &usSendSize))||
13301 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13302 {
13303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013304 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013305 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13306 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013307 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013308 }
13309
13310 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013311 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13312 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013313 {
13314 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13315 "WDI Init failed to reset an event");
13316
Jeff Johnsone7245742012-09-05 17:12:55 -070013317 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013318 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013319 }
13320
13321 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013322 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13323 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13324 {
13325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013326 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013327 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013328 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013329 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013330
13331/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013332 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013333 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013334 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13335 WDI_SET_POWER_STATE_TIMEOUT);
13336 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013337 {
13338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13339 "WDI Init failed to wait on an event");
13340
Jeff Johnsone7245742012-09-05 17:12:55 -070013341 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013342 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013343 }
13344
13345 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13346
13347 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13348 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13349 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13350 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13351
13352 // For CCX and 11R Roaming
13353 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13354 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13355 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13356
13357 wpalMemoryCopy( pSendBuffer+usDataOffset,
13358 &enterBmpsReq,
13359 sizeof(enterBmpsReq));
13360
13361 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013362 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013363
13364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013365 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013366 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013367 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13368 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013369
13370fail:
13371 // Release the message buffer so we don't leak
13372 wpalMemoryFree(pSendBuffer);
13373
13374failRequest:
13375 //WDA should have failure check to avoid the memory leak
13376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013377}/*WDI_ProcessEnterBmpsReq*/
13378
13379/**
13380 @brief Process Exit BMPS Request function (called when Main FSM
13381 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013382
13383 @param pWDICtx: pointer to the WLAN DAL context
13384 pEventData: pointer to the event information structure
13385
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 @see
13387 @return Result of the function call
13388*/
13389WDI_Status
13390WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013391(
Jeff Johnson295189b2012-06-20 16:38:30 -070013392 WDI_ControlBlockType* pWDICtx,
13393 WDI_EventInfoType* pEventData
13394)
13395{
13396 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13397 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013398 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013399 wpt_uint16 usDataOffset = 0;
13400 wpt_uint16 usSendSize = 0;
13401 tHalExitBmpsReqParams exitBmpsReq;
13402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13403
13404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013405 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013406 -------------------------------------------------------------------------*/
13407 if (( NULL == pEventData ) ||
13408 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13409 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13410 {
13411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013412 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013413 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013414 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013415 }
13416
13417 /*-----------------------------------------------------------------------
13418 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013419 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013420 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013421 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013422 sizeof(exitBmpsReq),
13423 &pSendBuffer, &usDataOffset, &usSendSize))||
13424 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13425 {
13426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013427 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013428 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13429 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013430 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 }
13432 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13433
Jeff Johnsone7245742012-09-05 17:12:55 -070013434 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13435
Jeff Johnson295189b2012-06-20 16:38:30 -070013436 wpalMemoryCopy( pSendBuffer+usDataOffset,
13437 &exitBmpsReq,
13438 sizeof(exitBmpsReq));
13439
13440 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013441 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013442
13443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013444 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013446 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13447 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013448}/*WDI_ProcessExitBmpsReq*/
13449
13450/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013451 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013453
13454 @param pWDICtx: pointer to the WLAN DAL context
13455 pEventData: pointer to the event information structure
13456
Jeff Johnson295189b2012-06-20 16:38:30 -070013457 @see
13458 @return Result of the function call
13459*/
13460WDI_Status
13461WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013462(
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 WDI_ControlBlockType* pWDICtx,
13464 WDI_EventInfoType* pEventData
13465)
13466{
13467 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13468 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013469 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 wpt_uint16 usDataOffset = 0;
13471 wpt_uint16 usSendSize = 0;
13472 tUapsdReqParams enterUapsdReq;
13473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13474
13475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013476 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013477 -------------------------------------------------------------------------*/
13478 if (( NULL == pEventData ) ||
13479 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13480 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13481 {
13482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013483 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013484 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013485 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013486 }
13487
13488 /*-----------------------------------------------------------------------
13489 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013491 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 sizeof(enterUapsdReq),
13494 &pSendBuffer, &usDataOffset, &usSendSize))||
13495 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13496 {
13497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013498 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013499 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13500 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013502 }
13503
13504 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13505 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13506 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13507 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13508 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13509 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13510 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13511 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013512 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013513
Jeff Johnsone7245742012-09-05 17:12:55 -070013514 wpalMemoryCopy( pSendBuffer+usDataOffset,
13515 &enterUapsdReq,
13516 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013517
13518 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013519 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013520
13521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013522 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013524 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13525 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013526}/*WDI_ProcessEnterUapsdReq*/
13527
13528/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013529 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013531
13532 @param pWDICtx: pointer to the WLAN DAL context
13533 pEventData: pointer to the event information structure
13534
Jeff Johnson295189b2012-06-20 16:38:30 -070013535 @see
13536 @return Result of the function call
13537*/
13538WDI_Status
13539WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013540(
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 WDI_ControlBlockType* pWDICtx,
13542 WDI_EventInfoType* pEventData
13543)
13544{
13545 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013546 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013547 wpt_uint16 usDataOffset = 0;
13548 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013549 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13550 wpt_uint8 bssIdx = 0;
13551
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13553
13554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013555 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013556 -------------------------------------------------------------------------*/
13557 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013558 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013559 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13560 {
13561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013565 }
13566
13567 /*-----------------------------------------------------------------------
13568 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013569 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013570 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013571 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013572 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013573 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013574 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013575 {
13576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013577 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013578 pEventData, wdiExitUapsdRspCb);
13579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013581 }
13582
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013583 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13584
13585 wpalMemoryCopy( pSendBuffer+usDataOffset,
13586 &bssIdx,
13587 sizeof(wpt_uint8));
13588
13589 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13590 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13591
Jeff Johnson295189b2012-06-20 16:38:30 -070013592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013593 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013594 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013595 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13596 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013597}/*WDI_ProcessExitUapsdReq*/
13598
13599/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013600 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013601 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013602
13603 @param pWDICtx: pointer to the WLAN DAL context
13604 pEventData: pointer to the event information structure
13605
Jeff Johnson295189b2012-06-20 16:38:30 -070013606 @see
13607 @return Result of the function call
13608*/
13609WDI_Status
13610WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013611(
Jeff Johnson295189b2012-06-20 16:38:30 -070013612 WDI_ControlBlockType* pWDICtx,
13613 WDI_EventInfoType* pEventData
13614)
13615{
13616 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13617 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013618 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013619 wpt_uint16 usDataOffset = 0;
13620 wpt_uint16 usSendSize = 0;
13621 tUapsdInfo uapsdAcParamsReq;
13622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13623
13624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013625 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013626 -------------------------------------------------------------------------*/
13627 if (( NULL == pEventData ) ||
13628 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13629 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13630 {
13631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013632 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013635 }
13636
13637 /*-----------------------------------------------------------------------
13638 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013639 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013640 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013641 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013642 sizeof(uapsdAcParamsReq),
13643 &pSendBuffer, &usDataOffset, &usSendSize))||
13644 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13645 {
13646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013647 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013648 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013651 }
13652
13653 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13654 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13655 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13656 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13657 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13658 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13659
Jeff Johnsone7245742012-09-05 17:12:55 -070013660 wpalMemoryCopy( pSendBuffer+usDataOffset,
13661 &uapsdAcParamsReq,
13662 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013663
13664 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013665 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013666
13667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013668 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013669 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013670 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13671 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013672}/*WDI_ProcessSetUapsdAcParamsReq*/
13673
13674/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013675 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013676 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013677
13678 @param pWDICtx: pointer to the WLAN DAL context
13679 pEventData: pointer to the event information structure
13680
Jeff Johnson295189b2012-06-20 16:38:30 -070013681 @see
13682 @return Result of the function call
13683*/
13684WDI_Status
13685WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013686(
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 WDI_ControlBlockType* pWDICtx,
13688 WDI_EventInfoType* pEventData
13689)
13690{
13691 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13692 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013693 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013694 wpt_uint16 usDataOffset = 0;
13695 wpt_uint16 usSendSize = 0;
13696 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13697
13698 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013699 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013700 -------------------------------------------------------------------------*/
13701 if (( NULL == pEventData ) ||
13702 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13703 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13704 {
13705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013706 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013707 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013708 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013709 }
13710
13711 /*-----------------------------------------------------------------------
13712 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013713 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013714 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013715 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013716 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13717 &pSendBuffer, &usDataOffset, &usSendSize))||
13718 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13719 {
13720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013721 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013722 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 }
13726
Jeff Johnsone7245742012-09-05 17:12:55 -070013727 wpalMemoryCopy( pSendBuffer+usDataOffset,
13728 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13729 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013730
13731 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013732 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013733
13734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013735 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013736 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013737 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13738 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013739}/*WDI_ProcessUpdateUapsdParamsReq*/
13740
13741/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013742 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013743 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013744
13745 @param pWDICtx: pointer to the WLAN DAL context
13746 pEventData: pointer to the event information structure
13747
Jeff Johnson295189b2012-06-20 16:38:30 -070013748 @see
13749 @return Result of the function call
13750*/
13751WDI_Status
13752WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013753(
Jeff Johnson295189b2012-06-20 16:38:30 -070013754 WDI_ControlBlockType* pWDICtx,
13755 WDI_EventInfoType* pEventData
13756)
13757{
13758 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13759 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 wpt_uint16 usDataOffset = 0;
13762 wpt_uint16 usSendSize = 0;
13763 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13764
13765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13766
13767 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013769 -------------------------------------------------------------------------*/
13770 if (( NULL == pEventData ) ||
13771 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13772 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13773 {
13774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013775 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013776 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013778 }
13779
13780 /*-----------------------------------------------------------------------
13781 Get message buffer
13782 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013783 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013784 sizeof(halRxpFilterParams),
13785 &pSendBuffer, &usDataOffset, &usSendSize))||
13786 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13787 {
13788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013789 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013790 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013793 }
13794
Jeff Johnsone7245742012-09-05 17:12:55 -070013795 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013796 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013797 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13799
Jeff Johnsone7245742012-09-05 17:12:55 -070013800 wpalMemoryCopy( pSendBuffer+usDataOffset,
13801 &halRxpFilterParams,
13802 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013803
13804 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013805 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013806
13807 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013808 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013809 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013810 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13811 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013812}/*WDI_ProcessConfigureRxpFilterReq*/
13813
13814/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013815 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013816 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013817
13818 @param pWDICtx: pointer to the WLAN DAL context
13819 pEventData: pointer to the event information structure
13820
Jeff Johnson295189b2012-06-20 16:38:30 -070013821 @see
13822 @return Result of the function call
13823*/
13824WDI_Status
13825WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013826(
Jeff Johnson295189b2012-06-20 16:38:30 -070013827 WDI_ControlBlockType* pWDICtx,
13828 WDI_EventInfoType* pEventData
13829)
13830{
13831 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13832 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013833 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013834 wpt_uint16 usDataOffset = 0;
13835 wpt_uint16 usSendSize = 0;
13836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13837
13838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013839 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013840 -------------------------------------------------------------------------*/
13841 if (( NULL == pEventData ) ||
13842 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13843 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13844 {
13845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013846 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013849 }
13850
13851 /*-----------------------------------------------------------------------
13852 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013853 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013854 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013855 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013856 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13857 &pSendBuffer, &usDataOffset, &usSendSize))||
13858 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13859 {
13860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013861 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013862 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13863 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013864 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 }
13866
Jeff Johnsone7245742012-09-05 17:12:55 -070013867 wpalMemoryCopy( pSendBuffer+usDataOffset,
13868 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13869 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13870 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13871 &pwdiBeaconFilterParams->aFilters[0],
13872 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013873
13874 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013875 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013876
13877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013878 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013879 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013880 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13881 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013882}/*WDI_ProcessSetBeaconFilterReq*/
13883
13884/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013885 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013886 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013887
13888 @param pWDICtx: pointer to the WLAN DAL context
13889 pEventData: pointer to the event information structure
13890
Jeff Johnson295189b2012-06-20 16:38:30 -070013891 @see
13892 @return Result of the function call
13893*/
13894WDI_Status
13895WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013896(
Jeff Johnson295189b2012-06-20 16:38:30 -070013897 WDI_ControlBlockType* pWDICtx,
13898 WDI_EventInfoType* pEventData
13899)
13900{
13901 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13902 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013903 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013904 wpt_uint16 usDataOffset = 0;
13905 wpt_uint16 usSendSize = 0;
13906 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13907
13908 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013909 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013910 -------------------------------------------------------------------------*/
13911 if (( NULL == pEventData ) ||
13912 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13913 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13914 {
13915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013919 }
13920
13921 /*-----------------------------------------------------------------------
13922 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013923 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013924 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013925 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013926 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13927 &pSendBuffer, &usDataOffset, &usSendSize))||
13928 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13929 {
13930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013931 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013935 }
13936
Jeff Johnsone7245742012-09-05 17:12:55 -070013937 wpalMemoryCopy( pSendBuffer+usDataOffset,
13938 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13939 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013940
13941 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013942 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013943
13944 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013945 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013946 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013947 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13948 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013949}
13950
13951/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013952 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013953 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013954
13955 @param pWDICtx: pointer to the WLAN DAL context
13956 pEventData: pointer to the event information structure
13957
Jeff Johnson295189b2012-06-20 16:38:30 -070013958 @see
13959 @return Result of the function call
13960*/
13961WDI_Status
13962WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013963(
Jeff Johnson295189b2012-06-20 16:38:30 -070013964 WDI_ControlBlockType* pWDICtx,
13965 WDI_EventInfoType* pEventData
13966)
13967{
13968 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13969 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013970 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013971 wpt_uint16 usDataOffset = 0;
13972 wpt_uint16 usSendSize = 0;
13973 tHalRSSIThresholds rssiThresholdsReq;
13974 WDI_Status ret_status = 0;
13975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13976
13977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013978 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013979 -------------------------------------------------------------------------*/
13980 if (( NULL == pEventData ) ||
13981 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13982 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13983 {
13984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013985 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 }
13989
13990 /*-----------------------------------------------------------------------
13991 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013992 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013993 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013994 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013995 sizeof(rssiThresholdsReq),
13996 &pSendBuffer, &usDataOffset, &usSendSize))||
13997 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13998 {
13999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014000 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014001 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014004 }
14005
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014007 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014008 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014009 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014010 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014011 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014014 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014015 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014016 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014017 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014018 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014019 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014020 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014021 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014022 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014023 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014024 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14026
Jeff Johnsone7245742012-09-05 17:12:55 -070014027 wpalMemoryCopy( pSendBuffer+usDataOffset,
14028 &rssiThresholdsReq,
14029 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014030
14031 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014032 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014033
14034 /*-------------------------------------------------------------------------
14035 Send Set threshold req to HAL
14036 -------------------------------------------------------------------------*/
14037 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14038 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14039 {
14040 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14041 // req. Then as a result of processing the threshold cross ind, we trigger
14042 // a Set threshold req, then we need to indicate to WDI that it needs to
14043 // go to busy state as a result of the indication as we sent a req in the
14044 // same WDI context.
14045 // Hence expected state transition is to busy.
14046 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14047 }
14048
14049 return ret_status;
14050}
14051
14052/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014055
14056 @param pWDICtx: pointer to the WLAN DAL context
14057 pEventData: pointer to the event information structure
14058
Jeff Johnson295189b2012-06-20 16:38:30 -070014059 @see
14060 @return Result of the function call
14061*/
14062WDI_Status
14063WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014064(
Jeff Johnson295189b2012-06-20 16:38:30 -070014065 WDI_ControlBlockType* pWDICtx,
14066 WDI_EventInfoType* pEventData
14067)
14068{
14069 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14070 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014071 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014072 wpt_uint16 usDataOffset = 0;
14073 wpt_uint16 usSendSize = 0;
14074 tHalHostOffloadReq hostOffloadParams;
14075 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014076 wpt_uint8 ucCurrentBSSSesIdx = 0;
14077 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014078
14079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14080
14081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014082 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014083 -------------------------------------------------------------------------*/
14084 if (( NULL == pEventData ) ||
14085 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14086 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14087 {
14088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014090 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014091 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 }
14093
14094 /*-----------------------------------------------------------------------
14095 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014096 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014097 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014098 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014099 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14100 &pSendBuffer, &usDataOffset, &usSendSize))||
14101 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14102 {
14103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014104 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014105 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14106 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014107 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014108 }
14109
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014110 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14111 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14112 &pBSSSes);
14113 if ( NULL == pBSSSes )
14114 {
14115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014116 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14117 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014118 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014119 }
14120
Jeff Johnson295189b2012-06-20 16:38:30 -070014121 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14122 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014123
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14125 {
14126 // ARP Offload
14127 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14128 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14129 4);
14130 }
14131 else
14132 {
14133 // NS Offload
14134 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14135 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14136 16);
14137
14138#ifdef WLAN_NS_OFFLOAD
14139 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14140 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14141 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14142 16);
14143 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14144 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14145 16);
14146 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14147 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14148 16);
14149 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14150 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14151 16);
14152 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14153 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14154 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014155 nsOffloadParams.srcIPv6AddrValid =
14156 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14157
14158 nsOffloadParams.targetIPv6Addr1Valid =
14159 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14160
14161 nsOffloadParams.targetIPv6Addr2Valid =
14162 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14163
14164 nsOffloadParams.slotIndex =
14165 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014166
Jeff Johnson295189b2012-06-20 16:38:30 -070014167#endif // WLAN_NS_OFFLOAD
14168 }
14169
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014170 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14171
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 // copy hostOffloadParams into pSendBuffer
14173 wpalMemoryCopy( pSendBuffer+usDataOffset,
14174 &hostOffloadParams,
14175 sizeof(hostOffloadParams));
14176
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014177 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014178 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014179 // copy nsOffloadParams into pSendBuffer
14180 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014181 &nsOffloadParams,
14182 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014183 }
14184 else
14185 {
14186#ifdef WLAN_NS_OFFLOAD
14187 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14188 {
14189 // copy nsOffloadParams into pSendBuffer
14190 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14191 &nsOffloadParams,
14192 sizeof(nsOffloadParams));
14193 }
14194#endif
14195 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014196
14197 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014198 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014199
14200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014201 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014203 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14204 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014205
14206fail:
14207 // Release the message buffer so we don't leak
14208 wpalMemoryFree(pSendBuffer);
14209
14210failRequest:
14211 //WDA should have failure check to avoid the memory leak
14212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014213}/*WDI_ProcessHostOffloadReq*/
14214
14215/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014216 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014217 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014218
14219 @param pWDICtx: pointer to the WLAN DAL context
14220 pEventData: pointer to the event information structure
14221
Jeff Johnson295189b2012-06-20 16:38:30 -070014222 @see
14223 @return Result of the function call
14224*/
14225WDI_Status
14226WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014227(
Jeff Johnson295189b2012-06-20 16:38:30 -070014228 WDI_ControlBlockType* pWDICtx,
14229 WDI_EventInfoType* pEventData
14230)
14231{
14232 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14233 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014234 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014235 wpt_uint16 usDataOffset = 0;
14236 wpt_uint16 usSendSize = 0;
14237 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014238 wpt_uint8 ucCurrentBSSSesIdx = 0;
14239 WDI_BSSSessionType* pBSSSes = NULL;
14240
Jeff Johnson295189b2012-06-20 16:38:30 -070014241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14242
14243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014244 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014245 -------------------------------------------------------------------------*/
14246 if (( NULL == pEventData ) ||
14247 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14248 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14249 {
14250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14251 "Invalid parameters in Keep Alive req");
14252 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014253 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014254 }
14255
14256 /*-----------------------------------------------------------------------
14257 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014258 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014259 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014260 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014261 sizeof(keepAliveReq),
14262 &pSendBuffer, &usDataOffset, &usSendSize))||
14263 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14264 {
14265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014266 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014267 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14268 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014269 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014270 }
14271
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014272 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14273 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14274 &pBSSSes);
14275 if ( NULL == pBSSSes )
14276 {
14277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014278 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014279 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014280 }
14281
Jeff Johnson295189b2012-06-20 16:38:30 -070014282 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14283 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14284
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014285 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014286
Jeff Johnson295189b2012-06-20 16:38:30 -070014287 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14288 {
14289 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14290 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14291 HAL_IPV4_ADDR_LEN);
14292 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14293 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014294 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014295 wpalMemoryCopy(keepAliveReq.destMacAddr,
14296 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14297 HAL_MAC_ADDR_LEN);
14298 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014299
14300 wpalMemoryCopy( pSendBuffer+usDataOffset,
14301 &keepAliveReq,
14302 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014303
14304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014305 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014306
14307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014308 "Process keep alive req time period %d",
14309 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014310
14311 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014312 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014313
14314 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14315 "Sending keep alive req to HAL");
14316
14317 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014318 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014319 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014320 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14321 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014322
14323fail:
14324 // Release the message buffer so we don't leak
14325 wpalMemoryFree(pSendBuffer);
14326
14327failRequest:
14328 //WDA should have failure check to avoid the memory leak
14329 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014330}/*WDI_ProcessKeepAliveReq*/
14331
14332
14333/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014335 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014336
14337 @param pWDICtx: pointer to the WLAN DAL context
14338 pEventData: pointer to the event information structure
14339
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 @see
14341 @return Result of the function call
14342*/
14343WDI_Status
14344WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014345(
Jeff Johnson295189b2012-06-20 16:38:30 -070014346 WDI_ControlBlockType* pWDICtx,
14347 WDI_EventInfoType* pEventData
14348)
14349{
14350 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14351 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014352 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014353 wpt_uint16 usDataOffset = 0;
14354 wpt_uint16 usSendSize = 0;
14355 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014356 wpt_uint8 ucCurrentBSSSesIdx = 0;
14357 WDI_BSSSessionType* pBSSSes = NULL;
14358
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14360
14361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014363 -------------------------------------------------------------------------*/
14364 if (( NULL == pEventData ) ||
14365 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14366 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14367 {
14368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014369 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014370 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014371 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014372 }
14373
14374 /*-----------------------------------------------------------------------
14375 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 sizeof(wowlAddBcPtrnReq),
14380 &pSendBuffer, &usDataOffset, &usSendSize))||
14381 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14382 {
14383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014384 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014385 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14386 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014387 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 }
14389
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014390 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14391 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14392 &pBSSSes);
14393 if ( NULL == pBSSSes )
14394 {
14395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014396 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014397 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014398 }
14399
Jeff Johnsone7245742012-09-05 17:12:55 -070014400 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014401 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014402 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014403 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014404 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014405 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014406 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014407 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14408
14409 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14410 {
14411 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14412 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14413 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14414 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14415 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14416 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14417 }
14418 else
14419 {
14420 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14421 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14422 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14423 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14424 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14425 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14426
14427 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14428 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14429 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14430 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14431 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14432 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14433 }
14434
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014435 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14436
Jeff Johnson295189b2012-06-20 16:38:30 -070014437 wpalMemoryCopy( pSendBuffer+usDataOffset,
14438 &wowlAddBcPtrnReq,
14439 sizeof(wowlAddBcPtrnReq));
14440
14441 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014442 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014443
14444 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014445 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014446 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014447 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14448 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014449fail:
14450 // Release the message buffer so we don't leak
14451 wpalMemoryFree(pSendBuffer);
14452
14453failRequest:
14454 //WDA should have failure check to avoid the memory leak
14455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014456}/*WDI_ProcessWowlAddBcPtrnReq*/
14457
14458/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014459 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014460 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014461
14462 @param pWDICtx: pointer to the WLAN DAL context
14463 pEventData: pointer to the event information structure
14464
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 @see
14466 @return Result of the function call
14467*/
14468WDI_Status
14469WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014470(
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 WDI_ControlBlockType* pWDICtx,
14472 WDI_EventInfoType* pEventData
14473)
14474{
14475 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14476 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014477 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014478 wpt_uint16 usDataOffset = 0;
14479 wpt_uint16 usSendSize = 0;
14480 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014481 wpt_uint8 ucCurrentBSSSesIdx = 0;
14482 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14484
14485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 -------------------------------------------------------------------------*/
14488 if (( NULL == pEventData ) ||
14489 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14490 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14491 {
14492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014494 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014495 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014496 }
14497
14498 /*-----------------------------------------------------------------------
14499 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014500 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014502 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014503 sizeof(wowlDelBcPtrnReq),
14504 &pSendBuffer, &usDataOffset, &usSendSize))||
14505 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14506 {
14507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014508 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014509 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14510 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014511 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 }
14513
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014514 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14515 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14516 &pBSSSes);
14517 if ( NULL == pBSSSes )
14518 {
14519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014520 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014521 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014522 }
14523
Jeff Johnsone7245742012-09-05 17:12:55 -070014524 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014525 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014526
14527 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14528
Jeff Johnsone7245742012-09-05 17:12:55 -070014529 wpalMemoryCopy( pSendBuffer+usDataOffset,
14530 &wowlDelBcPtrnReq,
14531 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014532
14533 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014534 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014535
14536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014537 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014538 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014539 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14540 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014541
14542fail:
14543 // Release the message buffer so we don't leak
14544 wpalMemoryFree(pSendBuffer);
14545
14546failRequest:
14547 //WDA should have failure check to avoid the memory leak
14548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014549}/*WDI_ProcessWowlDelBcPtrnReq*/
14550
14551/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014552 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014553 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014554
14555 @param pWDICtx: pointer to the WLAN DAL context
14556 pEventData: pointer to the event information structure
14557
Jeff Johnson295189b2012-06-20 16:38:30 -070014558 @see
14559 @return Result of the function call
14560*/
14561WDI_Status
14562WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014563(
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 WDI_ControlBlockType* pWDICtx,
14565 WDI_EventInfoType* pEventData
14566)
14567{
14568 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14569 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014570 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 wpt_uint16 usDataOffset = 0;
14572 wpt_uint16 usSendSize = 0;
14573 tHalWowlEnterParams wowlEnterReq;
14574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14575
14576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014578 -------------------------------------------------------------------------*/
14579 if (( NULL == pEventData ) ||
14580 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14581 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14582 {
14583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014584 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014587 }
14588
14589 /*-----------------------------------------------------------------------
14590 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014592 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014593 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014594 sizeof(wowlEnterReq),
14595 &pSendBuffer, &usDataOffset, &usSendSize))||
14596 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14597 {
14598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014599 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014600 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014603 }
14604
Kumar Anandaca924e2013-07-22 14:35:34 -070014605 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14606
Jeff Johnsone7245742012-09-05 17:12:55 -070014607 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014608 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014609 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014611 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014612 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014613 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014614 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014615 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014616 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014617 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014619 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014620 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014621 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014622 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14623
14624#ifdef WLAN_WAKEUP_EVENTS
14625 wowlEnterReq.ucWoWEAPIDRequestEnable =
14626 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14627
14628 wowlEnterReq.ucWoWEAPOL4WayEnable =
14629 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14630
14631 wowlEnterReq.ucWowNetScanOffloadMatch =
14632 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14633
14634 wowlEnterReq.ucWowGTKRekeyError =
14635 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14636
14637 wowlEnterReq.ucWoWBSSConnLoss =
14638 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14639#endif // WLAN_WAKEUP_EVENTS
14640
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014641 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14642
Jeff Johnson295189b2012-06-20 16:38:30 -070014643 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14644 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14645 sizeof(tSirMacAddr));
14646
Jeff Johnsone7245742012-09-05 17:12:55 -070014647 wpalMemoryCopy( pSendBuffer+usDataOffset,
14648 &wowlEnterReq,
14649 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014650
14651 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014652 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014653
14654 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014655 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014656 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014657 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14658 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014659}/*WDI_ProcessWowlEnterReq*/
14660
14661/**
14662 @brief Process Wowl exit Request function (called when Main FSM
14663 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014664
14665 @param pWDICtx: pointer to the WLAN DAL context
14666 pEventData: pointer to the event information structure
14667
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 @see
14669 @return Result of the function call
14670*/
14671WDI_Status
14672WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014673(
Jeff Johnson295189b2012-06-20 16:38:30 -070014674 WDI_ControlBlockType* pWDICtx,
14675 WDI_EventInfoType* pEventData
14676)
14677{
14678 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014679 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014680 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 wpt_uint16 usDataOffset = 0;
14682 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014683 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14685
14686 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014687 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014688 -------------------------------------------------------------------------*/
14689 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014690 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014691 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14692 {
14693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014694 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014695 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014697 }
14698
14699 /*-----------------------------------------------------------------------
14700 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014704 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014706 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014707 {
14708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014709 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014710 pEventData, wdiWowlExitCb);
14711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014713 }
14714
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014715 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14716
14717 wpalMemoryCopy( pSendBuffer+usDataOffset,
14718 &wowlExitparams,
14719 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014721 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014722 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014723 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14724 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014725}/*WDI_ProcessWowlExitReq*/
14726
14727/**
14728 @brief Process Configure Apps Cpu Wakeup State Request function
14729 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014730
14731 @param pWDICtx: pointer to the WLAN DAL context
14732 pEventData: pointer to the event information structure
14733
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 @see
14735 @return Result of the function call
14736*/
14737WDI_Status
14738WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014739(
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 WDI_ControlBlockType* pWDICtx,
14741 WDI_EventInfoType* pEventData
14742)
14743{
14744 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14745 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014746 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014747 wpt_uint16 usDataOffset = 0;
14748 wpt_uint16 usSendSize = 0;
14749 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14751
14752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 -------------------------------------------------------------------------*/
14755 if (( NULL == pEventData ) ||
14756 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14757 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14758 {
14759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014760 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014761 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 }
14764
14765 /*-----------------------------------------------------------------------
14766 Get message buffer
14767 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 sizeof(halCfgAppsCpuWakeupStateReqParams),
14770 &pSendBuffer, &usDataOffset, &usSendSize))||
14771 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14772 {
14773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014774 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014775 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14776 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 }
14779
Jeff Johnsone7245742012-09-05 17:12:55 -070014780 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014781 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14782
Jeff Johnsone7245742012-09-05 17:12:55 -070014783 wpalMemoryCopy( pSendBuffer+usDataOffset,
14784 &halCfgAppsCpuWakeupStateReqParams,
14785 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014786
14787 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014788 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014789
14790 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014791 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014792 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014793 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14794 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14795 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014796}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14797
14798#ifdef WLAN_FEATURE_VOWIFI_11R
14799/**
14800 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14801 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014802
14803 @param pWDICtx: pointer to the WLAN DAL context
14804 pEventData: pointer to the event information structure
14805
Jeff Johnson295189b2012-06-20 16:38:30 -070014806 @see
14807 @return Result of the function call
14808*/
14809WDI_Status
14810WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014811(
Jeff Johnson295189b2012-06-20 16:38:30 -070014812 WDI_ControlBlockType* pWDICtx,
14813 WDI_EventInfoType* pEventData
14814)
14815{
14816 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14817 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014818 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014820 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014821 wpt_uint16 usDataOffset = 0;
14822 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014823 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014824 wpt_macAddr macBSSID;
14825 tAggrAddTsReq halAggrAddTsReq;
14826 int i;
14827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14828
14829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014830 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014831 -------------------------------------------------------------------------*/
14832 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14833 ( NULL == pEventData->pCBfnc ))
14834 {
14835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014836 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014839 }
14840 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14841 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14842 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14843 /*-------------------------------------------------------------------------
14844 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014845 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014846 -------------------------------------------------------------------------*/
14847 wpalMutexAcquire(&pWDICtx->wptMutex);
14848
14849 /*------------------------------------------------------------------------
14850 Find the BSS for which the request is made and identify WDI session
14851 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014852 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14853 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014854 &macBSSID))
14855 {
14856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014857 "This station does not exist in the WDI Station Table %d",
14858 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070014859 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014860 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014861 }
14862
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14864 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014865 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14867 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14868 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014869
14870 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014871 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014873
Jeff Johnson295189b2012-06-20 16:38:30 -070014874 /*------------------------------------------------------------------------
14875 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014876 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014877 ------------------------------------------------------------------------*/
14878 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14879 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14881 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14882 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014883
Jeff Johnsone7245742012-09-05 17:12:55 -070014884 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014885 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014886 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 }
14888
14889 wpalMutexRelease(&pWDICtx->wptMutex);
14890 /*-----------------------------------------------------------------------
14891 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014892 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014893 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 sizeof(tAggrAddTsParams),
14896 &pSendBuffer, &usDataOffset, &usSendSize))||
14897 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14898 {
14899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014900 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14902 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 }
14905
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014908 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014909 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14910
14911 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14912 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014915 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014916 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014917 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014918 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14919 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14922 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014923 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014924 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14925 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014926 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14928 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014929 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014930 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14931 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14934 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014935 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014936 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14937 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14940 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014941 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014942 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014943 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014944 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014945
14946
14947 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014948 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014949 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014950 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014951 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014953 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014954 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014955 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014956 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014957 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014958 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014959 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014960 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014961 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014962 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014963 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014964 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014965 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014966 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014967 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014969 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014970 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014971 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014972 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014973 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014974 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14977 }
14978
Jeff Johnsone7245742012-09-05 17:12:55 -070014979 wpalMemoryCopy( pSendBuffer+usDataOffset,
14980 &halAggrAddTsReq,
14981 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014982
14983 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014984 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014985
14986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014987 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014988 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014990 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014991 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014992}/*WDI_ProcessAggrAddTSpecReq*/
14993#endif /* WLAN_FEATURE_VOWIFI_11R */
14994
14995/**
14996 @brief Process Shutdown Request function (called when Main FSM
14997 allows it)
14998
14999 @param pWDICtx: pointer to the WLAN DAL context
15000 pEventData: pointer to the event information structure
15001
15002 @see
15003 @return Result of the function call
15004*/
15005WDI_Status
15006WDI_ProcessShutdownReq
15007(
15008 WDI_ControlBlockType* pWDICtx,
15009 WDI_EventInfoType* pEventData
15010 )
15011{
15012 wpt_status wptStatus;
15013
15014
15015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15016
15017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 -------------------------------------------------------------------------*/
15020 if ( NULL == pEventData )
15021 {
15022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015023 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015024 WDI_ASSERT(0);
15025 return WDI_STATUS_E_FAILURE;
15026 }
15027
15028 wpalMutexAcquire(&pWDICtx->wptMutex);
15029
15030
15031 gWDIInitialized = eWLAN_PAL_FALSE;
15032 /*! TO DO: stop the data services */
15033 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15034 {
15035 /*Stop the STA Table !UT- check this logic again
15036 It is safer to do it here than on the response - because a stop is imminent*/
15037 WDI_STATableStop(pWDICtx);
15038
15039 /* Stop Transport Driver, DXE */
15040 WDTS_Stop(pWDICtx);
15041 }
15042
15043 /*Clear all pending request*/
15044 WDI_ClearPendingRequests(pWDICtx);
15045 /* Close Data transport*/
15046 /* FTM mode does not open Data Path */
15047 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15048 {
15049 WDTS_Close(pWDICtx);
15050 }
15051 /*Close the STA Table !UT- check this logic again*/
15052 WDI_STATableClose(pWDICtx);
15053 /*close the PAL */
15054 wptStatus = wpalClose(pWDICtx->pPALContext);
15055 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15056 {
15057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15058 "Failed to wpal Close %d", wptStatus);
15059 WDI_ASSERT(0);
15060 }
15061
15062 /*Transition back to init state*/
15063 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15064
15065 wpalMutexRelease(&pWDICtx->wptMutex);
15066
15067 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015068 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015069
15070
Jeff Johnsone7245742012-09-05 17:12:55 -070015071 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015072}/*WDI_ProcessShutdownReq*/
15073
15074/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015075 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015076========================================================================*/
15077
15078/**
15079 @brief Process Start Response function (called when a response
15080 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015081
15082 @param pWDICtx: pointer to the WLAN DAL context
15083 pEventData: pointer to the event information structure
15084
Jeff Johnson295189b2012-06-20 16:38:30 -070015085 @see
15086 @return Result of the function call
15087*/
15088WDI_Status
15089WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015090(
Jeff Johnson295189b2012-06-20 16:38:30 -070015091 WDI_ControlBlockType* pWDICtx,
15092 WDI_EventInfoType* pEventData
15093)
15094{
15095 WDI_StartRspParamsType wdiRspParams;
15096 WDI_StartRspCb wdiStartRspCb = NULL;
15097
15098 tHalMacStartRspParams* startRspParams;
15099
15100#ifndef HAL_SELF_STA_PER_BSS
15101 WDI_AddStaParams wdiAddSTAParam = {0};
15102#endif
15103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15104
Jeff Johnsone7245742012-09-05 17:12:55 -070015105 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015108 -------------------------------------------------------------------------*/
15109 if (( NULL == pEventData ) ||
15110 ( NULL == pEventData->pEventData) ||
15111 ( NULL == wdiStartRspCb ))
15112 {
15113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015114 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015117 }
15118
15119 /*-------------------------------------------------------------------------
15120 Extract response and send it to UMAC
15121 -------------------------------------------------------------------------*/
15122 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15123 {
15124 // not enough data was received
15125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015126 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015127 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015130 }
15131
15132 /*-------------------------------------------------------------------------
15133 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015134 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015135 -------------------------------------------------------------------------*/
15136 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15137
15138 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15139 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15140 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15141 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15142 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15143 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15144 wdiRspParams.wlanReportedVersion.major =
15145 startRspParams->wcnssWlanVersion.major;
15146 wdiRspParams.wlanReportedVersion.minor =
15147 startRspParams->wcnssWlanVersion.minor;
15148 wdiRspParams.wlanReportedVersion.version =
15149 startRspParams->wcnssWlanVersion.version;
15150 wdiRspParams.wlanReportedVersion.revision =
15151 startRspParams->wcnssWlanVersion.revision;
15152 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15153 startRspParams->wcnssCrmVersionString,
15154 sizeof(wdiRspParams.wcnssSoftwareVersion));
15155 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15156 startRspParams->wcnssWlanVersionString,
15157 sizeof(wdiRspParams.wcnssHardwareVersion));
15158 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15159
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015160 /*Save the HAL Version*/
15161 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15162
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 wpalMutexAcquire(&pWDICtx->wptMutex);
15164 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15165 {
15166 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15167
15168 /*Cache the start response for further use*/
15169 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015170 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015171 sizeof(pWDICtx->wdiCachedStartRspParams));
15172
15173 }
15174 else
15175 {
15176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15177 "Failed to start device with status %s(%d)",
15178 WDI_getHALStatusMsgString(startRspParams->status),
15179 startRspParams->status);
15180
15181 /*Set the expected state transition to stopped - because the start has
15182 failed*/
15183 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15184
15185 wpalMutexRelease(&pWDICtx->wptMutex);
15186
15187 /*Notify UMAC*/
15188 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015189
Jeff Johnson295189b2012-06-20 16:38:30 -070015190 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
15191
15192 /*Although the response is an error - it was processed by our function
15193 so as far as the caller is concerned this is a succesful reponse processing*/
15194 return WDI_STATUS_SUCCESS;
15195 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015196
Jeff Johnson295189b2012-06-20 16:38:30 -070015197 wpalMutexRelease(&pWDICtx->wptMutex);
15198
15199 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15200 {
15201 /* FTM mode does not need to execute below */
15202 /* Notify UMAC */
15203 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15204 return WDI_STATUS_SUCCESS;
15205 }
15206
15207 /* START the Data transport */
15208 WDTS_startTransport(pWDICtx);
15209
15210 /*Start the STA Table !- check this logic again*/
15211 WDI_STATableStart(pWDICtx);
15212
15213#ifndef HAL_SELF_STA_PER_BSS
15214 /* Store the Self STA Index */
15215 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15216
15217 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15218 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15219 WDI_MAC_ADDR_LEN);
15220
15221 /* At this point add the self-STA */
15222
15223 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15224 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15225 /*! TO DO: wdiAddSTAParam.dpuSig */
15226 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15227 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15228 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15229
15230 //all DPU indices are the same for self STA
15231 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15232 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015233 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015234 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15235 WDI_MAC_ADDR_LEN);
15236 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15237 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15238
15239 /* Note: Since we don't get an explicit config STA request for self STA, we
15240 add the self STA upon receiving the Start response message. But the
15241 self STA entry in the table is deleted when WDI gets an explicit delete STA
15242 request */
15243 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15244#endif
15245
15246 /*Notify UMAC*/
15247 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15248
Jeff Johnsone7245742012-09-05 17:12:55 -070015249 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015250}/*WDI_ProcessStartRsp*/
15251
15252
15253/**
15254 @brief Process Stop Response function (called when a response
15255 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015256
15257 @param pWDICtx: pointer to the WLAN DAL context
15258 pEventData: pointer to the event information structure
15259
Jeff Johnson295189b2012-06-20 16:38:30 -070015260 @see
15261 @return Result of the function call
15262*/
15263WDI_Status
15264WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015265(
Jeff Johnson295189b2012-06-20 16:38:30 -070015266 WDI_ControlBlockType* pWDICtx,
15267 WDI_EventInfoType* pEventData
15268)
15269{
15270 WDI_Status wdiStatus;
15271 WDI_StopRspCb wdiStopRspCb = NULL;
15272
Jeff Johnsone7245742012-09-05 17:12:55 -070015273 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15275
Jeff Johnsone7245742012-09-05 17:12:55 -070015276 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 -------------------------------------------------------------------------*/
15280 if (( NULL == pEventData ) ||
15281 ( NULL == pEventData->pEventData) ||
15282 ( NULL == wdiStopRspCb ))
15283 {
15284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 }
15289
15290 /*-------------------------------------------------------------------------
15291 Extract response and send it to UMAC
15292 -------------------------------------------------------------------------*/
15293 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15294 {
15295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015296 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 pEventData->uEventDataSize);
15298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 }
15301
15302 /*-------------------------------------------------------------------------
15303 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015304 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015305 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015306 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15307 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015308 sizeof(halMacStopRspMsg.stopRspParams));
15309
Jeff Johnsone7245742012-09-05 17:12:55 -070015310 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015311
15312 wpalMutexAcquire(&pWDICtx->wptMutex);
15313
15314 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015315 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015316 --------------------------------------------------------------------------*/
15317 if ( WDI_STATUS_SUCCESS != wdiStatus )
15318 {
15319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15320 "Failed to stop the device with status %s (%d)",
15321 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15322 halMacStopRspMsg.stopRspParams.status);
15323
Jeff Johnsone7245742012-09-05 17:12:55 -070015324 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15325
Jeff Johnson295189b2012-06-20 16:38:30 -070015326 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015328 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015329
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15331
15332 /*Transition now as WDI may get preempted imediately after it sends
15333 up the Stop Response and it will not get to process the state transition
15334 from Main Rsp function*/
15335 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15336 wpalMutexRelease(&pWDICtx->wptMutex);
15337
15338 /*! TO DO: - STOP the Data transport */
15339
15340 /*Notify UMAC*/
15341 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15342
Jeff Johnsone7245742012-09-05 17:12:55 -070015343 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015344}/*WDI_ProcessStopRsp*/
15345
15346/**
15347 @brief Process Close Rsp function (called when a response
15348 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015349
15350 @param pWDICtx: pointer to the WLAN DAL context
15351 pEventData: pointer to the event information structure
15352
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 @see
15354 @return Result of the function call
15355*/
15356WDI_Status
15357WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015358(
Jeff Johnson295189b2012-06-20 16:38:30 -070015359 WDI_ControlBlockType* pWDICtx,
15360 WDI_EventInfoType* pEventData
15361)
15362{
15363 /*There is no close response comming from HAL - function just kept for
15364 simmetry */
15365 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015367}/*WDI_ProcessCloseRsp*/
15368
15369
15370/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015371 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015372============================================================================*/
15373
15374/**
15375 @brief Process Init Scan Rsp function (called when a response
15376 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015377
15378 @param pWDICtx: pointer to the WLAN DAL context
15379 pEventData: pointer to the event information structure
15380
Jeff Johnson295189b2012-06-20 16:38:30 -070015381 @see
15382 @return Result of the function call
15383*/
15384WDI_Status
15385WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015386(
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 WDI_ControlBlockType* pWDICtx,
15388 WDI_EventInfoType* pEventData
15389)
15390{
15391 WDI_Status wdiStatus;
15392 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015393 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080015394 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15396
15397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015399 -------------------------------------------------------------------------*/
15400 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15401 ( NULL == pEventData->pEventData))
15402 {
15403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015404 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015407 }
15408
15409 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15410 if( NULL == wdiInitScanRspCb)
15411 {
15412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015413 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015414 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015415 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015416 }
15417
15418 /*-------------------------------------------------------------------------
15419 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015420 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015421 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015422 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15423 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015424 sizeof(halInitScanRspMsg.initScanRspParams));
15425
Jeff Johnsone7245742012-09-05 17:12:55 -070015426 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015427
15428 if ( pWDICtx->bInBmps )
15429 {
15430 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080015431 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15432 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015434 "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 -080015435 WDI_ASSERT(0);
15436 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015437 }
15438
15439 /*Notify UMAC*/
15440 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15441
Jeff Johnsone7245742012-09-05 17:12:55 -070015442 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015443}/*WDI_ProcessInitScanRsp*/
15444
15445
15446/**
15447 @brief Process Start Scan Rsp function (called when a response
15448 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015449
15450 @param pWDICtx: pointer to the WLAN DAL context
15451 pEventData: pointer to the event information structure
15452
Jeff Johnson295189b2012-06-20 16:38:30 -070015453 @see
15454 @return Result of the function call
15455*/
15456WDI_Status
15457WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015458(
Jeff Johnson295189b2012-06-20 16:38:30 -070015459 WDI_ControlBlockType* pWDICtx,
15460 WDI_EventInfoType* pEventData
15461)
15462{
15463 WDI_StartScanRspParamsType wdiStartScanParams;
15464 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015465
15466 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15468
15469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015470 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015471 -------------------------------------------------------------------------*/
15472 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15473 ( NULL == pEventData->pEventData))
15474 {
15475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015476 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015479 }
15480
15481 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15482 if( NULL == wdiStartScanRspCb)
15483 {
15484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015485 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015486 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015487 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015488 }
15489
15490 /*-------------------------------------------------------------------------
15491 Extract response and send it to UMAC
15492 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015493 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15494 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015495 sizeof(halStartScanRspMsg.startScanRspParams));
15496
15497 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15498 halStartScanRspMsg.startScanRspParams.status);
15499#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015500 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015501 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015502 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015503 halStartScanRspMsg.startScanRspParams.startTSF,
15504 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015505#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015506
15507 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15508 {
15509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15510 "Start scan failed with status %s (%d)",
15511 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15512 halStartScanRspMsg.startScanRspParams.status);
15513 /* send the status to UMAC, don't return from here*/
15514 }
15515
15516 /*Notify UMAC*/
15517 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15518
Jeff Johnsone7245742012-09-05 17:12:55 -070015519 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015520
15521}/*WDI_ProcessStartScanRsp*/
15522
15523
15524/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015525 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015526 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015527
15528 @param pWDICtx: pointer to the WLAN DAL context
15529 pEventData: pointer to the event information structure
15530
Jeff Johnson295189b2012-06-20 16:38:30 -070015531 @see
15532 @return Result of the function call
15533*/
15534WDI_Status
15535WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015536(
Jeff Johnson295189b2012-06-20 16:38:30 -070015537 WDI_ControlBlockType* pWDICtx,
15538 WDI_EventInfoType* pEventData
15539)
15540{
15541 WDI_Status wdiStatus;
15542 tHalEndScanRspMsg halEndScanRspMsg;
15543 WDI_EndScanRspCb wdiEndScanRspCb;
15544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15545
15546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015547 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015548 -------------------------------------------------------------------------*/
15549 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15550 ( NULL == pEventData->pEventData))
15551 {
15552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015553 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015554 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015556 }
15557
15558 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15559
15560 /*-------------------------------------------------------------------------
15561 Extract response and send it to UMAC
15562 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015563 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15564 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 sizeof(halEndScanRspMsg.endScanRspParams));
15566
Jeff Johnsone7245742012-09-05 17:12:55 -070015567 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015568
15569 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15570 {
15571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15572 "End Scan failed with status %s (%d )",
15573 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15574 halEndScanRspMsg.endScanRspParams.status);
15575 /* send the status to UMAC, don't return from here*/
15576 }
15577
15578 /*Notify UMAC*/
15579 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15580
Jeff Johnsone7245742012-09-05 17:12:55 -070015581 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015582}/*WDI_ProcessEndScanRsp*/
15583
15584
15585/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015586 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015587 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015588
15589 @param pWDICtx: pointer to the WLAN DAL context
15590 pEventData: pointer to the event information structure
15591
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 @see
15593 @return Result of the function call
15594*/
15595WDI_Status
15596WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015597(
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 WDI_ControlBlockType* pWDICtx,
15599 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015600)
Jeff Johnson295189b2012-06-20 16:38:30 -070015601{
15602 WDI_Status wdiStatus;
15603 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015604
15605 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15607
15608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015609 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015610 -------------------------------------------------------------------------*/
15611 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15612 ( NULL == pEventData->pEventData))
15613 {
15614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015618 }
15619
15620 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15621
15622 /*-------------------------------------------------------------------------
15623 Extract response and send it to UMAC
15624 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015625 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15626 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15628
Jeff Johnsone7245742012-09-05 17:12:55 -070015629 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015630
15631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015632 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015633 halFinishScanRspMsg.finishScanRspParams.status);
15634
15635 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15636 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15637 {
15638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15639 "Finish Scan failed with status %s (%d)",
15640 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15641 halFinishScanRspMsg.finishScanRspParams.status);
15642 /* send the status to UMAC, don't return from here*/
15643 }
15644
15645 /*Notify UMAC*/
15646 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15647
Jeff Johnsone7245742012-09-05 17:12:55 -070015648 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015649}/*WDI_ProcessFinishScanRsp*/
15650
15651/**
15652 @brief Process Join Response function (called when a response
15653 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015654
15655 @param pWDICtx: pointer to the WLAN DAL context
15656 pEventData: pointer to the event information structure
15657
Jeff Johnson295189b2012-06-20 16:38:30 -070015658 @see
15659 @return Result of the function call
15660*/
15661WDI_Status
15662WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015663(
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 WDI_ControlBlockType* pWDICtx,
15665 WDI_EventInfoType* pEventData
15666)
15667{
15668 WDI_Status wdiStatus;
15669 WDI_JoinRspCb wdiJoinRspCb;
15670 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015671
15672 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15674
15675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015676 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015677 -------------------------------------------------------------------------*/
15678 if (( NULL == pWDICtx ) ||
15679 ( NULL == pWDICtx->pfncRspCB ) ||
15680 ( NULL == pEventData ) ||
15681 ( NULL == pEventData->pEventData))
15682 {
15683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015684 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015687 }
15688
15689 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15690
15691 /*-------------------------------------------------------------------------
15692 Extract response and send it to UMAC
15693 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015694 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15695 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015696 sizeof(halJoinRspMsg.joinRspParams));
15697
Jeff Johnsone7245742012-09-05 17:12:55 -070015698 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015699
15700 wpalMutexAcquire(&pWDICtx->wptMutex);
15701
15702 /*-----------------------------------------------------------------------
15703 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015704 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015705 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015706 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015707 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15708 {
15709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015710 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15711 "association no longer in progress %d - mysterious HAL response",
15712 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015713
Jeff Johnsone7245742012-09-05 17:12:55 -070015714 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015715 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015716 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015717 }
15718
15719 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15720
15721 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015722 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 -----------------------------------------------------------------------*/
15724 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15725 {
15726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15727 "Join only allowed in Joining state - failure state is %d "
15728 "strange HAL response", pBSSSes->wdiAssocState);
15729
Jeff Johnsone7245742012-09-05 17:12:55 -070015730 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15731
Jeff Johnson295189b2012-06-20 16:38:30 -070015732 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015733 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015734 }
15735
15736
15737 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015738 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015739 -----------------------------------------------------------------------*/
15740 if ( WDI_STATUS_SUCCESS != wdiStatus )
15741 {
15742 /*Association was failed by HAL - remove session*/
15743 WDI_DeleteSession(pWDICtx, pBSSSes);
15744
15745 /*Association no longer in progress */
15746 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15747
15748 /*Association no longer in progress - prepare pending assoc for processing*/
15749 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015750
Jeff Johnson295189b2012-06-20 16:38:30 -070015751 }
15752 else
15753 {
15754 /*Transition to state Joining - this may be redundant as we are supposed
15755 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015756 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015757 }
15758
15759 wpalMutexRelease(&pWDICtx->wptMutex);
15760
15761 /*Notify UMAC*/
15762 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15763
Jeff Johnsone7245742012-09-05 17:12:55 -070015764 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015765}/*WDI_ProcessJoinRsp*/
15766
15767
15768/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015769 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015771
15772 @param pWDICtx: pointer to the WLAN DAL context
15773 pEventData: pointer to the event information structure
15774
Jeff Johnson295189b2012-06-20 16:38:30 -070015775 @see
15776 @return Result of the function call
15777*/
15778WDI_Status
15779WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015780(
Jeff Johnson295189b2012-06-20 16:38:30 -070015781 WDI_ControlBlockType* pWDICtx,
15782 WDI_EventInfoType* pEventData
15783)
15784{
15785 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15786 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015787 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015788 WDI_BSSSessionType* pBSSSes = NULL;
15789
Jeff Johnsone7245742012-09-05 17:12:55 -070015790 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015791 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15792 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015793
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15795
15796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015797 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015798 -------------------------------------------------------------------------*/
15799 if (( NULL == pEventData ) ||
15800 ( NULL == pEventData->pEventData))
15801 {
15802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 }
15807
15808 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15809
15810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015811 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015812 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015813 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15814 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015815 sizeof(halConfigBssRspMsg.configBssRspParams));
15816
15817 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15818 halConfigBssRspMsg.configBssRspParams.status);
15819 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15820 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015821 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015822 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15823 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015824
Jeff Johnson295189b2012-06-20 16:38:30 -070015825 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015826
15827 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015828 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015829
15830 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015831 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015832
Jeff Johnson295189b2012-06-20 16:38:30 -070015833 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015834
Jeff Johnson295189b2012-06-20 16:38:30 -070015835 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015836 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015837 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15838 #endif
15839 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15840 halConfigBssRspMsg.configBssRspParams.staMac,
15841 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015842
Jeff Johnson295189b2012-06-20 16:38:30 -070015843 wpalMutexAcquire(&pWDICtx->wptMutex);
15844 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015845 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015846 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015847 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15848 wdiConfigBSSParams.macBSSID,
15849 &pBSSSes);
15850
Jeff Johnson295189b2012-06-20 16:38:30 -070015851 /*-----------------------------------------------------------------------
15852 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015853 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 -----------------------------------------------------------------------*/
15855 if ( NULL == pBSSSes )
15856 {
15857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15858 "Association sequence for this BSS does not yet exist "
15859 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015860
15861 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15862
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015864 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015865 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015866
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 /*Save data for this BSS*/
15868 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15869 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015870 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015872 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015873 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015874 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015875 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015876 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015877 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015878 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015879 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15880 pBSSSes->bcastStaIdx =
15881 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015882
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015884
Jeff Johnson295189b2012-06-20 16:38:30 -070015885 /*-------------------------------------------------------------------------
15886 Add Peer STA
15887 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015888 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15890 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015891
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015893 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015894 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015895 wdiAddSTAParam.ucHTCapable =
15896 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15897 wdiAddSTAParam.ucStaType =
15898 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15899
Jeff Johnson295189b2012-06-20 16:38:30 -070015900 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015901 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15902 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015904
15905 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15906 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15907 WDI_MAC_ADDR_LEN);
15908
Jeff Johnson295189b2012-06-20 16:38:30 -070015909 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015910 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015911 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015912 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015913 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015914 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015915 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015916 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015917 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015918 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015919 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015920 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015921 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015922
Jeff Johnson295189b2012-06-20 16:38:30 -070015923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15924 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015925
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15927 /*-------------------------------------------------------------------------
15928 Add Broadcast STA only in AP mode
15929 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015930 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070015931 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 {
15933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15934 "Add BCAST STA to table for index: %d",
15935 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015936
15937 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015939
Jeff Johnson295189b2012-06-20 16:38:30 -070015940 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15941 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15942 }
15943 wpalMutexRelease(&pWDICtx->wptMutex);
15944 }
15945 else
15946 {
15947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15948 "Config BSS RSP failed with status : %s(%d)",
15949 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015950 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 halConfigBssRspMsg.configBssRspParams.status);
15952
Jeff Johnsone7245742012-09-05 17:12:55 -070015953
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 /*Association was failed by HAL - remove session*/
15955 WDI_DeleteSession(pWDICtx, pBSSSes);
15956
15957 /*Association no longer in progress */
15958 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15959
15960 /*Association no longer in progress - prepare pending assoc for processing*/
15961 WDI_DequeueAssocRequest(pWDICtx);
15962
15963 }
15964
15965 /*Notify UMAC*/
15966 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15967
Jeff Johnsone7245742012-09-05 17:12:55 -070015968 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015969}/*WDI_ProcessConfigBSSRsp*/
15970
15971
15972/**
15973 @brief Process Del BSS Response function (called when a response
15974 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015975
15976 @param pWDICtx: pointer to the WLAN DAL context
15977 pEventData: pointer to the event information structure
15978
Jeff Johnson295189b2012-06-20 16:38:30 -070015979 @see
15980 @return Result of the function call
15981*/
15982WDI_Status
15983WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015984(
Jeff Johnson295189b2012-06-20 16:38:30 -070015985 WDI_ControlBlockType* pWDICtx,
15986 WDI_EventInfoType* pEventData
15987)
15988{
15989 WDI_DelBSSRspParamsType wdiDelBSSParams;
15990 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015991 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015992 WDI_BSSSessionType* pBSSSes = NULL;
15993
Jeff Johnsone7245742012-09-05 17:12:55 -070015994 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015995 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15996
15997 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015998 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 -------------------------------------------------------------------------*/
16000 if (( NULL == pEventData ) ||
16001 ( NULL == pEventData->pEventData))
16002 {
16003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016004 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016007 }
16008
16009 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16010
16011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016012 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016013 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016014 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16015 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016016 sizeof(halDelBssRspMsg.deleteBssRspParams));
16017
16018
16019 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016020 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016021
16022 wpalMutexAcquire(&pWDICtx->wptMutex);
16023
16024 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016025 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016026 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016027 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16028 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16029 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016030
16031 /*-----------------------------------------------------------------------
16032 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016033 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016034 -----------------------------------------------------------------------*/
16035 if ( NULL == pBSSSes )
16036 {
16037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16038 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016039 "association no longer in progress - mysterious HAL response");
16040
16041 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16042
16043 wpalMutexRelease(&pWDICtx->wptMutex);
16044 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016045 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016046
16047 /*Extract BSSID for the response to UMAC*/
16048 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16049 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16050
16051 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16052
16053 /*-----------------------------------------------------------------------
16054 The current session will be deleted
16055 -----------------------------------------------------------------------*/
16056 WDI_DeleteSession(pWDICtx, pBSSSes);
16057
16058
16059 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016060 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16061 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016062 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016063 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016064 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016065
16066 /* Delete the STA's in this BSS */
16067 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16068
Jeff Johnson295189b2012-06-20 16:38:30 -070016069 wpalMutexRelease(&pWDICtx->wptMutex);
16070
16071 /*Notify UMAC*/
16072 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16073
Jeff Johnsone7245742012-09-05 17:12:55 -070016074 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016075}/*WDI_ProcessDelBSSRsp*/
16076
16077/**
16078 @brief Process Post Assoc Rsp function (called when a response
16079 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016080
16081 @param pWDICtx: pointer to the WLAN DAL context
16082 pEventData: pointer to the event information structure
16083
Jeff Johnson295189b2012-06-20 16:38:30 -070016084 @see
16085 @return Result of the function call
16086*/
16087WDI_Status
16088WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016089(
Jeff Johnson295189b2012-06-20 16:38:30 -070016090 WDI_ControlBlockType* pWDICtx,
16091 WDI_EventInfoType* pEventData
16092)
16093{
16094 WDI_PostAssocRspParamsType wdiPostAssocParams;
16095 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016096 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016098 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16100
16101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016102 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016103 -------------------------------------------------------------------------*/
16104 if (( NULL == pEventData ) ||
16105 ( NULL == pEventData->pEventData))
16106 {
16107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016108 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016111 }
16112
16113 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16114
16115 /*-------------------------------------------------------------------------
16116 Extract response and send it to UMAC
16117 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016118 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16119 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016120 sizeof(halPostAssocRspMsg.postAssocRspParams));
16121
16122 /*Extract the Post Assoc STA Params */
16123
Jeff Johnsone7245742012-09-05 17:12:55 -070016124 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016125 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016127 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016128 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016129 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16130
Jeff Johnsone7245742012-09-05 17:12:55 -070016131 wdiPostAssocParams.wdiStatus =
16132 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016133
16134 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16135 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016136 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16137 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016138 WDI_MAC_ADDR_LEN);
16139
16140 /* Extract Post Assoc BSS Params */
16141
Jeff Johnsone7245742012-09-05 17:12:55 -070016142 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16143 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16144 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016145
16146 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16147 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016148 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016149 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16150 .macSTA, WDI_MAC_ADDR_LEN);
16151
Jeff Johnsone7245742012-09-05 17:12:55 -070016152 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016153 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16154
Jeff Johnsone7245742012-09-05 17:12:55 -070016155 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016156 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16157
16158 wdiPostAssocParams.bssParams.ucBSSIdx =
16159 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16160
Jeff Johnsone7245742012-09-05 17:12:55 -070016161 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016162 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16163
16164 wpalMutexAcquire(&pWDICtx->wptMutex);
16165
16166 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016167 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016169 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016171 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016172
16173 /*-----------------------------------------------------------------------
16174 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016175 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 -----------------------------------------------------------------------*/
16177 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016178 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016179 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16180 {
16181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16182 "Association sequence for this BSS does not yet exist or "
16183 "association no longer in progress - mysterious HAL response");
16184
Jeff Johnsone7245742012-09-05 17:12:55 -070016185 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16186
Jeff Johnson295189b2012-06-20 16:38:30 -070016187 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016189 }
16190
16191 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016192 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016193 -----------------------------------------------------------------------*/
16194 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16195 {
16196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16197 "Post Assoc not allowed before JOIN - failing request "
16198 "strange HAL response");
16199
Jeff Johnsone7245742012-09-05 17:12:55 -070016200 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16201
Jeff Johnson295189b2012-06-20 16:38:30 -070016202 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016203 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016204 }
16205
16206 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016207 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016208 -----------------------------------------------------------------------*/
16209 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16210 {
16211 /*Association was failed by HAL - remove session*/
16212 WDI_DeleteSession(pWDICtx, pBSSSes);
16213 }
16214 else
16215 {
16216 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016217 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016218
16219 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016220 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016221 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016222 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016223 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016224 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016226 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016227 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16228
Jeff Johnsone7245742012-09-05 17:12:55 -070016229 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016230 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16231 }
16232
16233 /*Association no longer in progress */
16234 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16235
16236 /*Association no longer in progress - prepare pending assoc for processing*/
16237 WDI_DequeueAssocRequest(pWDICtx);
16238
16239 wpalMutexRelease(&pWDICtx->wptMutex);
16240
16241 /*Notify UMAC*/
16242 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16243
Jeff Johnsone7245742012-09-05 17:12:55 -070016244 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016245}/*WDI_ProcessPostAssocRsp*/
16246
16247/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016248 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016249 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016250
16251 @param pWDICtx: pointer to the WLAN DAL context
16252 pEventData: pointer to the event information structure
16253
Jeff Johnson295189b2012-06-20 16:38:30 -070016254 @see
16255 @return Result of the function call
16256*/
16257WDI_Status
16258WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016259(
Jeff Johnson295189b2012-06-20 16:38:30 -070016260 WDI_ControlBlockType* pWDICtx,
16261 WDI_EventInfoType* pEventData
16262)
16263{
16264 WDI_DelSTARspParamsType wdiDelSTARsp;
16265 WDI_DelSTARspCb wdiDelSTARspCb;
16266 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016267 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16269
16270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016272 -------------------------------------------------------------------------*/
16273 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16274 ( NULL == pEventData->pEventData))
16275 {
16276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016280 }
16281
16282 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16283
16284 /*-------------------------------------------------------------------------
16285 Extract response and send it to UMAC
16286 -------------------------------------------------------------------------*/
16287 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016288 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 sizeof(halDelStaRspMsg.delStaRspParams));
16290
16291 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016292 wdiDelSTARsp.wdiStatus =
16293 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016294
16295 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16296
16297 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16298 if(staType == WDI_STA_ENTRY_SELF)
16299 {
16300 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16301
16302 /* At this point add the self-STA */
16303
16304 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16305 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16306 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16307
16308#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16309#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16310
16311 //all DPU indices are the same for self STA
16312 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16313 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16314 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16315 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16316 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16317 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016318
16319 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016320 }
16321 else
16322 {
16323 //Delete the station in the table
16324 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16325 }
16326
16327 /*Notify UMAC*/
16328 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16329
Jeff Johnsone7245742012-09-05 17:12:55 -070016330 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016331}/*WDI_ProcessDelSTARsp*/
16332
16333
16334/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016335 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016336==========================================================================*/
16337
16338/**
16339 @brief Process Set BSS Key Rsp function (called when a response
16340 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016341
16342 @param pWDICtx: pointer to the WLAN DAL context
16343 pEventData: pointer to the event information structure
16344
Jeff Johnson295189b2012-06-20 16:38:30 -070016345 @see
16346 @return Result of the function call
16347*/
16348WDI_Status
16349WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016350(
Jeff Johnson295189b2012-06-20 16:38:30 -070016351 WDI_ControlBlockType* pWDICtx,
16352 WDI_EventInfoType* pEventData
16353)
16354{
16355 WDI_Status wdiStatus;
16356 eHalStatus halStatus;
16357 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16359
16360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016361 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016362 -------------------------------------------------------------------------*/
16363 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16364 ( NULL == pEventData->pEventData))
16365 {
16366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016367 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016370 }
16371
16372 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16373
16374 /*-------------------------------------------------------------------------
16375 Extract response and send it to UMAC
16376 -------------------------------------------------------------------------*/
16377 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016378 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016379
16380 if ( eHAL_STATUS_SUCCESS != halStatus )
16381 {
16382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16383 "Set BSS Key failed with status %s (%d)",
16384 WDI_getHALStatusMsgString(halStatus),
16385 halStatus);
16386 /* send the status to UMAC, don't return from here*/
16387 }
16388
16389 /*Notify UMAC*/
16390 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16391
Jeff Johnsone7245742012-09-05 17:12:55 -070016392 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016393}/*WDI_ProcessSetBssKeyRsp*/
16394
16395/**
16396 @brief Process Remove BSS Key Rsp function (called when a response
16397 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016398
16399 @param pWDICtx: pointer to the WLAN DAL context
16400 pEventData: pointer to the event information structure
16401
Jeff Johnson295189b2012-06-20 16:38:30 -070016402 @see
16403 @return Result of the function call
16404*/
16405WDI_Status
16406WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016407(
Jeff Johnson295189b2012-06-20 16:38:30 -070016408 WDI_ControlBlockType* pWDICtx,
16409 WDI_EventInfoType* pEventData
16410)
16411{
16412 WDI_Status wdiStatus;
16413 eHalStatus halStatus;
16414 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16416
16417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016418 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016419 -------------------------------------------------------------------------*/
16420 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16421 ( NULL == pEventData->pEventData))
16422 {
16423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016424 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016425 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016427 }
16428
16429 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16430
16431 /*-------------------------------------------------------------------------
16432 Extract response and send it to UMAC
16433 -------------------------------------------------------------------------*/
16434 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016435 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016436
16437 if ( eHAL_STATUS_SUCCESS != halStatus )
16438 {
16439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16440 "Remove BSS Key failed with status %s (%d )",
16441 WDI_getHALStatusMsgString(halStatus),
16442 halStatus);
16443 /* send the status to UMAC, don't return from here*/
16444 }
16445
16446 /*Notify UMAC*/
16447 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16448
Jeff Johnsone7245742012-09-05 17:12:55 -070016449 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016450}/*WDI_ProcessSetBssKeyRsp*/
16451
16452
16453/**
16454 @brief Process Set STA Key Rsp function (called when a response
16455 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016456
16457 @param pWDICtx: pointer to the WLAN DAL context
16458 pEventData: pointer to the event information structure
16459
Jeff Johnson295189b2012-06-20 16:38:30 -070016460 @see
16461 @return Result of the function call
16462*/
16463WDI_Status
16464WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016465(
Jeff Johnson295189b2012-06-20 16:38:30 -070016466 WDI_ControlBlockType* pWDICtx,
16467 WDI_EventInfoType* pEventData
16468)
16469{
16470 WDI_Status wdiStatus;
16471 eHalStatus halStatus;
16472 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16474
16475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016476 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016477 -------------------------------------------------------------------------*/
16478 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16479 ( NULL == pEventData->pEventData))
16480 {
16481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016485 }
16486
16487 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16488
16489 /*-------------------------------------------------------------------------
16490 Extract response and send it to UMAC
16491 -------------------------------------------------------------------------*/
16492 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016493 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016494
16495 if ( eHAL_STATUS_SUCCESS != halStatus )
16496 {
16497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16498 "Set STA Key failed with status %s (%d)",
16499 WDI_getHALStatusMsgString(halStatus),
16500 halStatus);
16501 /* send the status to UMAC, don't return from here*/
16502 }
16503
16504 /*Notify UMAC*/
16505 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16506
Jeff Johnsone7245742012-09-05 17:12:55 -070016507 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016508}/*WDI_ProcessSetSTAKeyRsp*/
16509
16510/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016511 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016512 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016513
16514 @param pWDICtx: pointer to the WLAN DAL context
16515 pEventData: pointer to the event information structure
16516
Jeff Johnson295189b2012-06-20 16:38:30 -070016517 @see
16518 @return Result of the function call
16519*/
16520WDI_Status
16521WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016522(
Jeff Johnson295189b2012-06-20 16:38:30 -070016523 WDI_ControlBlockType* pWDICtx,
16524 WDI_EventInfoType* pEventData
16525)
16526{
16527 WDI_Status wdiStatus;
16528 eHalStatus halStatus;
16529 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16530 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16531
16532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016533 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016534 -------------------------------------------------------------------------*/
16535 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16536 ( NULL == pEventData->pEventData))
16537 {
16538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016539 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016542 }
16543
16544 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16545
16546 /*-------------------------------------------------------------------------
16547 Extract response and send it to UMAC
16548 -------------------------------------------------------------------------*/
16549 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016550 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016551
16552 if ( eHAL_STATUS_SUCCESS != halStatus )
16553 {
16554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16555 "Remove STA Key failed with status %s (%d)",
16556 WDI_getHALStatusMsgString(halStatus),
16557 halStatus);
16558 /* send the status to UMAC, don't return from here*/
16559 }
16560
16561 /*Notify UMAC*/
16562 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16563
Jeff Johnsone7245742012-09-05 17:12:55 -070016564 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016565}/*WDI_ProcessRemoveStaKeyRsp*/
16566
16567/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016568 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016569 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016570
16571 @param pWDICtx: pointer to the WLAN DAL context
16572 pEventData: pointer to the event information structure
16573
Jeff Johnson295189b2012-06-20 16:38:30 -070016574 @see
16575 @return Result of the function call
16576*/
16577WDI_Status
16578WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016579(
Jeff Johnson295189b2012-06-20 16:38:30 -070016580 WDI_ControlBlockType* pWDICtx,
16581 WDI_EventInfoType* pEventData
16582)
16583{
16584 WDI_Status wdiStatus;
16585 eHalStatus halStatus;
16586 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16588
16589 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016590 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016591 -------------------------------------------------------------------------*/
16592 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16593 ( NULL == pEventData->pEventData))
16594 {
16595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016596 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016597 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016599 }
16600
16601 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16602
16603 /*-------------------------------------------------------------------------
16604 Extract response and send it to UMAC
16605 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016606 wpalMemoryCopy( &halStatus,
16607 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016608 sizeof(halStatus));
16609
Jeff Johnsone7245742012-09-05 17:12:55 -070016610 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016611
16612 if ( eHAL_STATUS_SUCCESS != halStatus )
16613 {
16614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16615 "Set STA Key failed with status %s (%d)",
16616 WDI_getHALStatusMsgString(halStatus),
16617 halStatus);
16618 /* send the status to UMAC, don't return from here*/
16619 }
16620
16621 /*Notify UMAC*/
16622 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16623
Jeff Johnsone7245742012-09-05 17:12:55 -070016624 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016625}/*WDI_ProcessSetSTABcastKeyRsp*/
16626
16627/**
16628 @brief Process Remove STA Bcast Key Rsp function (called when a
16629 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016630
16631 @param pWDICtx: pointer to the WLAN DAL context
16632 pEventData: pointer to the event information structure
16633
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 @see
16635 @return Result of the function call
16636*/
16637WDI_Status
16638WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016639(
Jeff Johnson295189b2012-06-20 16:38:30 -070016640 WDI_ControlBlockType* pWDICtx,
16641 WDI_EventInfoType* pEventData
16642)
16643{
16644 WDI_Status wdiStatus;
16645 eHalStatus halStatus;
16646 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16648
16649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016651 -------------------------------------------------------------------------*/
16652 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16653 ( NULL == pEventData->pEventData))
16654 {
16655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016659 }
16660
16661 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16662
16663 /*-------------------------------------------------------------------------
16664 Extract response and send it to UMAC
16665 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016666 wpalMemoryCopy( &halStatus,
16667 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016668 sizeof(halStatus));
16669
Jeff Johnsone7245742012-09-05 17:12:55 -070016670 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016671
16672 if ( eHAL_STATUS_SUCCESS != halStatus )
16673 {
16674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16675 "Remove STA Key failed with status %s (%d)",
16676 WDI_getHALStatusMsgString(halStatus),
16677 halStatus);
16678 /* send the status to UMAC, don't return from here*/
16679 }
16680
16681 /*Notify UMAC*/
16682 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16683
Jeff Johnsone7245742012-09-05 17:12:55 -070016684 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016685}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16686
16687
16688/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016689 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016690==========================================================================*/
16691
16692/**
16693 @brief Process Add TSpec Rsp function (called when a response
16694 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016695
16696 @param pWDICtx: pointer to the WLAN DAL context
16697 pEventData: pointer to the event information structure
16698
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 @see
16700 @return Result of the function call
16701*/
16702WDI_Status
16703WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016704(
Jeff Johnson295189b2012-06-20 16:38:30 -070016705 WDI_ControlBlockType* pWDICtx,
16706 WDI_EventInfoType* pEventData
16707)
16708{
16709 WDI_Status wdiStatus;
16710 eHalStatus halStatus;
16711 WDI_AddTsRspCb wdiAddTsRspCb;
16712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16713
16714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 -------------------------------------------------------------------------*/
16717 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16718 ( NULL == pEventData->pEventData))
16719 {
16720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016721 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016724 }
16725
16726 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16727
16728 /*-------------------------------------------------------------------------
16729 Extract response and send it to UMAC
16730 -------------------------------------------------------------------------*/
16731 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016732 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016733
16734 /*Notify UMAC*/
16735 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16736
Jeff Johnsone7245742012-09-05 17:12:55 -070016737 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016738}/*WDI_ProcessAddTSpecRsp*/
16739
16740
16741/**
16742 @brief Process Del TSpec Rsp function (called when a response
16743 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016744
16745 @param pWDICtx: pointer to the WLAN DAL context
16746 pEventData: pointer to the event information structure
16747
Jeff Johnson295189b2012-06-20 16:38:30 -070016748 @see
16749 @return Result of the function call
16750*/
16751WDI_Status
16752WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016753(
Jeff Johnson295189b2012-06-20 16:38:30 -070016754 WDI_ControlBlockType* pWDICtx,
16755 WDI_EventInfoType* pEventData
16756)
16757{
16758 WDI_Status wdiStatus;
16759 eHalStatus halStatus;
16760 WDI_DelTsRspCb wdiDelTsRspCb;
16761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16762
16763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016764 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016765 -------------------------------------------------------------------------*/
16766 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16767 ( NULL == pEventData->pEventData))
16768 {
16769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016770 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016773 }
16774
16775 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16776
16777 /*-------------------------------------------------------------------------
16778 Extract response and send it to UMAC
16779 -------------------------------------------------------------------------*/
16780 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016781 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016782
16783 /*Notify UMAC*/
16784 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16785
Jeff Johnsone7245742012-09-05 17:12:55 -070016786 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016787}/*WDI_ProcessDelTSpecRsp*/
16788
16789/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016790 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016791 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016792
16793 @param pWDICtx: pointer to the WLAN DAL context
16794 pEventData: pointer to the event information structure
16795
Jeff Johnson295189b2012-06-20 16:38:30 -070016796 @see
16797 @return Result of the function call
16798*/
16799WDI_Status
16800WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016801(
Jeff Johnson295189b2012-06-20 16:38:30 -070016802 WDI_ControlBlockType* pWDICtx,
16803 WDI_EventInfoType* pEventData
16804)
16805{
16806 WDI_Status wdiStatus;
16807 eHalStatus halStatus;
16808 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16810
16811 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016812 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016813 -------------------------------------------------------------------------*/
16814 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16815 ( NULL == pEventData->pEventData))
16816 {
16817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016818 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016821 }
16822
16823 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16824
16825 /*-------------------------------------------------------------------------
16826 Extract response and send it to UMAC
16827 -------------------------------------------------------------------------*/
16828 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016829 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016830
16831 /*Notify UMAC*/
16832 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16833
Jeff Johnsone7245742012-09-05 17:12:55 -070016834 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016835}/*WDI_ProcessUpdateEDCAParamsRsp*/
16836
16837
16838/**
16839 @brief Process Add BA Rsp function (called when a response
16840 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016841
16842 @param pWDICtx: pointer to the WLAN DAL context
16843 pEventData: pointer to the event information structure
16844
Jeff Johnson295189b2012-06-20 16:38:30 -070016845 @see
16846 @return Result of the function call
16847*/
16848WDI_Status
16849WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016850(
Jeff Johnson295189b2012-06-20 16:38:30 -070016851 WDI_ControlBlockType* pWDICtx,
16852 WDI_EventInfoType* pEventData
16853)
16854{
16855 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16856
16857 tAddBASessionRspParams halBASessionRsp;
16858 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16859
Jeff Johnsone7245742012-09-05 17:12:55 -070016860
Jeff Johnson295189b2012-06-20 16:38:30 -070016861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16862
16863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016865 -------------------------------------------------------------------------*/
16866 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16867 ( NULL == pEventData->pEventData))
16868 {
16869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016870 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016873 }
16874
16875 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16876
16877 /*-------------------------------------------------------------------------
16878 Extract response and send it to UMAC
16879 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016880 wpalMemoryCopy( &halBASessionRsp,
16881 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 sizeof(halBASessionRsp));
16883
16884 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16885
Jeff Johnson43971f52012-07-17 12:26:56 -070016886 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016887 {
16888 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16889 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16890 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16891 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16892 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16893 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16894 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16895 }
16896
16897 /*Notify UMAC*/
16898 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16899
Jeff Johnsone7245742012-09-05 17:12:55 -070016900 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016901}/*WDI_ProcessAddSessionBARsp*/
16902
16903
16904/**
16905 @brief Process Del BA Rsp function (called when a response
16906 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016907
16908 @param pWDICtx: pointer to the WLAN DAL context
16909 pEventData: pointer to the event information structure
16910
Jeff Johnson295189b2012-06-20 16:38:30 -070016911 @see
16912 @return Result of the function call
16913*/
16914WDI_Status
16915WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016916(
Jeff Johnson295189b2012-06-20 16:38:30 -070016917 WDI_ControlBlockType* pWDICtx,
16918 WDI_EventInfoType* pEventData
16919)
16920{
16921 WDI_Status wdiStatus;
16922 eHalStatus halStatus;
16923 WDI_DelBARspCb wdiDelBARspCb;
16924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16925
16926 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016927 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016928 -------------------------------------------------------------------------*/
16929 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16930 ( NULL == pEventData->pEventData))
16931 {
16932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016933 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016934 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016936 }
16937
16938 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16939
16940 /*-------------------------------------------------------------------------
16941 Extract response and send it to UMAC
16942 -------------------------------------------------------------------------*/
16943 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016944 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016945
16946 if ( eHAL_STATUS_SUCCESS == halStatus )
16947 {
16948 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16949 }
16950
16951 /*Notify UMAC*/
16952 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16953
Jeff Johnsone7245742012-09-05 17:12:55 -070016954 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016955}/*WDI_ProcessDelBARsp*/
16956
16957#ifdef FEATURE_WLAN_CCX
16958/**
16959 @brief Process TSM Stats Rsp function (called when a response
16960 is being received over the bus from HAL)
16961
16962 @param pWDICtx: pointer to the WLAN DAL context
16963 pEventData: pointer to the event information structure
16964
16965 @see
16966 @return Result of the function call
16967*/
16968WDI_Status
16969WDI_ProcessTsmStatsRsp
16970(
16971 WDI_ControlBlockType* pWDICtx,
16972 WDI_EventInfoType* pEventData
16973)
16974{
16975 WDI_TsmRspCb wdiTsmStatsRspCb;
16976 tTsmStatsRspMsg halTsmStatsRspMsg;
16977 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16979
16980 /*-------------------------------------------------------------------------
16981 Sanity check
16982 -------------------------------------------------------------------------*/
16983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16984 ( NULL == pEventData->pEventData))
16985 {
16986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016988 WDI_ASSERT(0);
16989 return WDI_STATUS_E_FAILURE;
16990 }
16991
16992 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16993
16994 /*-------------------------------------------------------------------------
16995 Unpack HAL Response Message - the header was already extracted by the
16996 main Response Handling procedure
16997 -------------------------------------------------------------------------*/
16998 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16999 pEventData->pEventData,
17000 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17001
17002 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17003 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17004 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17005 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17006 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17007 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17008 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17009 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17010 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17011 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17012 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17013 halTsmStatsRspMsg.tsmStatsRspParams.status);
17014
17015 /*Notify UMAC*/
17016 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17017
17018 return WDI_STATUS_SUCCESS;
17019}/*WDI_ProcessTsmStatsRsp*/
17020
17021#endif
17022
17023
17024
17025/**
17026 @brief Process Flush AC Rsp function (called when a response
17027 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017028
17029 @param pWDICtx: pointer to the WLAN DAL context
17030 pEventData: pointer to the event information structure
17031
Jeff Johnson295189b2012-06-20 16:38:30 -070017032 @see
17033 @return Result of the function call
17034*/
17035WDI_Status
17036WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017037(
Jeff Johnson295189b2012-06-20 16:38:30 -070017038 WDI_ControlBlockType* pWDICtx,
17039 WDI_EventInfoType* pEventData
17040)
17041{
17042 WDI_Status wdiStatus;
17043 eHalStatus halStatus;
17044 WDI_FlushAcRspCb wdiFlushAcRspCb;
17045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17046
17047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017048 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017049 -------------------------------------------------------------------------*/
17050 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17051 ( NULL == pEventData->pEventData))
17052 {
17053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017054 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017055 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017056 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017057 }
17058
17059 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17060
17061 /*-------------------------------------------------------------------------
17062 Extract response and send it to UMAC
17063 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017064 wpalMemoryCopy( &halStatus,
17065 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017066 sizeof(halStatus));
17067
Jeff Johnsone7245742012-09-05 17:12:55 -070017068 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017069
17070 /*Notify UMAC*/
17071 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17072
Jeff Johnsone7245742012-09-05 17:12:55 -070017073 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017074}/*WDI_ProcessFlushAcRsp*/
17075
17076/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017077 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017078 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017079
17080 @param pWDICtx: pointer to the WLAN DAL context
17081 pEventData: pointer to the event information structure
17082
Jeff Johnson295189b2012-06-20 16:38:30 -070017083 @see
17084 @return Result of the function call
17085*/
17086WDI_Status
17087WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017088(
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 WDI_ControlBlockType* pWDICtx,
17090 WDI_EventInfoType* pEventData
17091)
17092{
17093 WDI_Status wdiStatus;
17094 eHalStatus halStatus;
17095 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17097
17098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017099 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 -------------------------------------------------------------------------*/
17101 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17102 ( NULL == pEventData->pEventData))
17103 {
17104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017105 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017107 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017108 }
17109
17110 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17111
17112 /*-------------------------------------------------------------------------
17113 Extract response and send it to UMAC
17114 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017115 wpalMemoryCopy( &halStatus,
17116 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017117 sizeof(halStatus));
17118
Jeff Johnsone7245742012-09-05 17:12:55 -070017119 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017120
17121 /*Notify UMAC*/
17122 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17123
Jeff Johnsone7245742012-09-05 17:12:55 -070017124 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017125}/*WDI_ProcessBtAmpEventRsp*/
17126
17127
17128/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017129 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017130 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017131
17132 @param pWDICtx: pointer to the WLAN DAL context
17133 pEventData: pointer to the event information structure
17134
Jeff Johnson295189b2012-06-20 16:38:30 -070017135 @see
17136 @return Result of the function call
17137*/
17138WDI_Status
17139WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017140(
Jeff Johnson295189b2012-06-20 16:38:30 -070017141 WDI_ControlBlockType* pWDICtx,
17142 WDI_EventInfoType* pEventData
17143)
17144{
17145 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17146 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17147 tAddStaSelfRspMsg halAddStaSelfRsp;
17148 WDI_AddStaParams wdiAddSTAParam = {0};
17149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17150
17151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017152 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017153 -------------------------------------------------------------------------*/
17154 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17155 ( NULL == pEventData->pEventData))
17156 {
17157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017158 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017161 }
17162
Jeff Johnsone7245742012-09-05 17:12:55 -070017163 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017164 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17165
17166 /*-------------------------------------------------------------------------
17167 Extract response and send it to UMAC
17168 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017169 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17170 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017171 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17172
17173
Jeff Johnsone7245742012-09-05 17:12:55 -070017174 wdiAddSTASelfParams.wdiStatus =
17175 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017176
Jeff Johnsone7245742012-09-05 17:12:55 -070017177 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017178 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017179 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017180 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017181 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017182 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17183
17184 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17185 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17186 WDI_MAC_ADDR_LEN);
17187
17188
17189#ifdef HAL_SELF_STA_PER_BSS
17190
17191 /* At this point add the self-STA */
17192
17193 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17194 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17195 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17196
17197 //all DPU indices are the same for self STA
17198
17199 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017200 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017201 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17202 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17203 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17204 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17205 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17206
17207 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17208 WDI_MAC_ADDR_LEN);
17209
17210 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17211 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17212
Jeff Johnsone7245742012-09-05 17:12:55 -070017213 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017214 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17215 {
17216 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17217 }
17218#endif
17219
17220 /*Notify UMAC*/
17221 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17222
Jeff Johnsone7245742012-09-05 17:12:55 -070017223 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017224}/*WDI_ProcessAddSTASelfRsp*/
17225
17226
17227
17228/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017229 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017230 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017231
17232 @param pWDICtx: pointer to the WLAN DAL context
17233 pEventData: pointer to the event information structure
17234
Jeff Johnson295189b2012-06-20 16:38:30 -070017235 @see
17236 @return Result of the function call
17237*/
17238WDI_Status
17239WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017240(
Jeff Johnson295189b2012-06-20 16:38:30 -070017241 WDI_ControlBlockType* pWDICtx,
17242 WDI_EventInfoType* pEventData
17243)
17244{
17245 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17246 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17247 tDelStaSelfRspParams delStaSelfRspParams;
17248 wpt_uint8 ucStaIdx;
17249
17250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17251
17252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017253 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017254 -------------------------------------------------------------------------*/
17255 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17256 ( NULL == pEventData->pEventData))
17257 {
17258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017259 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017262 }
17263
17264 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17265
17266 /*-------------------------------------------------------------------------
17267 Extract response and send it to UMAC
17268 -------------------------------------------------------------------------*/
17269
Jeff Johnsone7245742012-09-05 17:12:55 -070017270 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017271 (wpt_uint8*)pEventData->pEventData,
17272 sizeof(tDelStaSelfRspParams));
17273
Jeff Johnsone7245742012-09-05 17:12:55 -070017274 wdiDelStaSelfRspParams.wdiStatus =
17275 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017276
Jeff Johnsone7245742012-09-05 17:12:55 -070017277 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017278 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17279 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17280 {
17281 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017282 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017283 delStaSelfRspParams.selfMacAddr,
17284 &ucStaIdx);
17285 if(WDI_STATUS_E_FAILURE == wdiStatus)
17286 {
17287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017288 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017291 }
17292 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17293 }
17294
17295 /*Notify UMAC*/
17296 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17297
17298 return WDI_STATUS_SUCCESS;
17299}
17300
Jeff Johnsone7245742012-09-05 17:12:55 -070017301#ifdef FEATURE_OEM_DATA_SUPPORT
17302/**
17303 @brief Start Oem Data Rsp function (called when a
17304 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017305
Jeff Johnsone7245742012-09-05 17:12:55 -070017306 @param pWDICtx: pointer to the WLAN DAL context
17307 pEventData: pointer to the event information structure
17308
17309 @see
17310 @return Result of the function call
17311*/
17312#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17313
17314WDI_Status
17315WDI_ProcessStartOemDataRsp
17316(
17317 WDI_ControlBlockType* pWDICtx,
17318 WDI_EventInfoType* pEventData
17319)
17320{
17321 WDI_oemDataRspCb wdiOemDataRspCb;
17322 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17323 tStartOemDataRspParams* halStartOemDataRspParams;
17324
17325 /*-------------------------------------------------------------------------
17326 Sanity check
17327 -------------------------------------------------------------------------*/
17328 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17329 ( NULL == pEventData->pEventData))
17330 {
17331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017332 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017333 WDI_ASSERT(0);
17334 return WDI_STATUS_E_FAILURE;
17335 }
17336
17337 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17338
17339 /*-------------------------------------------------------------------------
17340 Extract response and send it to UMAC
17341 -------------------------------------------------------------------------*/
17342 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17343
17344
17345 //It is the responsibility of the application code to check for failure
17346 //conditions!
17347
17348 //Allocate memory for WDI OEM DATA RSP structure
17349 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17350
17351 if(NULL == wdiOemDataRspParams)
17352 {
17353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017354 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017355 pWDICtx, pEventData, pEventData->pEventData);
17356 WDI_ASSERT(0);
17357 return WDI_STATUS_E_FAILURE;
17358 }
17359
17360 /* Populate WDI structure members */
17361 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17362
17363 /*Notify UMAC*/
17364 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17365
17366 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17367 wpalMemoryFree(wdiOemDataRspParams);
17368
17369 return WDI_STATUS_SUCCESS;
17370}/*WDI_PrcoessStartOemDataRsp*/
17371#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017372
17373/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017374 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017375===========================================================================*/
17376
17377/**
17378 @brief Process Channel Switch Rsp function (called when a response
17379 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017380
17381 @param pWDICtx: pointer to the WLAN DAL context
17382 pEventData: pointer to the event information structure
17383
Jeff Johnson295189b2012-06-20 16:38:30 -070017384 @see
17385 @return Result of the function call
17386*/
17387WDI_Status
17388WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017389(
Jeff Johnson295189b2012-06-20 16:38:30 -070017390 WDI_ControlBlockType* pWDICtx,
17391 WDI_EventInfoType* pEventData
17392)
17393{
17394 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17395 WDI_SwitchChRspCb wdiChSwitchRspCb;
17396 tSwitchChannelRspParams halSwitchChannelRsp;
17397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17398
17399 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017400 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017401 -------------------------------------------------------------------------*/
17402 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17403 ( NULL == pEventData->pEventData))
17404 {
17405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017406 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017409 }
17410
17411 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17412
17413 /*-------------------------------------------------------------------------
17414 Extract response and send it to UMAC
17415 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017416 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017417 (wpt_uint8*)pEventData->pEventData,
17418 sizeof(halSwitchChannelRsp));
17419
Jeff Johnsone7245742012-09-05 17:12:55 -070017420 wdiSwitchChRsp.wdiStatus =
17421 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017422 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17423
17424#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017425 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017426#endif
17427
17428 /*Notify UMAC*/
17429 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17430
Jeff Johnsone7245742012-09-05 17:12:55 -070017431 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017432}/*WDI_ProcessChannelSwitchRsp*/
17433
17434
17435/**
17436 @brief Process Config STA 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_ProcessConfigStaRsp
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_ConfigSTARspParamsType wdiCfgSTAParams;
17453 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17454 WDI_AddStaParams wdiAddSTAParam;
17455
17456 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017457 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017458
Jeff Johnsone7245742012-09-05 17:12:55 -070017459 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17461
17462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017463 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017464 -------------------------------------------------------------------------*/
17465 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17466 ( NULL == pEventData->pEventData))
17467 {
17468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017469 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017470 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017472 }
17473
17474 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17475
17476 /*-------------------------------------------------------------------------
17477 Extract response and send it to UMAC
17478 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017479 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17480 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017481 sizeof(halConfigStaRsp.configStaRspParams));
17482
17483
17484 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17485 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17486 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17487 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17488 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17489
17490 /* MAC Address of STA - take from cache as it does not come back in the
17491 response*/
17492 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017493 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017494 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017495
17496 wdiCfgSTAParams.wdiStatus =
17497 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017498
17499 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17500 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17501 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17502
17503 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17504 {
17505 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17506 {
17507 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017508 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017509 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17510 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017511
Jeff Johnson295189b2012-06-20 16:38:30 -070017512 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017513 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017514 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017515 wdiAddSTAParam.ucHTCapable =
17516 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17517 wdiAddSTAParam.ucStaType =
17518 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070017519 wdiAddSTAParam.ucRmfEnabled =
17520 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017521
Jeff Johnson295189b2012-06-20 16:38:30 -070017522 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017523 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17524 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017525 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017526
17527 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17528 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17529 WDI_MAC_ADDR_LEN);
17530
17531 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17532 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17533 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017534
17535 if ( NULL == pBSSSes )
17536 {
17537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17538 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017539
Jeff Johnson295189b2012-06-20 16:38:30 -070017540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017541 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017542 }
17543
17544 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017545 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017547 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017548 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017549 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017550 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017551 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017552 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017553 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017554
Jeff Johnson295189b2012-06-20 16:38:30 -070017555 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17556 }
17557 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17558 {
17559 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17560
Jeff Johnsone7245742012-09-05 17:12:55 -070017561 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017562 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017563 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017564 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017565 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017566 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017567 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017568 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017569 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017570 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017571 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017572 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017573 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017574 halConfigStaRsp.configStaRspParams.ucUcastSig;
17575 }
17576 }
17577
17578 /*Notify UMAC*/
17579 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17580
Jeff Johnsone7245742012-09-05 17:12:55 -070017581 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017582}/*WDI_ProcessConfigStaRsp*/
17583
17584
17585/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017586 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017587 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017588
17589 @param pWDICtx: pointer to the WLAN DAL context
17590 pEventData: pointer to the event information structure
17591
Jeff Johnson295189b2012-06-20 16:38:30 -070017592 @see
17593 @return Result of the function call
17594*/
17595WDI_Status
17596WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017597(
Jeff Johnson295189b2012-06-20 16:38:30 -070017598 WDI_ControlBlockType* pWDICtx,
17599 WDI_EventInfoType* pEventData
17600)
17601{
17602 WDI_Status wdiStatus;
17603 eHalStatus halStatus;
17604 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17605
17606 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017607 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17609
17610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017611 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017612 -------------------------------------------------------------------------*/
17613 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17614 ( NULL == pEventData->pEventData))
17615 {
17616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017617 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017618 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017619 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017620 }
17621
17622 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17623
17624 wpalMutexAcquire(&pWDICtx->wptMutex);
17625
17626 /*If the link is being transitioned to idle - the BSS is to be deleted
17627 - this type of ending a session is possible when UMAC has failed an
17628 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017629 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017630 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17631 {
17632 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017633 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017634 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017635 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17636 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17637 &pBSSSes);
17638
Jeff Johnson295189b2012-06-20 16:38:30 -070017639 /*-----------------------------------------------------------------------
17640 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017641 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017642 -----------------------------------------------------------------------*/
17643 if ( NULL == pBSSSes )
17644 {
17645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17646 "Set link response received outside association session");
17647 }
17648 else
17649 {
17650 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17651 will be del BSS coming after this to stop the beaconing & cleaning up the
17652 sessions*/
17653 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17654 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17655 {
17656 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017657 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017658 -----------------------------------------------------------------------*/
17659 WDI_DeleteSession(pWDICtx, pBSSSes);
17660
17661 /*-----------------------------------------------------------------------
17662 Check to see if this association is in progress - if so disable the
17663 flag as this has ended
17664 -----------------------------------------------------------------------*/
17665 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017666 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017667 /*Association no longer in progress */
17668 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17669 /*Association no longer in progress - prepare pending assoc for processing*/
17670 WDI_DequeueAssocRequest(pWDICtx);
17671 }
17672 }
17673 }
17674 }
17675 /* If the link state has been set to POST ASSOC, reset the "association in
17676 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017677 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017678 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17679 {
17680 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17681 WDI_DequeueAssocRequest(pWDICtx);
17682 }
17683
17684 wpalMutexRelease(&pWDICtx->wptMutex);
17685
17686 /*-------------------------------------------------------------------------
17687 Extract response and send it to UMAC
17688 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017689 wpalMemoryCopy( &halStatus,
17690 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017691 sizeof(halStatus));
17692
Jeff Johnsone7245742012-09-05 17:12:55 -070017693 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017694
17695 /*Notify UMAC*/
17696 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17697
Jeff Johnsone7245742012-09-05 17:12:55 -070017698 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017699}/*WDI_ProcessSetLinkStateRsp*/
17700
17701/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017702 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017704
17705 @param pWDICtx: pointer to the WLAN DAL context
17706 pEventData: pointer to the event information structure
17707
Jeff Johnson295189b2012-06-20 16:38:30 -070017708 @see
17709 @return Result of the function call
17710*/
17711WDI_Status
17712WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017713(
Jeff Johnson295189b2012-06-20 16:38:30 -070017714 WDI_ControlBlockType* pWDICtx,
17715 WDI_EventInfoType* pEventData
17716)
17717{
17718 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17719 WDI_GetStatsRspCb wdiGetStatsRspCb;
17720 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017721
Jeff Johnson295189b2012-06-20 16:38:30 -070017722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17723
17724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017725 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017726 -------------------------------------------------------------------------*/
17727 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17728 ( NULL == pEventData->pEventData))
17729 {
17730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017731 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017734 }
17735
17736 /*-------------------------------------------------------------------------
17737 Extract response and send it to UMAC
17738 -------------------------------------------------------------------------*/
17739 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17740
17741 /*allocate the stats response buffer */
17742 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17743 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17744 + sizeof(WDI_GetStatsRspParamsType));
17745
17746 if(NULL == wdiGetStatsRsp)
17747 {
17748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017749 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070017750 pWDICtx, pEventData, pEventData->pEventData);
17751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017753 }
17754
17755 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17756
17757 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17758 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17759 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17760 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17761 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17762 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17763
17764 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17765 wpalMemoryCopy(wdiGetStatsRsp + 1,
17766 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17767 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17768
17769 /*Notify UMAC*/
17770 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17771
17772 wpalMemoryFree(wdiGetStatsRsp);
17773
Jeff Johnsone7245742012-09-05 17:12:55 -070017774 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017775}/*WDI_ProcessGetStatsRsp*/
17776
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080017777#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17778/**
17779 @brief Process Get Roam Rssi Rsp function (called when a response is
17780 being received over the bus from HAL)
17781
17782 @param pWDICtx: pointer to the WLAN DAL context
17783 pEventData: pointer to the event information structure
17784
17785 @see
17786 @return Result of the function call
17787*/
17788WDI_Status
17789WDI_ProcessGetRoamRssiRsp
17790(
17791 WDI_ControlBlockType* pWDICtx,
17792 WDI_EventInfoType* pEventData
17793)
17794{
17795 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17796 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17797 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17799
17800 /*-------------------------------------------------------------------------
17801 Sanity check
17802 -------------------------------------------------------------------------*/
17803 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17804 ( NULL == pEventData->pEventData))
17805 {
17806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17807 "%s: Invalid parameters", __func__);
17808 WDI_ASSERT(0);
17809 return WDI_STATUS_E_FAILURE;
17810 }
17811
17812 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17813 if(NULL == wdiGetRoamRssiRspCb)
17814 {
17815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17816 "%s: call back function is NULL", __func__);
17817 WDI_ASSERT(0);
17818 return WDI_STATUS_E_FAILURE;
17819 }
17820
17821 /*-------------------------------------------------------------------------
17822 Extract response and send it to UMAC
17823 -------------------------------------------------------------------------*/
17824 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17825 pEventData->pEventData,
17826 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17827
17828 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17829 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17830 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17831
17832 /*Notify UMAC*/
17833 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17834
17835 return WDI_STATUS_SUCCESS;
17836}/*WDI_ProcessGetRoamRssiRsp*/
17837#endif
17838
Jeff Johnson295189b2012-06-20 16:38:30 -070017839
17840/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017841 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017842 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017843
17844 @param pWDICtx: pointer to the WLAN DAL context
17845 pEventData: pointer to the event information structure
17846
Jeff Johnson295189b2012-06-20 16:38:30 -070017847 @see
17848 @return Result of the function call
17849*/
17850WDI_Status
17851WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017852(
Jeff Johnson295189b2012-06-20 16:38:30 -070017853 WDI_ControlBlockType* pWDICtx,
17854 WDI_EventInfoType* pEventData
17855)
17856{
17857 WDI_Status wdiStatus;
17858 eHalStatus halStatus;
17859 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17861
17862 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017863 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017864 -------------------------------------------------------------------------*/
17865 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17866 ( NULL == pEventData->pEventData))
17867 {
17868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017869 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017870 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017871 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017872 }
17873
17874 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17875
17876 /*-------------------------------------------------------------------------
17877 Extract response and send it to UMAC
17878 -------------------------------------------------------------------------*/
17879 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017880 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017881
17882 /*Notify UMAC*/
17883 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17884
Jeff Johnsone7245742012-09-05 17:12:55 -070017885 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017886}/*WDI_ProcessUpdateCfgRsp*/
17887
17888
17889
17890/**
17891 @brief Process Add BA Rsp function (called when a response
17892 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017893
17894 @param pWDICtx: pointer to the WLAN DAL context
17895 pEventData: pointer to the event information structure
17896
Jeff Johnson295189b2012-06-20 16:38:30 -070017897 @see
17898 @return Result of the function call
17899*/
17900WDI_Status
17901WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017902(
Jeff Johnson295189b2012-06-20 16:38:30 -070017903 WDI_ControlBlockType* pWDICtx,
17904 WDI_EventInfoType* pEventData
17905)
17906{
17907 WDI_AddBARspCb wdiAddBARspCb;
17908
17909 tAddBARspParams halAddBARsp;
17910 WDI_AddBARspinfoType wdiAddBARsp;
17911
17912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17913
17914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017916 -------------------------------------------------------------------------*/
17917 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17918 ( NULL == pEventData->pEventData))
17919 {
17920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017924 }
17925
17926 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17927
17928 /*-------------------------------------------------------------------------
17929 Extract response and send it to UMAC
17930 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017931 wpalMemoryCopy( &halAddBARsp,
17932 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017933 sizeof(halAddBARsp));
17934
17935 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17936
Jeff Johnson43971f52012-07-17 12:26:56 -070017937 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017938 {
17939 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17940 }
17941
17942 /*Notify UMAC*/
17943 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17944
Jeff Johnsone7245742012-09-05 17:12:55 -070017945 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017946}/*WDI_ProcessAddSessionBARsp*/
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_ProcessTriggerBARsp
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_TriggerBARspCb wdiTriggerBARspCb;
17966
17967 tTriggerBARspParams* halTriggerBARsp;
17968 tTriggerBaRspCandidate* halBaCandidate;
17969 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17970 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17971 wpt_uint16 index;
17972 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017973 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017974 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17975
17976 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017977 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017978 -------------------------------------------------------------------------*/
17979 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17980 ( NULL == pEventData->pEventData))
17981 {
17982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017983 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017986 }
17987
17988 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17989
17990 /*-------------------------------------------------------------------------
17991 Extract response and send it to UMAC
17992 -------------------------------------------------------------------------*/
17993 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17994
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017995 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17996
17997 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17998 {
17999 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018000 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018001 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018002
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018003 if(NULL == wdiTriggerBARsp)
18004 {
18005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018006 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018007 pWDICtx, pEventData, pEventData->pEventData);
18008 WDI_ASSERT(0);
18009 return WDI_STATUS_E_FAILURE;
18010 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018011
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018012 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18013
Jeff Johnson295189b2012-06-20 16:38:30 -070018014 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018015 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018016 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18017
18018 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18019 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18020
18021 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18022 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018023 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018024 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18025 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18026 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018027 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018028 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018029 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018030 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18031 }
18032 wdiTriggerBARspCandidate++;
18033 halBaCandidate++;
18034 }
18035 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018036 else
18037 {
18038 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18039
18040 if(NULL == wdiTriggerBARsp)
18041 {
18042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018043 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018044 pWDICtx, pEventData, pEventData->pEventData);
18045 WDI_ASSERT(0);
18046 return WDI_STATUS_E_FAILURE;
18047 }
18048
18049 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18050
18051 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018052
18053 /*Notify UMAC*/
18054 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18055
18056 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018057 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018058}/*WDI_ProcessAddSessionBARsp*/
18059
18060/**
18061 @brief Process Update Beacon Params Rsp function (called when a response
18062 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018063
18064 @param pWDICtx: pointer to the WLAN DAL context
18065 pEventData: pointer to the event information structure
18066
Jeff Johnson295189b2012-06-20 16:38:30 -070018067 @see
18068 @return Result of the function call
18069*/
18070WDI_Status
18071WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018072(
Jeff Johnson295189b2012-06-20 16:38:30 -070018073 WDI_ControlBlockType* pWDICtx,
18074 WDI_EventInfoType* pEventData
18075)
18076{
18077 WDI_Status wdiStatus;
18078 eHalStatus halStatus;
18079 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18081
18082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018084 -------------------------------------------------------------------------*/
18085 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18086 ( NULL == pEventData->pEventData))
18087 {
18088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018092 }
18093
18094 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18095
18096 /*-------------------------------------------------------------------------
18097 Extract response and send it to UMAC
18098 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018099 wpalMemoryCopy( &halStatus,
18100 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018101 sizeof(halStatus));
18102
Jeff Johnsone7245742012-09-05 17:12:55 -070018103 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018104
18105 /*Notify UMAC*/
18106 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18107
Jeff Johnsone7245742012-09-05 17:12:55 -070018108 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018109}/*WDI_ProcessUpdateBeaconParamsRsp*/
18110
18111/**
18112 @brief Process Send Beacon template Rsp function (called when a response
18113 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018114
18115 @param pWDICtx: pointer to the WLAN DAL context
18116 pEventData: pointer to the event information structure
18117
Jeff Johnson295189b2012-06-20 16:38:30 -070018118 @see
18119 @return Result of the function call
18120*/
18121WDI_Status
18122WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018123(
Jeff Johnson295189b2012-06-20 16:38:30 -070018124 WDI_ControlBlockType* pWDICtx,
18125 WDI_EventInfoType* pEventData
18126)
18127{
18128 WDI_Status wdiStatus;
18129 eHalStatus halStatus;
18130 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18132
18133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018134 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018135 -------------------------------------------------------------------------*/
18136 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18137 ( NULL == pEventData->pEventData))
18138 {
18139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018140 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018141 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018143 }
18144
18145 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18146
18147 /*-------------------------------------------------------------------------
18148 Extract response and send it to UMAC
18149 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018150 wpalMemoryCopy( &halStatus,
18151 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018152 sizeof(halStatus));
18153
Jeff Johnsone7245742012-09-05 17:12:55 -070018154 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018155
18156 /*Notify UMAC*/
18157 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18158
Jeff Johnsone7245742012-09-05 17:12:55 -070018159 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018160}/*WDI_ProcessSendBeaconParamsRsp*/
18161
Jeff Johnsone7245742012-09-05 17:12:55 -070018162
Jeff Johnson295189b2012-06-20 16:38:30 -070018163/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018164 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018165 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018166
18167 @param pWDICtx: pointer to the WLAN DAL context
18168 pEventData: pointer to the event information structure
18169
Jeff Johnson295189b2012-06-20 16:38:30 -070018170 @see
18171 @return Result of the function call
18172*/
18173WDI_Status
18174WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018175(
Jeff Johnson295189b2012-06-20 16:38:30 -070018176 WDI_ControlBlockType* pWDICtx,
18177 WDI_EventInfoType* pEventData
18178)
18179{
18180 WDI_Status wdiStatus;
18181 eHalStatus halStatus;
18182 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18184
18185 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018186 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018187 -------------------------------------------------------------------------*/
18188 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18189 ( NULL == pEventData->pEventData))
18190 {
18191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018192 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018195 }
18196
18197 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18198
18199 /*-------------------------------------------------------------------------
18200 Extract response and send it to UMAC
18201 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018202 wpalMemoryCopy( &halStatus,
18203 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018204 sizeof(halStatus));
18205
Jeff Johnsone7245742012-09-05 17:12:55 -070018206 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018207
18208 /*Notify UMAC*/
18209 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18210
Jeff Johnsone7245742012-09-05 17:12:55 -070018211 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018212}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18213
18214 /**
18215 @brief Process Set Max Tx Power Rsp function (called when a response
18216 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018217
18218 @param pWDICtx: pointer to the WLAN DAL context
18219 pEventData: pointer to the event information structure
18220
Jeff Johnson295189b2012-06-20 16:38:30 -070018221 @see
18222 @return Result of the function call
18223*/
18224WDI_Status
18225WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018226(
Jeff Johnson295189b2012-06-20 16:38:30 -070018227 WDI_ControlBlockType* pWDICtx,
18228 WDI_EventInfoType* pEventData
18229)
18230{
18231 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018232
Jeff Johnson295189b2012-06-20 16:38:30 -070018233 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018234
Jeff Johnson295189b2012-06-20 16:38:30 -070018235 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18237
18238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018239 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018240 -------------------------------------------------------------------------*/
18241 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18242 ( NULL == pEventData->pEventData))
18243 {
18244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018245 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018248 }
18249
18250 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18251
18252 /*-------------------------------------------------------------------------
18253 Extract response and send it to UMAC
18254 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018255 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18256 pEventData->pEventData,
18257 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018258
18259 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18260 {
18261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18262 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018264 }
18265
Jeff Johnsone7245742012-09-05 17:12:55 -070018266 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018267 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018268 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018269
18270 /*Notify UMAC*/
18271 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18272
Jeff Johnsone7245742012-09-05 17:12:55 -070018273 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018274}
18275
schang86c22c42013-03-13 18:41:24 -070018276 /**
18277 @brief Process Set Tx Power Rsp function (called when a response
18278 is being received over the bus from HAL)
18279
18280 @param pWDICtx: pointer to the WLAN DAL context
18281 pEventData: pointer to the event information structure
18282
18283 @see
18284 @return Result of the function call
18285*/
18286WDI_Status
18287WDI_ProcessSetTxPowerRsp
18288(
18289 WDI_ControlBlockType* pWDICtx,
18290 WDI_EventInfoType* pEventData
18291)
18292{
18293 tSetTxPwrRspMsg halTxpowerrsp;
18294 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18295 WDA_SetTxPowerRspCb wdiReqStatusCb;
18296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18297
18298 /*-------------------------------------------------------------------------
18299 Sanity check
18300 -------------------------------------------------------------------------*/
18301 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18302 ( NULL == pEventData->pEventData))
18303 {
18304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18305 "%s: Invalid parameters", __func__);
18306 WDI_ASSERT(0);
18307 return WDI_STATUS_E_FAILURE;
18308 }
18309
18310 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18311
18312 /*-------------------------------------------------------------------------
18313 Extract response and send it to UMAC
18314 -------------------------------------------------------------------------*/
18315 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18316 pEventData->pEventData,
18317 sizeof(halTxpowerrsp.setTxPwrRspParams));
18318
18319 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18320 {
18321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18322 "Error status returned in Set Tx Power Response ");
18323 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18324 return WDI_STATUS_E_FAILURE;
18325 }
18326
18327 wdiSetTxPowerRspMsg.wdiStatus =
18328 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18329
18330 /*Notify UMAC*/
18331 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18332
18333 return WDI_STATUS_SUCCESS;
18334}
Arif Hussain935a8fb2014-01-31 12:12:28 -080018335
18336/**
18337 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
18338 is being received over the bus from HAL)
18339
18340 @param pWDICtx: pointer to the WLAN DAL context
18341 pEventData: pointer to the event information structure
18342
18343 @see
18344 @return Result of the function call
18345*/
18346WDI_Status
18347WDI_ProcessSetMaxTxPowerPerBandRsp
18348(
18349 WDI_ControlBlockType* pWDICtx,
18350 WDI_EventInfoType* pEventData
18351)
18352{
18353 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
18354 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
18355 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
18356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18357
18358 /*-------------------------------------------------------------------------
18359 Sanity check
18360 -------------------------------------------------------------------------*/
18361 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18362 ( NULL == pEventData->pEventData))
18363 {
18364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18365 "%s: Invalid parameters", __func__);
18366 WDI_ASSERT(0);
18367 return WDI_STATUS_E_FAILURE;
18368 }
18369
18370 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
18371
18372 /*-------------------------------------------------------------------------
18373 Extract response and send it to UMAC
18374 -------------------------------------------------------------------------*/
18375 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
18376 pEventData->pEventData,
18377 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
18378
18379 if (eHAL_STATUS_SUCCESS !=
18380 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
18381 {
18382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18383 "Error status returned in Set Max Tx Power Per Band Response");
18384 return WDI_STATUS_E_FAILURE;
18385 }
18386
18387 wdiSetTxPowerPerBandRspMsg.wdiStatus =
18388 WDI_HAL_2_WDI_STATUS(
18389 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
18390
18391 /* Notify UMAC */
18392 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
18393
18394 return WDI_STATUS_SUCCESS;
18395}
18396
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018397#ifdef FEATURE_WLAN_TDLS
18398/**
18399 @brief Process TDLS Link Establish Rsp function (called
18400 when a response is being received over the bus from HAL)
18401
18402 @param pWDICtx: pointer to the WLAN DAL context
18403 pEventData: pointer to the event information structure
18404
18405 @see
18406 @return Result of the function call
18407*/
18408WDI_Status
18409WDI_ProcessLinkEstablishReqRsp
18410(
18411 WDI_ControlBlockType* pWDICtx,
18412 WDI_EventInfoType* pEventData
18413)
18414{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018415 eHalStatus halStatus;
18416 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018417 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18418 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18419
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18421
18422 /*-------------------------------------------------------------------------
18423 Sanity check
18424 -------------------------------------------------------------------------*/
18425 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18426 ( NULL == pEventData->pEventData))
18427 {
18428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18429 "%s: Invalid parameters", __func__);
18430 WDI_ASSERT(0);
18431 return WDI_STATUS_E_FAILURE;
18432 }
18433
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018434 /*-------------------------------------------------------------------------
18435 Extract indication and send it to UMAC
18436 -------------------------------------------------------------------------*/
18437 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18438 pEventData->pEventData,
18439 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18440
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018441 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18442
18443 /*-------------------------------------------------------------------------
18444 Extract response and send it to UMAC
18445 -------------------------------------------------------------------------*/
18446 wpalMemoryCopy( &halStatus,
18447 pEventData->pEventData,
18448 sizeof(halStatus));
18449
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018450 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18451 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018452
18453 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018454 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018455
18456 return WDI_STATUS_SUCCESS;
18457}/*WDI_ProcessLinkEstablishReqRsp*/
18458#endif
schang86c22c42013-03-13 18:41:24 -070018459
Jeff Johnson295189b2012-06-20 16:38:30 -070018460/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018461 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018462 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018463
18464 @param pWDICtx: pointer to the WLAN DAL context
18465 pEventData: pointer to the event information structure
18466
Jeff Johnson295189b2012-06-20 16:38:30 -070018467 @see
18468 @return Result of the function call
18469*/
18470WDI_Status
18471WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018472(
Jeff Johnson295189b2012-06-20 16:38:30 -070018473 WDI_ControlBlockType* pWDICtx,
18474 WDI_EventInfoType* pEventData
18475)
18476{
18477 WDI_Status wdiStatus;
18478 eHalStatus halStatus;
18479 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18481
18482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018483 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018484 -------------------------------------------------------------------------*/
18485 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18486 ( NULL == pEventData->pEventData))
18487 {
18488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018489 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018490 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018491 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018492 }
18493
18494 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18495
18496 /*-------------------------------------------------------------------------
18497 Extract response and send it to UMAC
18498 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018499 wpalMemoryCopy( &halStatus,
18500 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018501 sizeof(halStatus));
18502
Jeff Johnsone7245742012-09-05 17:12:55 -070018503 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018504
18505 /*Notify UMAC*/
18506 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18507
Jeff Johnsone7245742012-09-05 17:12:55 -070018508 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018509}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018510/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018511 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018512 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018513
18514 @param pWDICtx: pointer to the WLAN DAL context
18515 pEventData: pointer to the event information structure
18516
Jeff Johnson295189b2012-06-20 16:38:30 -070018517 @see
18518 @return Result of the function call
18519*/
18520WDI_Status
18521WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018522(
Jeff Johnson295189b2012-06-20 16:38:30 -070018523 WDI_ControlBlockType* pWDICtx,
18524 WDI_EventInfoType* pEventData
18525)
18526{
18527 WDI_Status wdiStatus;
18528 eHalStatus halStatus;
18529 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018530 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18532
18533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018535 -------------------------------------------------------------------------*/
18536 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18537 ( NULL == pEventData->pEventData))
18538 {
18539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018543 }
18544
18545 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18546
18547 /*-------------------------------------------------------------------------
18548 Extract response and send it to UMAC
18549 -------------------------------------------------------------------------*/
18550 halStatus = *((eHalStatus*)pEventData->pEventData);
18551
Jeff Johnsone7245742012-09-05 17:12:55 -070018552 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018553
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018554 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18555 * Other module states are taken care by PMC.
18556 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18557 */
18558 if (wdiStatus != WDI_STATUS_SUCCESS) {
18559
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18561 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18562 halStatus);
18563 /* Call Back is not required as we are putting the DXE in FULL
18564 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080018565 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18566
18567 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018569 "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 -080018570 WDI_ASSERT(0);
18571 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018572 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018573 /*Notify UMAC*/
18574 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18575
Jeff Johnsone7245742012-09-05 17:12:55 -070018576 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018577}/*WDI_ProcessEnterImpsRsp*/
18578
18579/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018580 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018581 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018582
18583 @param pWDICtx: pointer to the WLAN DAL context
18584 pEventData: pointer to the event information structure
18585
Jeff Johnson295189b2012-06-20 16:38:30 -070018586 @see
18587 @return Result of the function call
18588*/
18589WDI_Status
18590WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018591(
Jeff Johnson295189b2012-06-20 16:38:30 -070018592 WDI_ControlBlockType* pWDICtx,
18593 WDI_EventInfoType* pEventData
18594)
18595{
18596 WDI_Status wdiStatus;
18597 eHalStatus halStatus;
18598 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018599 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18601
18602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018603 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018604 -------------------------------------------------------------------------*/
18605 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18606 ( NULL == pEventData->pEventData))
18607 {
18608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018612 }
18613
18614 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18615
18616 /*-------------------------------------------------------------------------
18617 Extract response and send it to UMAC
18618 -------------------------------------------------------------------------*/
18619 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018620 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018621
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053018622 if (halStatus != eHAL_STATUS_SUCCESS)
18623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18624 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18625
Jeff Johnson295189b2012-06-20 16:38:30 -070018626 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080018627 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18628 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18629 {
18630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018631 "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 -080018632 WDI_ASSERT(0);
18633 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018634 /*Notify UMAC*/
18635 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18636
Jeff Johnsone7245742012-09-05 17:12:55 -070018637 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018638}/*WDI_ProcessExitImpsRsp*/
18639
18640/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018641 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018642 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018643
18644 @param pWDICtx: pointer to the WLAN DAL context
18645 pEventData: pointer to the event information structure
18646
Jeff Johnson295189b2012-06-20 16:38:30 -070018647 @see
18648 @return Result of the function call
18649*/
18650WDI_Status
18651WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018652(
Jeff Johnson295189b2012-06-20 16:38:30 -070018653 WDI_ControlBlockType* pWDICtx,
18654 WDI_EventInfoType* pEventData
18655)
18656{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018657 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18658 tHalEnterBmpsRspParams halEnterBmpsRsp;
18659 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18660 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080018661 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18663
18664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018665 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018666 -------------------------------------------------------------------------*/
18667 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18668 ( NULL == pEventData->pEventData))
18669 {
18670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018674 }
18675
Jeff Johnson295189b2012-06-20 16:38:30 -070018676 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018677 Extract response and send it to UMAC
18678 -------------------------------------------------------------------------*/
18679 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18680 {
18681 wpalMemoryCopy( &halEnterBmpsRsp,
18682 pEventData->pEventData,
18683 sizeof(halEnterBmpsRsp));
18684
18685 //Used to print debug message
18686 halStatus = halEnterBmpsRsp.status;
18687 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18688 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18689 }
18690 else
18691 {
18692 halStatus = *((eHalStatus*)pEventData->pEventData);
18693 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18694 }
18695
18696 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018697
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018698 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18699 * Other module states are taken care by PMC.
18700 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18701 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018702 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18703 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018704
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018706 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18707 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018708 /* Call Back is not required as we are putting the DXE in FULL
18709 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080018710 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18711 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18712 {
18713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018714 "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 -080018715 WDI_ASSERT(0);
18716 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018717 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018718 }
18719
Jeff Johnson295189b2012-06-20 16:38:30 -070018720 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018721 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018722
Jeff Johnsone7245742012-09-05 17:12:55 -070018723 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018724}/*WDI_ProcessEnterBmpsRsp*/
18725
18726/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018727 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018728 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018729
18730 @param pWDICtx: pointer to the WLAN DAL context
18731 pEventData: pointer to the event information structure
18732
Jeff Johnson295189b2012-06-20 16:38:30 -070018733 @see
18734 @return Result of the function call
18735*/
18736WDI_Status
18737WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018738(
Jeff Johnson295189b2012-06-20 16:38:30 -070018739 WDI_ControlBlockType* pWDICtx,
18740 WDI_EventInfoType* pEventData
18741)
18742{
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 eHalStatus halStatus;
18744 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018745 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080018746 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18747 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018748 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18749
18750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018751 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018752 -------------------------------------------------------------------------*/
18753 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18754 ( NULL == pEventData->pEventData))
18755 {
18756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018757 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018758 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018759 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018760 }
18761
18762 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18763
18764 /*-------------------------------------------------------------------------
18765 Extract response and send it to UMAC
18766 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018767
18768 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18769 {
18770 wpalMemoryCopy( &halExitBmpsRsp,
18771 pEventData->pEventData,
18772 sizeof(halExitBmpsRsp));
18773
18774 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18775 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18776 }
18777 else
18778 {
18779 halStatus = *((eHalStatus*)pEventData->pEventData);
18780 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18781 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018782
18783 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080018784 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18785 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18786 {
18787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018788 "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 -080018789 WDI_ASSERT(0);
18790 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018791 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18792
18793 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018794 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018795
Jeff Johnsone7245742012-09-05 17:12:55 -070018796 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018797}/*WDI_ProcessExitBmpsRsp*/
18798
18799/**
18800 @brief Process Enter UAPSD Rsp function (called when a response
18801 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018802
18803 @param pWDICtx: pointer to the WLAN DAL context
18804 pEventData: pointer to the event information structure
18805
Jeff Johnson295189b2012-06-20 16:38:30 -070018806 @see
18807 @return Result of the function call
18808*/
18809WDI_Status
18810WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018811(
Jeff Johnson295189b2012-06-20 16:38:30 -070018812 WDI_ControlBlockType* pWDICtx,
18813 WDI_EventInfoType* pEventData
18814)
18815{
Jeff Johnson295189b2012-06-20 16:38:30 -070018816 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018817 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018818 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018819 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18820
Jeff Johnson295189b2012-06-20 16:38:30 -070018821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18822
18823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018824 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018825 -------------------------------------------------------------------------*/
18826 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18827 ( NULL == pEventData->pEventData))
18828 {
18829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018830 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018833 }
18834
18835 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18836
18837 /*-------------------------------------------------------------------------
18838 Extract response and send it to UMAC
18839 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018840 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18841 {
18842 wpalMemoryCopy( &halEnterUapsdRsp,
18843 pEventData->pEventData,
18844 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018845
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018846 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18847 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18848 }
18849 else
18850 {
18851 halStatus = *((eHalStatus*)pEventData->pEventData);
18852 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18853 }
18854
18855 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018856 {
18857 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18858 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18859 // the traffic to decide when to suspend the trigger frames when there is no traffic
18860 // activity on the trigger enabled ACs
18861 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18862
18863#ifdef WLAN_PERF
18864 // Increment the BD signature to refresh the fast path BD utilization
18865 pWDICtx->uBdSigSerialNum++;
18866#endif
18867 }
18868
18869 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018870 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018871
Jeff Johnsone7245742012-09-05 17:12:55 -070018872 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018873}/*WDI_ProcessEnterUapsdRsp*/
18874
18875/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018876 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018877 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018878
18879 @param pWDICtx: pointer to the WLAN DAL context
18880 pEventData: pointer to the event information structure
18881
Jeff Johnson295189b2012-06-20 16:38:30 -070018882 @see
18883 @return Result of the function call
18884*/
18885WDI_Status
18886WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018887(
Jeff Johnson295189b2012-06-20 16:38:30 -070018888 WDI_ControlBlockType* pWDICtx,
18889 WDI_EventInfoType* pEventData
18890)
18891{
Jeff Johnson295189b2012-06-20 16:38:30 -070018892 eHalStatus halStatus;
18893 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018894 tHalExitUapsdRspParams halExitUapsdRsp;
18895 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18897
18898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018899 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018900 -------------------------------------------------------------------------*/
18901 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18902 ( NULL == pEventData->pEventData))
18903 {
18904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018905 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018908 }
18909
18910 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18911
18912 /*-------------------------------------------------------------------------
18913 Extract response and send it to UMAC
18914 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018915 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18916 {
18917 wpalMemoryCopy( &halExitUapsdRsp,
18918 pEventData->pEventData,
18919 sizeof(halExitUapsdRsp));
18920
18921 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18922 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18923 }
18924 else
18925 {
18926 halStatus = *((eHalStatus*)pEventData->pEventData);
18927 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18928 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018929 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18930 // directly instead of the FW WQ.
18931 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18932
18933#ifdef WLAN_PERF
18934 // Increment the BD signature to refresh the fast path BD utilization
18935 pWDICtx->uBdSigSerialNum++;
18936#endif
18937
18938 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018939 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018940
Jeff Johnsone7245742012-09-05 17:12:55 -070018941 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018942}/*WDI_ProcessExitUapsdRsp*/
18943
18944/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018945 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018946 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018947
18948 @param pWDICtx: pointer to the WLAN DAL context
18949 pEventData: pointer to the event information structure
18950
Jeff Johnson295189b2012-06-20 16:38:30 -070018951 @see
18952 @return Result of the function call
18953*/
18954WDI_Status
18955WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018956(
Jeff Johnson295189b2012-06-20 16:38:30 -070018957 WDI_ControlBlockType* pWDICtx,
18958 WDI_EventInfoType* pEventData
18959)
18960{
18961 WDI_Status wdiStatus;
18962 eHalStatus halStatus;
18963 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18965
18966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018967 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018968 -------------------------------------------------------------------------*/
18969 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18970 ( NULL == pEventData->pEventData))
18971 {
18972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018976 }
18977
18978 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18979
18980 /*-------------------------------------------------------------------------
18981 Extract response and send it to UMAC
18982 -------------------------------------------------------------------------*/
18983 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018984 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018985
18986 /*Notify UMAC*/
18987 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18988
Jeff Johnsone7245742012-09-05 17:12:55 -070018989 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018990}/*WDI_ProcessSetUapsdAcParamsRsp*/
18991
18992/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018993 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018994 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018995
18996 @param pWDICtx: pointer to the WLAN DAL context
18997 pEventData: pointer to the event information structure
18998
Jeff Johnson295189b2012-06-20 16:38:30 -070018999 @see
19000 @return Result of the function call
19001*/
19002WDI_Status
19003WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019004(
Jeff Johnson295189b2012-06-20 16:38:30 -070019005 WDI_ControlBlockType* pWDICtx,
19006 WDI_EventInfoType* pEventData
19007)
19008{
19009 WDI_Status wdiStatus;
19010 eHalStatus halStatus;
19011 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
19012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19013
19014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019015 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019016 -------------------------------------------------------------------------*/
19017 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19018 ( NULL == pEventData->pEventData))
19019 {
19020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019024 }
19025
19026 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19027
19028 /*-------------------------------------------------------------------------
19029 Extract response and send it to UMAC
19030 -------------------------------------------------------------------------*/
19031 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019032 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019033
19034 /*Notify UMAC*/
19035 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19036
Jeff Johnsone7245742012-09-05 17:12:55 -070019037 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019038}/*WDI_ProcessUpdateUapsdParamsRsp*/
19039
19040/**
19041 @brief Process Configure RXP filter Rsp function (called when a
19042 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019043
19044 @param pWDICtx: pointer to the WLAN DAL context
19045 pEventData: pointer to the event information structure
19046
Jeff Johnson295189b2012-06-20 16:38:30 -070019047 @see
19048 @return Result of the function call
19049*/
19050WDI_Status
19051WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019052(
Jeff Johnson295189b2012-06-20 16:38:30 -070019053 WDI_ControlBlockType* pWDICtx,
19054 WDI_EventInfoType* pEventData
19055)
19056{
19057 WDI_Status wdiStatus;
19058 eHalStatus halStatus;
19059 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19061
19062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019063 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019064 -------------------------------------------------------------------------*/
19065 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19066 ( NULL == pEventData->pEventData))
19067 {
19068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019072 }
19073
19074 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19075
19076 /*-------------------------------------------------------------------------
19077 Extract response and send it to UMAC
19078 -------------------------------------------------------------------------*/
19079 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019080 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019081
19082 /*Notify UMAC*/
19083 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19084
Jeff Johnsone7245742012-09-05 17:12:55 -070019085 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019086}/*WDI_ProcessConfigureRxpFilterRsp*/
19087
19088/**
19089 @brief Process Set beacon filter Rsp function (called when a
19090 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019091
19092 @param pWDICtx: pointer to the WLAN DAL context
19093 pEventData: pointer to the event information structure
19094
Jeff Johnson295189b2012-06-20 16:38:30 -070019095 @see
19096 @return Result of the function call
19097*/
19098WDI_Status
19099WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019100(
Jeff Johnson295189b2012-06-20 16:38:30 -070019101 WDI_ControlBlockType* pWDICtx,
19102 WDI_EventInfoType* pEventData
19103)
19104{
19105 WDI_Status wdiStatus;
19106 eHalStatus halStatus;
19107 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19109
19110 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019111 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019112 -------------------------------------------------------------------------*/
19113 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19114 ( NULL == pEventData->pEventData))
19115 {
19116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019117 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019120 }
19121
19122 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19123
19124 /*-------------------------------------------------------------------------
19125 Extract response and send it to UMAC
19126 -------------------------------------------------------------------------*/
19127 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019128 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019129
19130 /*Notify UMAC*/
19131 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19132
Jeff Johnsone7245742012-09-05 17:12:55 -070019133 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019134}/*WDI_ProcessSetBeaconFilterRsp*/
19135
19136/**
19137 @brief Process remove beacon filter Rsp function (called when a
19138 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019139
19140 @param pWDICtx: pointer to the WLAN DAL context
19141 pEventData: pointer to the event information structure
19142
Jeff Johnson295189b2012-06-20 16:38:30 -070019143 @see
19144 @return Result of the function call
19145*/
19146WDI_Status
19147WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019148(
Jeff Johnson295189b2012-06-20 16:38:30 -070019149 WDI_ControlBlockType* pWDICtx,
19150 WDI_EventInfoType* pEventData
19151)
19152{
19153 WDI_Status wdiStatus;
19154 eHalStatus halStatus;
19155 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19157
19158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019160 -------------------------------------------------------------------------*/
19161 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19162 ( NULL == pEventData->pEventData))
19163 {
19164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019165 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019166 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019168 }
19169
19170 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19171
19172 /*-------------------------------------------------------------------------
19173 Extract response and send it to UMAC
19174 -------------------------------------------------------------------------*/
19175 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019176 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019177
19178 /*Notify UMAC*/
19179 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19180
Jeff Johnsone7245742012-09-05 17:12:55 -070019181 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019182}/*WDI_ProcessRemBeaconFilterRsp*/
19183
19184/**
19185 @brief Process set RSSI thresholds Rsp function (called when a
19186 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019187
19188 @param pWDICtx: pointer to the WLAN DAL context
19189 pEventData: pointer to the event information structure
19190
Jeff Johnson295189b2012-06-20 16:38:30 -070019191 @see
19192 @return Result of the function call
19193*/
19194WDI_Status
19195WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019196(
Jeff Johnson295189b2012-06-20 16:38:30 -070019197 WDI_ControlBlockType* pWDICtx,
19198 WDI_EventInfoType* pEventData
19199)
19200{
19201 WDI_Status wdiStatus;
19202 eHalStatus halStatus;
19203 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19205
19206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019207 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019208 -------------------------------------------------------------------------*/
19209 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19210 ( NULL == pEventData->pEventData))
19211 {
19212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019213 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019214 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019216 }
19217
19218 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19219
19220 /*-------------------------------------------------------------------------
19221 Extract response and send it to UMAC
19222 -------------------------------------------------------------------------*/
19223 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019224 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019225
19226 /*Notify UMAC*/
19227 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19228
Jeff Johnsone7245742012-09-05 17:12:55 -070019229 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019230}/*WDI_ProcessSetRSSIThresoldsRsp*/
19231
19232/**
19233 @brief Process host offload Rsp function (called when a
19234 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019235
19236 @param pWDICtx: pointer to the WLAN DAL context
19237 pEventData: pointer to the event information structure
19238
Jeff Johnson295189b2012-06-20 16:38:30 -070019239 @see
19240 @return Result of the function call
19241*/
19242WDI_Status
19243WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019244(
Jeff Johnson295189b2012-06-20 16:38:30 -070019245 WDI_ControlBlockType* pWDICtx,
19246 WDI_EventInfoType* pEventData
19247)
19248{
19249 WDI_Status wdiStatus;
19250 eHalStatus halStatus;
19251 WDI_HostOffloadCb wdiHostOffloadCb;
19252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19253
19254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019256 -------------------------------------------------------------------------*/
19257 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19258 ( NULL == pEventData->pEventData))
19259 {
19260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019261 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019264 }
19265
19266 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19267
19268 /*-------------------------------------------------------------------------
19269 Extract response and send it to UMAC
19270 -------------------------------------------------------------------------*/
19271 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019272 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019273
19274 /*Notify UMAC*/
19275 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19276
Jeff Johnsone7245742012-09-05 17:12:55 -070019277 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019278}/*WDI_ProcessHostOffloadRsp*/
19279
19280/**
19281 @brief Process keep alive Rsp function (called when a
19282 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019283
19284 @param pWDICtx: pointer to the WLAN DAL context
19285 pEventData: pointer to the event information structure
19286
Jeff Johnson295189b2012-06-20 16:38:30 -070019287 @see
19288 @return Result of the function call
19289*/
19290WDI_Status
19291WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019292(
Jeff Johnson295189b2012-06-20 16:38:30 -070019293 WDI_ControlBlockType* pWDICtx,
19294 WDI_EventInfoType* pEventData
19295)
19296{
19297 WDI_Status wdiStatus;
19298 eHalStatus halStatus;
19299 WDI_KeepAliveCb wdiKeepAliveCb;
19300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19302 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19303
19304
19305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019307 -------------------------------------------------------------------------*/
19308 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19309 ( NULL == pEventData->pEventData))
19310 {
19311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019315 }
19316
Jeff Johnsone7245742012-09-05 17:12:55 -070019317 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19318
Jeff Johnson295189b2012-06-20 16:38:30 -070019319 /*-------------------------------------------------------------------------
19320 Extract response and send it to UMAC
19321 -------------------------------------------------------------------------*/
19322 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019323 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019324
19325 /*Notify UMAC*/
19326 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19327
Jeff Johnsone7245742012-09-05 17:12:55 -070019328 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019329}/*WDI_ProcessKeepAliveRsp*/
19330
19331/**
19332 @brief Process wowl add ptrn Rsp function (called when a
19333 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019334
19335 @param pWDICtx: pointer to the WLAN DAL context
19336 pEventData: pointer to the event information structure
19337
Jeff Johnson295189b2012-06-20 16:38:30 -070019338 @see
19339 @return Result of the function call
19340*/
19341WDI_Status
19342WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019343(
Jeff Johnson295189b2012-06-20 16:38:30 -070019344 WDI_ControlBlockType* pWDICtx,
19345 WDI_EventInfoType* pEventData
19346)
19347{
Jeff Johnson295189b2012-06-20 16:38:30 -070019348 eHalStatus halStatus;
19349 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019350 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19351 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19352
Jeff Johnson295189b2012-06-20 16:38:30 -070019353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19354
19355 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019356 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019357 -------------------------------------------------------------------------*/
19358 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19359 ( NULL == pEventData->pEventData))
19360 {
19361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019362 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019365 }
19366
19367 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19368
19369 /*-------------------------------------------------------------------------
19370 Extract response and send it to UMAC
19371 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019372 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19373 {
19374 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19375 pEventData->pEventData,
19376 sizeof(halAddWowlBcastPtrRsp));
19377
19378 wdiWowlAddBcPtrRsp.wdiStatus =
19379 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19380 }
19381 else
19382 {
19383 halStatus = *((eHalStatus*)pEventData->pEventData);
19384 wdiWowlAddBcPtrRsp.wdiStatus =
19385 WDI_HAL_2_WDI_STATUS(halStatus);
19386 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019387
19388 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019389 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019390
Jeff Johnsone7245742012-09-05 17:12:55 -070019391 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019392}/*WDI_ProcessWowlAddBcPtrnRsp*/
19393
19394/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019395 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019396 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019397
19398 @param pWDICtx: pointer to the WLAN DAL context
19399 pEventData: pointer to the event information structure
19400
Jeff Johnson295189b2012-06-20 16:38:30 -070019401 @see
19402 @return Result of the function call
19403*/
19404WDI_Status
19405WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019406(
Jeff Johnson295189b2012-06-20 16:38:30 -070019407 WDI_ControlBlockType* pWDICtx,
19408 WDI_EventInfoType* pEventData
19409)
19410{
Jeff Johnson295189b2012-06-20 16:38:30 -070019411 eHalStatus halStatus;
19412 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019413 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19414 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19416
19417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019418 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019419 -------------------------------------------------------------------------*/
19420 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19421 ( NULL == pEventData->pEventData))
19422 {
19423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019424 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019425 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019427 }
19428
19429 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19430
19431 /*-------------------------------------------------------------------------
19432 Extract response and send it to UMAC
19433 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019434 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19435 {
19436 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19437 pEventData->pEventData,
19438 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019439
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019440 wdiWowlDelBcstPtrRsp.wdiStatus =
19441 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19442 }
19443 else
19444 {
19445 halStatus = *((eHalStatus*)pEventData->pEventData);
19446 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19447 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019448 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019449 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019450
Jeff Johnsone7245742012-09-05 17:12:55 -070019451 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019452}/*WDI_ProcessWowlDelBcPtrnRsp*/
19453
19454/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019455 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019456 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019457
19458 @param pWDICtx: pointer to the WLAN DAL context
19459 pEventData: pointer to the event information structure
19460
Jeff Johnson295189b2012-06-20 16:38:30 -070019461 @see
19462 @return Result of the function call
19463*/
19464WDI_Status
19465WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019466(
Jeff Johnson295189b2012-06-20 16:38:30 -070019467 WDI_ControlBlockType* pWDICtx,
19468 WDI_EventInfoType* pEventData
19469)
19470{
Jeff Johnson295189b2012-06-20 16:38:30 -070019471 eHalStatus halStatus;
19472 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019473 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19474 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19476
19477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019478 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019479 -------------------------------------------------------------------------*/
19480 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19481 ( NULL == pEventData->pEventData))
19482 {
19483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019484 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019487 }
19488
19489 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19490
19491 /*-------------------------------------------------------------------------
19492 Extract response and send it to UMAC
19493 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019494 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19495 {
19496 wpalMemoryCopy( &halEnterWowlRspParams,
19497 (wpt_uint8*)pEventData->pEventData,
19498 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019499
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019500 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19501 wdiwowlEnterRsp.status =
19502 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19503 }
19504 else
19505 {
19506 halStatus = *((eHalStatus*)pEventData->pEventData);
19507 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19508 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019509 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019510 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019511
Jeff Johnsone7245742012-09-05 17:12:55 -070019512 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019513}/*WDI_ProcessWowlEnterRsp*/
19514
19515/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019516 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019517 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019518
19519 @param pWDICtx: pointer to the WLAN DAL context
19520 pEventData: pointer to the event information structure
19521
Jeff Johnson295189b2012-06-20 16:38:30 -070019522 @see
19523 @return Result of the function call
19524*/
19525WDI_Status
19526WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019527(
Jeff Johnson295189b2012-06-20 16:38:30 -070019528 WDI_ControlBlockType* pWDICtx,
19529 WDI_EventInfoType* pEventData
19530)
19531{
Jeff Johnson295189b2012-06-20 16:38:30 -070019532 eHalStatus halStatus;
19533 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019534 tHalExitWowlRspParams halExitWowlRspParams;
19535 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19536
Jeff Johnson295189b2012-06-20 16:38:30 -070019537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19538
19539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019541 -------------------------------------------------------------------------*/
19542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19543 ( NULL == pEventData->pEventData))
19544 {
19545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019549 }
19550
19551 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19552
19553 /*-------------------------------------------------------------------------
19554 Extract response and send it to UMAC
19555 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019556 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19557 {
19558 wpalMemoryCopy( &halExitWowlRspParams,
19559 pEventData->pEventData,
19560 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019561
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019562 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19563 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19564
19565 }
19566 else
19567 {
19568 halStatus = *((eHalStatus*)pEventData->pEventData);
19569 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19570 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019571 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019572 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019573
Jeff Johnsone7245742012-09-05 17:12:55 -070019574 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019575}/*WDI_ProcessWowlExitRsp*/
19576
19577/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019578 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019579 (called when a response is being received over the bus
19580 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019581
19582 @param pWDICtx: pointer to the WLAN DAL context
19583 pEventData: pointer to the event information structure
19584
Jeff Johnson295189b2012-06-20 16:38:30 -070019585 @see
19586 @return Result of the function call
19587*/
19588WDI_Status
19589WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019590(
Jeff Johnson295189b2012-06-20 16:38:30 -070019591 WDI_ControlBlockType* pWDICtx,
19592 WDI_EventInfoType* pEventData
19593)
19594{
19595 WDI_Status wdiStatus;
19596 eHalStatus halStatus;
19597 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19599
19600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019602 -------------------------------------------------------------------------*/
19603 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19604 ( NULL == pEventData->pEventData))
19605 {
19606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019607 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019610 }
19611
19612 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19613
19614 /*-------------------------------------------------------------------------
19615 Extract response and send it to UMAC
19616 -------------------------------------------------------------------------*/
19617 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019618 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019619
19620 /*Notify UMAC*/
19621 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19622
Jeff Johnsone7245742012-09-05 17:12:55 -070019623 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019624}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19625
19626
19627/**
19628 @brief Process Nv download(called when a response
19629 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019630
19631 @param pWDICtx: pointer to the WLAN DAL context
19632 pEventData: pointer to the event information structure
19633
Jeff Johnson295189b2012-06-20 16:38:30 -070019634 @see
19635 @return Result of the function call
19636*/
19637WDI_Status
19638WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019639(
Jeff Johnson295189b2012-06-20 16:38:30 -070019640 WDI_ControlBlockType* pWDICtx,
19641 WDI_EventInfoType* pEventData
19642)
19643{
19644
19645 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19646 tHalNvImgDownloadRspParams halNvDownloadRsp;
19647 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19648
19649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 -------------------------------------------------------------------------*/
19652 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19653 ( NULL == pEventData->pEventData))
19654 {
19655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019659 }
19660
19661 /*-------------------------------------------------------------------------
19662 Extract response and send it to UMAC
19663 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019664 wpalMemoryCopy( &halNvDownloadRsp,
19665 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019666 sizeof(halNvDownloadRsp));
19667
19668 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19669
19670 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019671 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19672 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019673 {
19674 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019675 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019676 }
19677 else
19678 {
19679 /*Reset the Nv related global information in WDI context information */
19680 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19681 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19682 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19683 /*call WDA callback function for last fragment */
19684 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19685 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19686 }
19687
Jeff Johnsone7245742012-09-05 17:12:55 -070019688 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019689}
19690#ifdef WLAN_FEATURE_VOWIFI_11R
19691/**
19692 @brief Process Add TSpec Rsp function (called when a response
19693 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019694
19695 @param pWDICtx: pointer to the WLAN DAL context
19696 pEventData: pointer to the event information structure
19697
Jeff Johnson295189b2012-06-20 16:38:30 -070019698 @see
19699 @return Result of the function call
19700*/
19701WDI_Status
19702WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019703(
Jeff Johnson295189b2012-06-20 16:38:30 -070019704 WDI_ControlBlockType* pWDICtx,
19705 WDI_EventInfoType* pEventData
19706)
19707{
19708 WDI_Status wdiStatus;
19709 tAggrAddTsRspParams aggrAddTsRsp;
19710 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19711 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19712
19713 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019714 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019715 -------------------------------------------------------------------------*/
19716 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19717 ( NULL == pEventData->pEventData))
19718 {
19719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019720 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019723 }
19724
19725 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19726
19727 /*-------------------------------------------------------------------------
19728 Extract response and send it to UMAC
19729 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019730 wpalMemoryCopy( &aggrAddTsRsp,
19731 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019732 sizeof(aggrAddTsRsp));
19733
19734 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019735 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019736
19737 /*Notify UMAC*/
19738 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19739
Jeff Johnsone7245742012-09-05 17:12:55 -070019740 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019741}/*WDI_ProcessAddTSpecRsp*/
19742#endif /* WLAN_FEATURE_VOWIFI_11R */
19743
19744/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019745 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019746 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019747
19748 @param pWDICtx: pointer to the WLAN DAL context
19749 pEventData: pointer to the event information structure
19750
Jeff Johnson295189b2012-06-20 16:38:30 -070019751 @see
19752 @return Result of the function call
19753*/
19754WDI_Status
19755WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019756(
Jeff Johnson295189b2012-06-20 16:38:30 -070019757 WDI_ControlBlockType* pWDICtx,
19758 WDI_EventInfoType* pEventData
19759)
19760{
19761 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19762 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19763 tHalHostResumeRspParams hostResumeRspMsg;
19764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19765
19766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019767 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019768 -------------------------------------------------------------------------*/
19769 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19770 ( NULL == pEventData->pEventData))
19771 {
19772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019773 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019774 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019775 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019776 }
19777
19778 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19779
19780 /*-------------------------------------------------------------------------
19781 Extract response and send it to UMAC
19782 -------------------------------------------------------------------------*/
19783
Jeff Johnsone7245742012-09-05 17:12:55 -070019784 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019785 (wpt_uint8*)pEventData->pEventData,
19786 sizeof(hostResumeRspMsg));
19787
Jeff Johnsone7245742012-09-05 17:12:55 -070019788 wdiResumeRspParams.wdiStatus =
19789 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019790
19791 /*Notify UMAC*/
19792 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19793
19794 return WDI_STATUS_SUCCESS;
19795}
19796
19797/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019798 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019799 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019800
19801 @param pWDICtx: pointer to the WLAN DAL context
19802 pEventData: pointer to the event information structure
19803
Jeff Johnson295189b2012-06-20 16:38:30 -070019804 @see
19805 @return Result of the function call
19806*/
19807WDI_Status
19808WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019809(
Jeff Johnson295189b2012-06-20 16:38:30 -070019810 WDI_ControlBlockType* pWDICtx,
19811 WDI_EventInfoType* pEventData
19812)
19813{
19814 WDI_Status wdiStatus;
19815 eHalStatus halStatus;
19816 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19818
19819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019820 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019821 -------------------------------------------------------------------------*/
19822 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19823 ( NULL == pEventData->pEventData))
19824 {
19825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019826 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019829 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019830
19831 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019832
19833 /*-------------------------------------------------------------------------
19834 Extract response and send it to UMAC
19835 -------------------------------------------------------------------------*/
19836 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019837 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019838
19839 /*Notify UMAC*/
19840 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19841
Jeff Johnsone7245742012-09-05 17:12:55 -070019842 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019843}/*WDI_ProcessSetTxPerTrackingRsp*/
19844
19845/*==========================================================================
19846 Indications from HAL
19847 ==========================================================================*/
19848/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019849 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019850 indication of this kind is being received over the bus
19851 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019852
19853 @param pWDICtx: pointer to the WLAN DAL context
19854 pEventData: pointer to the event information structure
19855
Jeff Johnson295189b2012-06-20 16:38:30 -070019856 @see
19857 @return Result of the function call
19858*/
19859WDI_Status
19860WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019861(
Jeff Johnson295189b2012-06-20 16:38:30 -070019862 WDI_ControlBlockType* pWDICtx,
19863 WDI_EventInfoType* pEventData
19864)
19865{
19866 WDI_LowLevelIndType wdiInd;
19867 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19869
19870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019872 -------------------------------------------------------------------------*/
19873 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19874 ( NULL == pEventData->pEventData))
19875 {
19876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019880 }
19881
19882 /*-------------------------------------------------------------------------
19883 Extract indication and send it to UMAC
19884 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019885 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19886 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019887 sizeof(tHalRSSINotification));
19888
19889 /*Fill in the indication parameters*/
19890 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19891 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19892 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19893 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19894 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19895 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19896 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19897 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19898 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19899 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19900 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19901 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19902 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080019903 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19904 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019905
ltimariub77f24b2013-01-24 18:54:33 -080019906 if ( pWDICtx->wdiLowLevelIndCB )
19907 {
19908 /*Notify UMAC of indication*/
19909 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19910 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019911
19912 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019913}/*WDI_ProcessLowRSSIInd*/
19914
19915
19916/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019917 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019918 an indication of this kind is being received over the
19919 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019920
19921 @param pWDICtx: pointer to the WLAN DAL context
19922 pEventData: pointer to the event information structure
19923
Jeff Johnson295189b2012-06-20 16:38:30 -070019924 @see
19925 @return Result of the function call
19926*/
19927WDI_Status
19928WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019929(
Jeff Johnson295189b2012-06-20 16:38:30 -070019930 WDI_ControlBlockType* pWDICtx,
19931 WDI_EventInfoType* pEventData
19932)
19933{
19934 WDI_Status wdiStatus;
19935 eHalStatus halStatus;
19936 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019937 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019938 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19939
19940 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019941 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019942 -------------------------------------------------------------------------*/
19943 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19944 ( NULL == pEventData->pEventData))
19945 {
19946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019947 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019950 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019951 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019952 /*-------------------------------------------------------------------------
19953 Extract indication and send it to UMAC
19954 -------------------------------------------------------------------------*/
19955 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19956 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019957 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019958
19959 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019960 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019961 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19962 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080019963 if ( pWDICtx->wdiLowLevelIndCB )
19964 {
19965 /*Notify UMAC*/
19966 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19967 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019968
19969 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019970}/*WDI_ProcessMissedBeaconInd*/
19971
19972
19973/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019974 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019975 an indication of this kind is being received over the
19976 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019977
19978 @param pWDICtx: pointer to the WLAN DAL context
19979 pEventData: pointer to the event information structure
19980
Jeff Johnson295189b2012-06-20 16:38:30 -070019981 @see
19982 @return Result of the function call
19983*/
19984WDI_Status
19985WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019986(
Jeff Johnson295189b2012-06-20 16:38:30 -070019987 WDI_ControlBlockType* pWDICtx,
19988 WDI_EventInfoType* pEventData
19989)
19990{
19991 WDI_Status wdiStatus;
19992 eHalStatus halStatus;
19993 WDI_LowLevelIndType wdiInd;
19994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19995
19996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019998 -------------------------------------------------------------------------*/
19999 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20000 ( NULL == pEventData->pEventData))
20001 {
20002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020006 }
20007
20008 /*-------------------------------------------------------------------------
20009 Extract indication and send it to UMAC
20010 -------------------------------------------------------------------------*/
20011 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20012 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020013 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020014
20015 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020016 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020017 /* ! TO DO - fill in from HAL struct:
20018 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
20019
ltimariub77f24b2013-01-24 18:54:33 -080020020 if ( pWDICtx->wdiLowLevelIndCB )
20021 {
20022 /*Notify UMAC*/
20023 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20024 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020025
20026 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020027}/*WDI_ProcessUnkAddrFrameInd*/
20028
20029
20030/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020031 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020032 indication of this kind is being received over the bus
20033 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020034
20035 @param pWDICtx: pointer to the WLAN DAL context
20036 pEventData: pointer to the event information structure
20037
Jeff Johnson295189b2012-06-20 16:38:30 -070020038 @see
20039 @return Result of the function call
20040*/
20041WDI_Status
20042WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020043(
Jeff Johnson295189b2012-06-20 16:38:30 -070020044 WDI_ControlBlockType* pWDICtx,
20045 WDI_EventInfoType* pEventData
20046)
20047{
20048 WDI_LowLevelIndType wdiInd;
20049 tpSirMicFailureInd pHalMicFailureInd;
20050
20051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20052
20053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020055 -------------------------------------------------------------------------*/
20056 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20057 ( NULL == pEventData->pEventData))
20058 {
20059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020063 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020064
Jeff Johnson295189b2012-06-20 16:38:30 -070020065 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20066 /*-------------------------------------------------------------------------
20067 Extract indication and send it to UMAC
20068 -------------------------------------------------------------------------*/
20069
20070 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020071 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020072 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20073 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20074 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20075 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20076 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20077 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20078 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20079 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020080 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020081 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020082 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020083 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020084 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020085 pHalMicFailureInd->info.keyId;
20086 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20087 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20088 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20089 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020090
20091 if ( pWDICtx->wdiLowLevelIndCB )
20092 {
20093 /*Notify UMAC*/
20094 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20095 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020096
20097 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020098}/*WDI_ProcessMicFailureInd*/
20099
20100
20101/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020102 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020103 an indication of this kind is being received over the
20104 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020105
20106 @param pWDICtx: pointer to the WLAN DAL context
20107 pEventData: pointer to the event information structure
20108
Jeff Johnson295189b2012-06-20 16:38:30 -070020109 @see
20110 @return Result of the function call
20111*/
20112WDI_Status
20113WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020114(
Jeff Johnson295189b2012-06-20 16:38:30 -070020115 WDI_ControlBlockType* pWDICtx,
20116 WDI_EventInfoType* pEventData
20117)
20118{
20119 WDI_Status wdiStatus;
20120 eHalStatus halStatus;
20121 WDI_LowLevelIndType wdiInd;
20122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20123
20124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020125 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020126 -------------------------------------------------------------------------*/
20127 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20128 ( NULL == pEventData->pEventData))
20129 {
20130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020131 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020132 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020133 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020134 }
20135
20136 /*-------------------------------------------------------------------------
20137 Extract indication and send it to UMAC
20138 -------------------------------------------------------------------------*/
20139
20140 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20141 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020142 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020143
20144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20145 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020146
Jeff Johnson295189b2012-06-20 16:38:30 -070020147 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020148 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20149 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020150
ltimariub77f24b2013-01-24 18:54:33 -080020151 if ( pWDICtx->wdiLowLevelIndCB )
20152 {
20153 /*Notify UMAC*/
20154 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20155 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020156
20157 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020158}/*WDI_ProcessFatalErrorInd*/
20159
20160/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020161 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020162 an indication of this kind is being received over the
20163 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020164
20165 @param pWDICtx: pointer to the WLAN DAL context
20166 pEventData: pointer to the event information structure
20167
Jeff Johnson295189b2012-06-20 16:38:30 -070020168 @see
20169 @return Result of the function call
20170*/
20171WDI_Status
20172WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020173(
Jeff Johnson295189b2012-06-20 16:38:30 -070020174 WDI_ControlBlockType* pWDICtx,
20175 WDI_EventInfoType* pEventData
20176)
20177{
20178 tDeleteStaContextParams halDelSTACtx;
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 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020199 wpalMemoryCopy( &halDelSTACtx,
20200 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020201 sizeof(halDelSTACtx));
20202
20203 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020204 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020205
20206 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20207 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20208 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20209 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20210
Jeff Johnsone7245742012-09-05 17:12:55 -070020211 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020212 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020213 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020214 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020215 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20216 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020217
ltimariub77f24b2013-01-24 18:54:33 -080020218 if ( pWDICtx->wdiLowLevelIndCB )
20219 {
20220 /*Notify UMAC*/
20221 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20222 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020223
20224 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020225}/*WDI_ProcessDelSTAInd*/
20226
20227/**
20228*@brief Process Coex Indication function (called when
20229 an indication of this kind is being received over the
20230 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020231
20232 @param pWDICtx: pointer to the WLAN DAL context
20233 pEventData: pointer to the event information structure
20234
Jeff Johnson295189b2012-06-20 16:38:30 -070020235 @see
20236 @return Result of the function call
20237*/
20238WDI_Status
20239WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020240(
Jeff Johnson295189b2012-06-20 16:38:30 -070020241 WDI_ControlBlockType* pWDICtx,
20242 WDI_EventInfoType* pEventData
20243)
20244{
20245 WDI_LowLevelIndType wdiInd;
20246 tCoexIndMsg halCoexIndMsg;
20247 wpt_uint32 index;
20248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20249
20250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020252 -------------------------------------------------------------------------*/
20253 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20254 ( NULL == pEventData->pEventData ))
20255 {
20256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020258 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020260 }
20261
20262 /*-------------------------------------------------------------------------
20263 Extract indication and send it to UMAC
20264 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020265 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20266 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020267 sizeof(halCoexIndMsg.coexIndParams) );
20268
20269 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020270 wdiInd.wdiIndicationType = WDI_COEX_IND;
20271 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020272 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20273 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020274 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020275 }
20276
20277 // DEBUG
20278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20279 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020280 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20281 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20282 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20283 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20284 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020285
ltimariub77f24b2013-01-24 18:54:33 -080020286 if ( pWDICtx->wdiLowLevelIndCB )
20287 {
20288 /*Notify UMAC*/
20289 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20290 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020291
20292 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020293}/*WDI_ProcessCoexInd*/
20294
20295/**
20296*@brief Process Tx Complete Indication function (called when
20297 an indication of this kind is being received over the
20298 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020299
20300 @param pWDICtx: pointer to the WLAN DAL context
20301 pEventData: pointer to the event information structure
20302
Jeff Johnson295189b2012-06-20 16:38:30 -070020303 @see
20304 @return Result of the function call
20305*/
20306WDI_Status
20307WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020308(
Jeff Johnson295189b2012-06-20 16:38:30 -070020309 WDI_ControlBlockType* pWDICtx,
20310 WDI_EventInfoType* pEventData
20311)
20312{
20313 WDI_LowLevelIndType wdiInd;
20314 tTxComplIndMsg halTxComplIndMsg;
20315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20316
20317 /*-------------------------------------------------------------------------
20318 Sanity check
20319 -------------------------------------------------------------------------*/
20320 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20321 ( NULL == pEventData->pEventData ))
20322 {
20323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020324 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020325 WDI_ASSERT( 0 );
20326 return WDI_STATUS_E_FAILURE;
20327 }
20328
20329 /*-------------------------------------------------------------------------
20330 Extract indication and send it to UMAC
20331 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020332 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20333 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020334 sizeof(halTxComplIndMsg.txComplParams) );
20335
20336 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020337 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20338 wdiInd.wdiIndicationData.tx_complete_status
20339 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020340
ltimariub77f24b2013-01-24 18:54:33 -080020341 if ( pWDICtx->wdiLowLevelIndCB )
20342 {
20343 /*Notify UMAC*/
20344 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20345 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020346
20347 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020348}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020349#ifdef FEATURE_WLAN_TDLS
20350/**
20351*@brief Process TDLS Indication function (called when
20352 an indication of this kind is being received over the
20353 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020354
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020355 @param pWDICtx: pointer to the WLAN DAL context
20356 pEventData: pointer to the event information structure
20357
20358 @see
20359 @return Result of the function call
20360*/
20361WDI_Status
20362WDI_ProcessTdlsInd
20363(
20364 WDI_ControlBlockType* pWDICtx,
20365 WDI_EventInfoType* pEventData
20366)
20367{
20368 WDI_LowLevelIndType wdiInd;
20369 tTdlsIndMsg halTdlsIndMsg;
20370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20371
20372 /*-------------------------------------------------------------------------
20373 Sanity check
20374 -------------------------------------------------------------------------*/
20375 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20376 ( NULL == pEventData->pEventData ))
20377 {
20378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20379 "%s: Invalid parameters", __func__);
20380 WDI_ASSERT( 0 );
20381 return WDI_STATUS_E_FAILURE;
20382 }
20383
20384 /*-------------------------------------------------------------------------
20385 Extract indication and send it to UMAC
20386 -------------------------------------------------------------------------*/
20387 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20388 pEventData->pEventData,
20389 sizeof(halTdlsIndMsg.tdlsIndParams) );
20390
20391 /*Fill in the indication parameters*/
20392 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20393
20394 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20395 = halTdlsIndMsg.tdlsIndParams.status;
20396
20397 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20398 = halTdlsIndMsg.tdlsIndParams.staIdx;
20399
20400 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20401 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20402
20403 /*Notify UMAC*/
20404 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20405
20406 return WDI_STATUS_SUCCESS;
20407}/*WDI_ProcessTdlsInd*/
20408#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020409/**
Viral Modid86bde22012-12-10 13:09:21 -080020410*@brief Process Noa Start Indication function (called when
20411 an indication of this kind is being received over the
20412 bus from HAL)
20413
20414 @param pWDICtx: pointer to the WLAN DAL context
20415 pEventData: pointer to the event information structure
20416
20417 @see
20418 @return Result of the function call
20419*/
20420WDI_Status
20421WDI_ProcessP2pNoaStartInd
20422(
20423 WDI_ControlBlockType* pWDICtx,
20424 WDI_EventInfoType* pEventData
20425)
20426{
20427 WDI_LowLevelIndType wdiInd;
20428 tNoaStartIndMsg halNoaStartIndMsg;
20429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20430
20431 /*-------------------------------------------------------------------------
20432 Sanity check
20433 -------------------------------------------------------------------------*/
20434 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20435 ( NULL == pEventData->pEventData ))
20436 {
20437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20438 "%s: Invalid parameters", __func__);
20439 WDI_ASSERT( 0 );
20440 return WDI_STATUS_E_FAILURE;
20441 }
20442
20443 /*-------------------------------------------------------------------------
20444 Extract indication and send it to UMAC
20445 -------------------------------------------------------------------------*/
20446 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20447 pEventData->pEventData,
20448 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20449
20450 /*Fill in the indication parameters*/
20451 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20452
20453 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20454 = halNoaStartIndMsg.noaStartIndParams.status;
20455
20456 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20457 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20458
20459 /*Notify UMAC*/
20460 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20461
20462 return WDI_STATUS_SUCCESS;
20463}/*WDI_ProcessNoaAttrInd*/
20464
20465/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020466*@brief Process Noa Attr Indication function (called when
20467 an indication of this kind is being received over the
20468 bus from HAL)
20469
20470 @param pWDICtx: pointer to the WLAN DAL context
20471 pEventData: pointer to the event information structure
20472
20473 @see
20474 @return Result of the function call
20475*/
20476WDI_Status
20477WDI_ProcessP2pNoaAttrInd
20478(
20479 WDI_ControlBlockType* pWDICtx,
20480 WDI_EventInfoType* pEventData
20481)
20482{
20483 WDI_LowLevelIndType wdiInd;
20484 tNoaAttrIndMsg halNoaAttrIndMsg;
20485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20486
20487 /*-------------------------------------------------------------------------
20488 Sanity check
20489 -------------------------------------------------------------------------*/
20490 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20491 ( NULL == pEventData->pEventData ))
20492 {
20493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020494 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020495 WDI_ASSERT( 0 );
20496 return WDI_STATUS_E_FAILURE;
20497 }
20498
20499 /*-------------------------------------------------------------------------
20500 Extract indication and send it to UMAC
20501 -------------------------------------------------------------------------*/
20502 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20503 pEventData->pEventData,
20504 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20505
20506 /*Fill in the indication parameters*/
20507 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020508
Jeff Johnson295189b2012-06-20 16:38:30 -070020509 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20510 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020511
Jeff Johnson295189b2012-06-20 16:38:30 -070020512 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20513 = halNoaAttrIndMsg.noaAttrIndParams.index;
20514 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20515 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20516 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20517 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020518
Jeff Johnson295189b2012-06-20 16:38:30 -070020519 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20520 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20521 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20522 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20523 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20524 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20525 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20526 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020527
Jeff Johnson295189b2012-06-20 16:38:30 -070020528 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20529 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20530 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20531 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20532 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20533 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20534 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20535 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20536
ltimariub77f24b2013-01-24 18:54:33 -080020537 if ( pWDICtx->wdiLowLevelIndCB )
20538 {
20539 /*Notify UMAC*/
20540 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20541 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020542
20543 return WDI_STATUS_SUCCESS;
20544}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020545
20546/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020547 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020548 an indication of this kind is being received over the
20549 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020550
20551 @param pWDICtx: pointer to the WLAN DAL context
20552 pEventData: pointer to the event information structure
20553
Jeff Johnson295189b2012-06-20 16:38:30 -070020554 @see
20555 @return Result of the function call
20556*/
20557WDI_Status
20558WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020559(
Jeff Johnson295189b2012-06-20 16:38:30 -070020560 WDI_ControlBlockType* pWDICtx,
20561 WDI_EventInfoType* pEventData
20562)
20563{
20564 WDI_LowLevelIndType wdiInd;
20565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020566
Jeff Johnson295189b2012-06-20 16:38:30 -070020567 /*-------------------------------------------------------------------------
20568 Extract indication and send it to UMAC
20569 -------------------------------------------------------------------------*/
20570 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020571 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20572
ltimariub77f24b2013-01-24 18:54:33 -080020573 if ( pWDICtx->wdiLowLevelIndCB )
20574 {
20575 /*Notify UMAC*/
20576 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20577 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020578
Jeff Johnsone7245742012-09-05 17:12:55 -070020579 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020580}/*WDI_ProcessTxPerHitInd*/
20581
Jeff Johnson295189b2012-06-20 16:38:30 -070020582/**
Yue Mab9c86f42013-08-14 15:59:08 -070020583 @brief Process Periodic Tx Pattern Fw Indication function
20584
20585 @param pWDICtx: pointer to the WLAN DAL context
20586 pEventData: pointer to the event information structure
20587
20588 @see
20589 @return Result of the function call
20590*/
20591WDI_Status
20592WDI_ProcessPeriodicTxPtrnFwInd
20593(
20594 WDI_ControlBlockType* pWDICtx,
20595 WDI_EventInfoType* pEventData
20596)
20597{
20598 WDI_LowLevelIndType wdiInd;
20599
20600 /*-------------------------------------------------------------------------
20601 Sanity check
20602 -------------------------------------------------------------------------*/
20603 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20604 (NULL == pEventData->pEventData))
20605 {
20606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20607 "%s: Invalid parameters", __func__);
20608 WDI_ASSERT(0);
20609 return WDI_STATUS_E_FAILURE;
20610 }
20611
20612 /*-------------------------------------------------------------------------
20613 Extract indication and send it to UMAC
20614 -------------------------------------------------------------------------*/
20615 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20616 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20617 sizeof(tHalPeriodicTxPtrnFwInd));
20618
20619 if (pWDICtx->wdiLowLevelIndCB)
20620 {
20621 /*Notify UMAC*/
20622 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20623 }
20624
20625 return WDI_STATUS_SUCCESS;
20626}
20627
20628/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020629 @brief WDI_ProcessFTMCommandReq
20630 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020631
20632 @param pWDICtx: pointer to the WLAN DAL context
20633 pEventData: pointer to the event information structure
20634
Jeff Johnson295189b2012-06-20 16:38:30 -070020635 @see
20636 @return Result of the function call
20637*/
20638WDI_Status
20639WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020640(
Jeff Johnson295189b2012-06-20 16:38:30 -070020641 WDI_ControlBlockType* pWDICtx,
20642 WDI_EventInfoType* pEventData
20643)
20644{
20645 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20646 wpt_uint8 *ftmCommandBuffer = NULL;
20647 wpt_uint16 dataOffset;
20648 wpt_uint16 bufferSize;
20649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020651 -------------------------------------------------------------------------*/
20652 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20653 ( NULL == pEventData->pEventData))
20654
20655 {
20656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020660 }
20661
20662 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20663
20664 /* Get MSG Buffer */
20665 WDI_GetMessageBuffer(pWDICtx,
20666 WDI_FTM_CMD_REQ,
20667 ftmCommandReq->bodyLength,
20668 &ftmCommandBuffer,
20669 &dataOffset,
20670 &bufferSize);
20671
20672 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20673 ftmCommandReq->FTMCommandBody,
20674 ftmCommandReq->bodyLength);
20675
20676 /* Send MSG */
20677 return WDI_SendMsg(pWDICtx,
20678 ftmCommandBuffer,
20679 bufferSize,
20680 pEventData->pCBfnc,
20681 pEventData->pUserData,
20682 WDI_FTM_CMD_RESP);
20683}
20684
20685/**
20686 @brief WDI_ProcessFTMCommandRsp
20687 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020688
20689 @param pWDICtx: pointer to the WLAN DAL context
20690 pEventData: pointer to the event information structure
20691
Jeff Johnson295189b2012-06-20 16:38:30 -070020692 @see
20693 @return Result of the function call
20694*/
20695WDI_Status
20696WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020697(
Jeff Johnson295189b2012-06-20 16:38:30 -070020698 WDI_ControlBlockType* pWDICtx,
20699 WDI_EventInfoType* pEventData
20700)
20701{
20702 WDI_FTMCommandRspCb ftmCMDRspCb;
20703 tProcessPttRspParams *ftmCMDRspData = NULL;
20704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20705
20706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020707 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020708 -------------------------------------------------------------------------*/
20709 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20710 ( NULL == pEventData->pEventData))
20711 {
20712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020713 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020714 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020716 }
20717
20718 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20719
20720 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20721
Jeff Johnsone7245742012-09-05 17:12:55 -070020722 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20723 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020724 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20725
20726 /*Notify UMAC*/
20727 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20728
Jeff Johnsone7245742012-09-05 17:12:55 -070020729 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020730}
Jeff Johnson295189b2012-06-20 16:38:30 -070020731/**
20732 @brief WDI_ProcessHalDumpCmdReq
20733 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020734
20735 @param pWDICtx: pointer to the WLAN DAL context
20736 pEventData: pointer to the event information structure
20737
Jeff Johnson295189b2012-06-20 16:38:30 -070020738 @see
20739 @return Result of the function call
20740*/
20741WDI_Status
20742WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020743(
Jeff Johnson295189b2012-06-20 16:38:30 -070020744 WDI_ControlBlockType* pWDICtx,
20745 WDI_EventInfoType* pEventData
20746)
20747{
20748 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20749 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20750 wpt_uint16 usDataOffset = 0;
20751 wpt_uint16 usSendSize = 0;
20752 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020753 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020754
20755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020756 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020757 -------------------------------------------------------------------------*/
20758 if (( NULL == pEventData ) ||
20759 ( NULL == pEventData->pEventData) ||
20760 ( NULL == pEventData->pCBfnc ))
20761 {
20762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020763 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020766 }
20767
20768 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20769 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20770
20771 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020772 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020773 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020774 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020775 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020776 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020777 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020778 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020779 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020780 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020781 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020782
Jeff Johnson295189b2012-06-20 16:38:30 -070020783 /*-----------------------------------------------------------------------
20784 Get message buffer
20785 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020786 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020787 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20788 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020789 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020790 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20791 {
20792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080020793 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070020794 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020797 }
20798
Jeff Johnsone7245742012-09-05 17:12:55 -070020799 wpalMemoryCopy( pSendBuffer+usDataOffset,
20800 &halDumpCmdReqMsg.dumpCmdReqParams,
20801 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020802
20803 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020804 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020805
20806 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020807 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020808 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020809 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20810 wdiHALDumpCmdRspCb, pEventData->pUserData,
20811 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020812}
20813
20814/**
20815 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020816 Process hal Dump Command Response from HAL, simply route to HDD
20817
20818 @param pWDICtx: pointer to the WLAN DAL context
20819 pEventData: pointer to the event information structure
20820
Jeff Johnson295189b2012-06-20 16:38:30 -070020821 @see
20822 @return Result of the function call
20823*/
20824WDI_Status
20825WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020826(
Jeff Johnson295189b2012-06-20 16:38:30 -070020827 WDI_ControlBlockType* pWDICtx,
20828 WDI_EventInfoType* pEventData
20829)
20830{
20831 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020832 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020833 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20834
20835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020836 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020837 -------------------------------------------------------------------------*/
20838 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20839 ( NULL == pEventData->pEventData))
20840 {
20841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020842 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020843 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020844 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020845 }
20846
Jeff Johnsone7245742012-09-05 17:12:55 -070020847 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020848
20849 /*Initialize the WDI Response structure */
20850 wdiHALDumpCmdRsp.usBufferLen = 0;
20851 wdiHALDumpCmdRsp.pBuffer = NULL;
20852
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020853 wpalMemoryCopy( &halDumpCmdRspParams,
20854 pEventData->pEventData,
20855 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020856
20857 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020858 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020859
20860 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020861 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020862 {
20863 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020864 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20865 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20866
20867 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20868 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053020869 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020870 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020871
Jeff Johnson295189b2012-06-20 16:38:30 -070020872 /*Notify UMAC*/
20873 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20874
20875 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20876 {
20877 /* Free the allocated buffer */
20878 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20879 }
20880 return WDI_STATUS_SUCCESS;
20881}
20882
20883/*==========================================================================
20884 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020885
Jeff Johnson295189b2012-06-20 16:38:30 -070020886 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020887 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020888==========================================================================*/
20889/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020890 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020891 when it wishes to send up a notification like the ones
20892 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020893
Jeff Johnson295189b2012-06-20 16:38:30 -070020894 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020895
20896 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020897 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 wctsNotifyCBData: the callback data of the user
20899
Jeff Johnson295189b2012-06-20 16:38:30 -070020900 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020901
20902 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020903*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020904void
Jeff Johnson295189b2012-06-20 16:38:30 -070020905WDI_NotifyMsgCTSCB
20906(
Jeff Johnsone7245742012-09-05 17:12:55 -070020907 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020908 WCTS_NotifyEventType wctsEvent,
20909 void* wctsNotifyCBData
20910)
20911{
Jeff Johnsone7245742012-09-05 17:12:55 -070020912 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20914
20915 if (NULL == pWDICtx )
20916 {
20917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020918 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020920 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 }
20922
20923 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20924 {
20925 /* callback presumably occurred after close */
20926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020927 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020928 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020929 }
20930
20931 if ( WCTS_EVENT_OPEN == wctsEvent )
20932 {
20933 /*Flag must be set atomically as it is checked from incoming request
20934 functions*/
20935 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020936 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020937
20938 /*Nothing to do - so try to dequeue any pending request that may have
20939 occurred while we were trying to establish this*/
20940 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020941 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020942 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020943 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020944 {
20945 /*Flag must be set atomically as it is checked from incoming request
20946 functions*/
20947 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020948 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020949
20950 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020951 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020952 wpalMutexRelease(&pWDICtx->wptMutex);
20953
20954 /*Notify that the Control Channel is closed */
20955 wpalEventSet(&pWDICtx->wctsActionEvent);
20956 }
20957
20958}/*WDI_NotifyMsgCTSCB*/
20959
20960
20961/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020962 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020963 when it wishes to send up a packet received over the
20964 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020965
Jeff Johnson295189b2012-06-20 16:38:30 -070020966 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020967
20968 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020969 pMsg: the packet
20970 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020971 wctsRxMsgCBData: the callback data of the user
20972
Jeff Johnson295189b2012-06-20 16:38:30 -070020973 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020974
20975 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020976*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020977void
20978WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020979(
Jeff Johnsone7245742012-09-05 17:12:55 -070020980 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020981 void* pMsg,
20982 wpt_uint32 uLen,
20983 void* wctsRxMsgCBData
20984)
20985{
Jeff Johnsone7245742012-09-05 17:12:55 -070020986 tHalMsgHeader *pHalMsgHeader;
20987 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020988 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20990
20991 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020992 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020993 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020994 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020995 ( uLen < sizeof(tHalMsgHeader)))
20996 {
20997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020998 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020999 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021000 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021001 }
21002
21003 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21004 {
21005 /* callback presumably occurred after close */
21006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021007 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021008 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021009 }
21010
Jeff Johnsone7245742012-09-05 17:12:55 -070021011 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 context - so no serialization is necessary here
21013 ! - revisit this assumption */
21014
21015 pHalMsgHeader = (tHalMsgHeader *)pMsg;
21016
21017 if ( uLen != pHalMsgHeader->msgLen )
21018 {
21019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21020 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070021021 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
21022 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021023 }
21024
21025 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21026
21027 /*The message itself starts after the header*/
21028 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21029 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21030 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21031 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21032
21033
21034 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21035 {
21036 /*Stop the timer as the response was received */
21037 /*!UT - check for potential race conditions between stop and response */
21038 wpalTimerStop(&pWDICtx->wptResponseTimer);
21039 }
21040 /* Check if we receive a response message which is not expected */
21041 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21042 {
21043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21044 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21045 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021046 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021047 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21048 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021049
21050 if (gWDICb.bEnableSSR == false)
21051 {
21052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21053 "SSR is not enabled on WDI timeout");
21054 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21055 return;
21056 }
21057 wpalWcnssResetIntr();
21058 /* if this timer fires, it means Riva did not receive the FIQ */
21059 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21060
Jeff Johnson295189b2012-06-20 16:38:30 -070021061 return;
21062 }
21063
21064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21065 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21066
21067 /*Post response event to the state machine*/
21068 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21069
21070}/*WDI_RXMsgCTSCB*/
21071
21072
21073/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021074 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021075========================================================================*/
21076
21077/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021078 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021079 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021080
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 @param pWDICtx - pointer to the control block
21082
21083 @return Result of the function call
21084*/
21085WPT_INLINE WDI_Status
21086WDI_CleanCB
21087(
21088 WDI_ControlBlockType* pWDICtx
21089)
21090{
21091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21092
21093 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021094 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021095
Jeff Johnsone7245742012-09-05 17:12:55 -070021096 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021097 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21098 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21099
21100 WDI_ResetAssocSessions( pWDICtx );
21101
21102 return WDI_STATUS_SUCCESS;
21103}/*WDI_CleanCB*/
21104
21105
21106/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021107 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021108
Jeff Johnsone7245742012-09-05 17:12:55 -070021109
21110 @param pWDICtx: pointer to the WLAN DAL context
21111 pEventData: pointer to the event information structure
21112
Jeff Johnson295189b2012-06-20 16:38:30 -070021113 @see
21114 @return Result of the function call
21115*/
21116WPT_INLINE WDI_Status
21117WDI_ProcessRequest
21118(
21119 WDI_ControlBlockType* pWDICtx,
21120 WDI_EventInfoType* pEventData
21121)
21122{
21123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21124
Jeff Johnsone7245742012-09-05 17:12:55 -070021125 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021126 already checked these pointers*/
21127
21128 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21129 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021130 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021132 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021133 WDI_getReqMsgString(pEventData->wdiRequest),
21134 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21135 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21136 }
21137 else
21138 {
21139 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021140 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021141 pEventData->wdiRequest);
21142 return WDI_STATUS_E_NOT_IMPLEMENT;
21143 }
21144}/*WDI_ProcessRequest*/
21145
21146
21147/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021148 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021149 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021150 prefixes it with a send message header
21151
21152 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021153 wdiReqType: type of the request being sent
21154 uBufferLen: message buffer len
21155 pMsgBuffer: resulting allocated buffer
21156 pusDataOffset: offset in the buffer where the caller
21157 can start copying its message data
21158 puBufferSize: the resulting buffer size (offset+buff
21159 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021160
Jeff Johnson295189b2012-06-20 16:38:30 -070021161 @see
21162 @return Result of the function call
21163*/
21164WDI_Status
21165WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021166(
21167 WDI_ControlBlockType* pWDICtx,
21168 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021169 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021170 wpt_uint8** pMsgBuffer,
21171 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 wpt_uint16* pusBufferSize
21173)
21174{
21175 tHalMsgHeader halMsgHeader;
21176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21177
Jeff Johnsone7245742012-09-05 17:12:55 -070021178 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021179 again*/
21180
21181 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021182 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021183 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021184 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021185 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21186 if ( NULL == *pMsgBuffer )
21187 {
21188 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21189 "Unable to allocate message buffer for req %s (%d)",
21190 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021191 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021193 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021194 }
21195
21196 /*-------------------------------------------------------------------------
21197 Fill in the message header
21198 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021199 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21200 /* Fill msgVersion */
21201#ifdef WLAN_FEATURE_11AC
21202 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021203 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021204 else
21205#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021206 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021207
Jeff Johnsone7245742012-09-05 17:12:55 -070021208 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21209 *pusDataOffset = sizeof(halMsgHeader);
21210 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21211
21212 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021213}/*WDI_GetMessageBuffer*/
21214
21215
21216/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021217 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021218 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021219 the CB
21220
21221 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021222 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021223
Jeff Johnson295189b2012-06-20 16:38:30 -070021224 usSendSize size of the buffer to be sent
21225 pRspCb: response callback - save in the WDI
21226 CB
21227 pUserData: user data associated with the
21228 callback
21229 wdiExpectedResponse: the code of the response that is
21230 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021231
Jeff Johnson295189b2012-06-20 16:38:30 -070021232 @see
21233 @return Result of the function call
21234*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021235WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021236WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021237(
21238 WDI_ControlBlockType* pWDICtx,
21239 wpt_uint8* pSendBuffer,
21240 wpt_uint32 usSendSize,
21241 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021242 void* pUserData,
21243 WDI_ResponseEnumType wdiExpectedResponse
21244)
21245{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021246 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021247 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21249
21250 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021251 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 ------------------------------------------------------------------------*/
21253 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021254 pWDICtx->pfncRspCB = pRspCb;
21255 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021256
21257 /*-----------------------------------------------------------------------
21258 Call the CTS to send this message over - free message afterwards
21259 - notify transport failure
21260 Note: CTS is reponsible for freeing the message buffer.
21261 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021262 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21263 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21264 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021265 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021267 "Failed to send message over the bus - catastrophic failure");
21268
Jeff Johnsond13512a2012-07-17 11:42:19 -070021269 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021270 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021271 else
21272 {
21273 /* even when message was placed in CTS deferred Q, we will treat it
21274 success but log this info
21275 */
21276 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21277 {
21278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21279 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21280 "response %s (%d)",
21281 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21282 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021283 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021284 }
21285 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021286
Jeff Johnsond13512a2012-07-17 11:42:19 -070021287 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021288 if ( NULL != pWDICtx->wdiReqStatusCB )
21289 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021290 /*Inform originator whether request went through or not*/
21291 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21292 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021293 pWDICtx->wdiReqStatusCB = NULL;
21294 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021295 callback(wdiStatus, callbackContext);
21296
21297 /*For WDI requests which have registered a request callback,
21298 inform the WDA caller of the same via setting the return value
21299 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21300 end up repeating the functonality in the req callback for the
21301 WDI_STATUS_E_FAILURE case*/
21302 if (wdiStatus == WDI_STATUS_E_FAILURE)
21303 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 }
21305
Jeff Johnsond13512a2012-07-17 11:42:19 -070021306 if ( wdiStatus == WDI_STATUS_SUCCESS )
21307 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021308 /*Start timer for the expected response */
21309 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021310
21311 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021312 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021313 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021314 }
21315 else
21316 {
Jeff Johnson902c9832012-12-10 14:28:09 -080021317 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021318 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21319 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021320
Jeff Johnsond13512a2012-07-17 11:42:19 -070021321 return wdiStatus;
21322
Jeff Johnson295189b2012-06-20 16:38:30 -070021323}/*WDI_SendMsg*/
21324
21325
21326
21327/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021328 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021329 the bus using the control transport and saves some info
21330 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021331
21332 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021333 pSendBuffer: buffer to be sent
21334 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021335
Jeff Johnson295189b2012-06-20 16:38:30 -070021336 @see
21337 @return Result of the function call
21338*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021339WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021340WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021341(
21342 WDI_ControlBlockType* pWDICtx,
21343 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021344 wpt_uint32 usSendSize
21345)
21346{
21347 wpt_uint32 uStatus ;
21348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21349
21350 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021351 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021352 Note: CTS is reponsible for freeing the message buffer.
21353 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021354 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021355 (void*)pSendBuffer, usSendSize );
21356
21357 /*Inform Upper MAC about the outcome of the request*/
21358 if ( NULL != pWDICtx->wdiReqStatusCB )
21359 {
21360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21361 "Send indication status : %d", uStatus);
21362
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021363 /* even if CTS placed indication into its deferred Q, we treat it
21364 * as success and let CTS drain its queue as per smd interrupt to CTS
21365 */
21366 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 -070021367 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021368 }
21369
21370 /*If sending of the message failed - it is considered catastrophic and
21371 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021372 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21373 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21374
Jeff Johnson295189b2012-06-20 16:38:30 -070021375 {
21376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021377 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021378
21379 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21380 return WDI_STATUS_E_FAILURE;
21381 }
21382
Jeff Johnsone7245742012-09-05 17:12:55 -070021383 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021384}/*WDI_SendIndication*/
21385
21386
21387/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021388 @brief WDI_DetectedDeviceError - called internally by DAL when
21389 it has detected a failure in the device
21390
21391 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021392 usErrorCode: error code detected by WDI or received
21393 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021394
Jeff Johnson295189b2012-06-20 16:38:30 -070021395 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021396 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021397*/
21398void
21399WDI_DetectedDeviceError
21400(
21401 WDI_ControlBlockType* pWDICtx,
21402 wpt_uint16 usErrorCode
21403)
21404{
21405 WDI_LowLevelIndType wdiInd;
21406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21407
21408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21409 "Device Error detected code: %d - transitioning to stopped state",
21410 usErrorCode);
21411
21412 wpalMutexAcquire(&pWDICtx->wptMutex);
21413
21414 WDI_STATableStop(pWDICtx);
21415
21416 WDI_ResetAssocSessions(pWDICtx);
21417
21418 /*Set the expected state transition to stopped - because the device
21419 experienced a failure*/
21420 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21421
21422 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021423 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021424
Jeff Johnsone7245742012-09-05 17:12:55 -070021425 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021426
21427 /*TO DO: - there should be an attempt to reset the device here*/
21428
21429 wpalMutexRelease(&pWDICtx->wptMutex);
21430
21431 /*------------------------------------------------------------------------
21432 Notify UMAC if a handler is registered
21433 ------------------------------------------------------------------------*/
21434 if (pWDICtx->wdiLowLevelIndCB)
21435 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021436 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21437 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021438
21439 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21440 }
21441}/*WDI_DetectedDeviceError*/
21442
21443/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021444 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021445 we started on send message has expire - this should
21446 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021447 reply - trigger catastrophic failure
21448 @param
21449
Jeff Johnson295189b2012-06-20 16:38:30 -070021450 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021451
21452 @see
21453 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021454*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021455void
Jeff Johnson295189b2012-06-20 16:38:30 -070021456WDI_ResponseTimerCB
21457(
21458 void *pUserData
21459)
21460{
21461 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21463
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021464 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021465 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021467 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021468 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021469 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021470 }
21471
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021472 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021473 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021474 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021475
21476 /* If response timer is running at this time that means this timer
21477 * event is not for the last request but rather last-to-last request and
21478 * this timer event has come after we recevied respone for last-to-last
21479 * message
21480 */
21481 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21482 {
21483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21484 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021485 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021486 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21488 "uArchTimeStampTmrStart: %llu seconds, "
21489 "uArchTimeStampTmrExp: %llu seconds",
21490 pWDICtx->uArchTimeStampRspTmrStart,
21491 pWDICtx->uArchTimeStampRspTmrExp);
21492
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021493 return;
21494 }
21495
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021496 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021497 {
21498
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021500 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021501 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070021502 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021503 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21504 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21506 "uArchTimeStampTmrStart: %llu seconds, "
21507 "uArchTimeStampTmrExp: %llu seconds",
21508 pWDICtx->uArchTimeStampRspTmrStart,
21509 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021510
21511 /* WDI timeout means Riva is not responding or SMD communication to Riva
21512 * is not happening. The only possible way to recover from this error
21513 * is to initiate SSR from APPS.
21514 * There is also an option to re-enable wifi, which will eventually
21515 * trigger SSR
21516 */
21517 if (gWDICb.bEnableSSR == false)
21518 {
21519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21520 "SSR is not enabled on WDI timeout");
21521 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21522 return;
21523 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021524#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Katya Nigama0e98e42014-02-05 13:46:40 +053021525 if(wpalIsWDresetInProgress())
21526 {
21527 wpalDevicePanic();
21528 }
21529
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021530 wpalWcnssResetIntr();
21531 /* if this timer fires, it means Riva did not receive the FIQ */
21532 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021533#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021534 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21535 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021536#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021537 }
21538 else
21539 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021541 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021542 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021543 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21544 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
Jeff Johnson295189b2012-06-20 16:38:30 -070021551 }
21552
21553 return;
21554
21555}/*WDI_ResponseTimerCB*/
21556
21557
21558/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021559 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021560
Jeff Johnsone7245742012-09-05 17:12:55 -070021561
21562 @param pWDICtx: pointer to the WLAN DAL context
21563 pEventData: pointer to the event information structure
21564
Jeff Johnson295189b2012-06-20 16:38:30 -070021565 @see
21566 @return Result of the function call
21567*/
21568WPT_INLINE WDI_Status
21569WDI_ProcessResponse
21570(
21571 WDI_ControlBlockType* pWDICtx,
21572 WDI_EventInfoType* pEventData
21573)
21574{
21575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21576
Jeff Johnsone7245742012-09-05 17:12:55 -070021577 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021578 already checked these pointers
21579 ! - revisit this assumption */
21580 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21581 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021582 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021584 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021585 WDI_getRespMsgString(pEventData->wdiResponse),
21586 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21587 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21588 }
21589 else
21590 {
21591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021592 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021593 pEventData->wdiResponse);
21594 return WDI_STATUS_E_NOT_IMPLEMENT;
21595 }
21596}/*WDI_ProcessResponse*/
21597
21598
21599/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021600 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021601=========================================================================*/
21602
21603/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021604 @brief Utility function used by the DAL Core to help queue a
21605 request that cannot be processed right away.
21606 @param
21607
Jeff Johnson295189b2012-06-20 16:38:30 -070021608 pWDICtx: - pointer to the WDI control block
21609 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021610 queued
21611
21612 @see
21613 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021614*/
21615WDI_Status
21616WDI_QueuePendingReq
21617(
21618 WDI_ControlBlockType* pWDICtx,
21619 WDI_EventInfoType* pEventData
21620)
21621{
Jeff Johnsone7245742012-09-05 17:12:55 -070021622 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021623 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021624 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21626
21627 if ( NULL == pEventDataQueue )
21628 {
21629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021630 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021631 WDI_ASSERT(0);
21632 return WDI_STATUS_MEM_FAILURE;
21633 }
21634
21635 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21636 pEventDataQueue->pUserData = pEventData->pUserData;
21637 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21638 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021639 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021640
21641 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21642 {
21643 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021644
Jeff Johnson295189b2012-06-20 16:38:30 -070021645 if ( NULL == pEventInfo )
21646 {
21647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021648 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021649 WDI_ASSERT(0);
21650 wpalMemoryFree(pEventDataQueue);
21651 return WDI_STATUS_MEM_FAILURE;
21652 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021653
Jeff Johnson295189b2012-06-20 16:38:30 -070021654 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21655
21656 }
21657 pEventDataQueue->pEventData = pEventInfo;
21658
21659 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021660 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021661
Jeff Johnsone7245742012-09-05 17:12:55 -070021662 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021663
21664 return WDI_STATUS_SUCCESS;
21665}/*WDI_QueuePendingReq*/
21666
21667/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021668 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021669 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021670 @param
21671
21672 pMsg - pointer to the message
21673
21674 @see
21675 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021676*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021677void
Jeff Johnson295189b2012-06-20 16:38:30 -070021678WDI_PALCtrlMsgCB
21679(
21680 wpt_msg *pMsg
21681)
21682{
21683 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021684 WDI_ControlBlockType* pWDICtx = NULL;
21685 WDI_Status wdiStatus;
21686 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 void* pUserData;
21688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21689
21690 if (( NULL == pMsg )||
21691 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21692 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21693 {
21694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021695 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021696 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021697 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021698 }
21699
21700 /*Transition back to the state that we had before serialization
21701 - serialization transitions us to BUSY to stop any incomming requests
21702 ! TO DO L: possible race condition here if a request comes in between the
21703 state transition and the post function*/
21704
Jeff Johnsone7245742012-09-05 17:12:55 -070021705 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021706
21707 /*-----------------------------------------------------------------------
21708 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021709 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021710 -----------------------------------------------------------------------*/
21711 switch ( pEventData->wdiRequest )
21712 {
21713
Jeff Johnsone7245742012-09-05 17:12:55 -070021714 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021715 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21716 break;
21717
Jeff Johnson295189b2012-06-20 16:38:30 -070021718 case WDI_NV_DOWNLOAD_REQ:
21719 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21720 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21721 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21722 {
21723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021724 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021725 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21726 }
21727 else
21728 {
21729 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21730 }
21731
21732 break;
21733
21734 default:
21735 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21736 break;
21737 }/*switch ( pEventData->wdiRequest )*/
21738
21739 if ( WDI_STATUS_SUCCESS != wdiStatus )
21740 {
21741 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21742
21743 if ( NULL != pfnReqStatusCB )
21744 {
21745 /*Fail the request*/
21746 pfnReqStatusCB( wdiStatus, pUserData);
21747 }
21748 }
21749
21750 /* Free data - that was allocated when queueing*/
21751 if( pEventData != NULL )
21752 {
21753 if( pEventData->pEventData != NULL )
21754 {
21755 wpalMemoryFree(pEventData->pEventData);
21756 }
21757 wpalMemoryFree(pEventData);
21758 }
21759
21760 if( pMsg != NULL )
21761 {
21762 wpalMemoryFree(pMsg);
21763 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021764
Jeff Johnson295189b2012-06-20 16:38:30 -070021765}/*WDI_PALCtrlMsgCB*/
21766
21767/**
21768 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021769 and schedule for execution a pending request
21770 @param
21771
Jeff Johnson295189b2012-06-20 16:38:30 -070021772 pWDICtx: - pointer to the WDI control block
21773 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021774 queued
21775
21776 @see
21777 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021778*/
21779WDI_Status
21780WDI_DequeuePendingReq
21781(
21782 WDI_ControlBlockType* pWDICtx
21783)
21784{
Jeff Johnsone7245742012-09-05 17:12:55 -070021785 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021786 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021787 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21789
Jeff Johnsone7245742012-09-05 17:12:55 -070021790 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021791
21792 if ( NULL == pNode )
21793 {
21794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021795 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021796 return WDI_STATUS_SUCCESS;
21797 }
21798
21799 /*The node actually points to the 1st element inside the Event Data struct -
21800 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021801 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021802
21803 /*Serialize processing in the control thread
21804 !TO DO: - check to see if these are all the messages params that need
21805 to be filled in*/
21806 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21807
21808 if ( NULL == palMsg )
21809 {
21810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021811 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021813 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021814 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021815 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021816 palMsg->callback = WDI_PALCtrlMsgCB;
21817 palMsg->ptr = pEventData;
21818
21819 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021820 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080021821 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021822
Jeff Johnson295189b2012-06-20 16:38:30 -070021823 /*Transition back to BUSY as we need to handle a queued request*/
21824 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021825
Jeff Johnson295189b2012-06-20 16:38:30 -070021826 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21827
21828 return WDI_STATUS_PENDING;
21829}/*WDI_DequeuePendingReq*/
21830
21831
21832/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021833 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021834 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021835 away.- The assoc requests will be queued by BSSID
21836 @param
21837
Jeff Johnson295189b2012-06-20 16:38:30 -070021838 pWDICtx: - pointer to the WDI control block
21839 pEventData: pointer to the evnt info that needs to be queued
21840 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021841
21842 @see
21843 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021844*/
21845WDI_Status
21846WDI_QueueNewAssocRequest
21847(
21848 WDI_ControlBlockType* pWDICtx,
21849 WDI_EventInfoType* pEventData,
21850 wpt_macAddr macBSSID
21851)
21852{
Jeff Johnsone7245742012-09-05 17:12:55 -070021853 wpt_uint8 i;
21854 WDI_BSSSessionType* pSession = NULL;
21855 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021856 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021857 void* pEventInfo;
21858 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021860
Jeff Johnsone7245742012-09-05 17:12:55 -070021861
21862 /*------------------------------------------------------------------------
21863 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021864 ------------------------------------------------------------------------*/
21865 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21866 {
21867 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21868 {
21869 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021870 pSession = &pWDICtx->aBSSSessions[i];
21871 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021872 }
21873 }
21874
21875 if ( i >= WDI_MAX_BSS_SESSIONS )
21876 {
21877 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021879 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021880
Jeff Johnson295189b2012-06-20 16:38:30 -070021881 /*------------------------------------------------------------------------
21882 Fill in the BSSID for this session and set the usage flag
21883 ------------------------------------------------------------------------*/
21884 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021885 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021886
21887 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021888 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021889 ------------------------------------------------------------------------*/
21890 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21891 if ( NULL == pEventDataQueue )
21892 {
21893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021894 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021895 WDI_ASSERT(0);
21896 return WDI_STATUS_MEM_FAILURE;
21897 }
21898
21899 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21900 if ( NULL == pSessionIdElement )
21901 {
21902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021903 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021904 WDI_ASSERT(0);
21905 wpalMemoryFree(pEventDataQueue);
21906 return WDI_STATUS_MEM_FAILURE;
21907 }
21908
21909 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21910 if ( NULL == pEventInfo )
21911 {
21912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021913 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021914 WDI_ASSERT(0);
21915 wpalMemoryFree(pSessionIdElement);
21916 wpalMemoryFree(pEventDataQueue);
21917 return WDI_STATUS_MEM_FAILURE;
21918 }
21919
21920 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21921 pEventDataQueue->pUserData = pEventData->pUserData;
21922 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21923 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021924 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021925
21926 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21927 pEventDataQueue->pEventData = pEventInfo;
21928
21929 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021930 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021931
21932 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021933 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021934
Jeff Johnsone7245742012-09-05 17:12:55 -070021935 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021936
21937 /*We need to maintain a separate list that keeps track of the order in which
21938 the new assoc requests are being queued such that we can start processing
21939 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021940 pSessionIdElement->ucIndex = i;
21941 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021942
21943 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21944 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021945 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021946
21947 /*Return pending as this is what the status of the request is since it has
21948 been queued*/
21949 return WDI_STATUS_PENDING;
21950}/*WDI_QueueNewAssocRequest*/
21951
21952/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021953 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021954 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021955 away.- The assoc requests will be queued by BSSID
21956 @param
21957
Jeff Johnson295189b2012-06-20 16:38:30 -070021958 pWDICtx: - pointer to the WDI control block
21959 pSession: - session in which to queue
21960 pEventData: pointer to the event info that needs to be
21961 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021962
21963 @see
21964 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021965*/
21966WDI_Status
21967WDI_QueueAssocRequest
21968(
21969 WDI_ControlBlockType* pWDICtx,
21970 WDI_BSSSessionType* pSession,
21971 WDI_EventInfoType* pEventData
21972)
21973{
Jeff Johnsone7245742012-09-05 17:12:55 -070021974 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021975 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021976 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021978
21979 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021980 Sanity check
21981 ------------------------------------------------------------------------*/
21982 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21983 {
21984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021985 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021986
Jeff Johnsone7245742012-09-05 17:12:55 -070021987 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021988 }
21989
21990 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021991 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021992 ------------------------------------------------------------------------*/
21993 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21994 if ( NULL == pEventDataQueue )
21995 {
21996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021997 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021998 WDI_ASSERT(0);
21999 return WDI_STATUS_MEM_FAILURE;
22000 }
22001
22002 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22003 if ( NULL == pEventInfo )
22004 {
22005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22006 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022007 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022008 WDI_ASSERT(0);
22009 wpalMemoryFree(pEventDataQueue);
22010 return WDI_STATUS_MEM_FAILURE;
22011 }
22012
22013 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22014 pEventDataQueue->pUserData = pEventData->pUserData;
22015 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22016 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022017 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022018 pEventDataQueue->pEventData = pEventInfo;
22019
22020 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22021
22022 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022023 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022024
22025 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022026 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022027
Jeff Johnsone7245742012-09-05 17:12:55 -070022028 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022029
22030 /*The result of this operation is pending because the request has been
22031 queued and it will be processed at a later moment in time */
22032 return WDI_STATUS_PENDING;
22033}/*WDI_QueueAssocRequest*/
22034
22035/**
22036 @brief Utility function used by the DAL Core to help dequeue
22037 an association request that was pending
22038 The request will be queued up in front of the main
22039 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022040 @param
22041
Jeff Johnson295189b2012-06-20 16:38:30 -070022042 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022043
22044
22045 @see
22046 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022047*/
22048WDI_Status
22049WDI_DequeueAssocRequest
22050(
22051 WDI_ControlBlockType* pWDICtx
22052)
22053{
Jeff Johnsone7245742012-09-05 17:12:55 -070022054 wpt_list_node* pNode = NULL;
22055 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022056 WDI_BSSSessionType* pSession;
22057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022058
22059 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022060 Sanity check
22061 ------------------------------------------------------------------------*/
22062 if ( NULL == pWDICtx )
22063 {
22064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022065 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022066
Jeff Johnsone7245742012-09-05 17:12:55 -070022067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022068 }
22069
22070 /*------------------------------------------------------------------------
22071 An association has been completed => a new association can occur
22072 Check to see if there are any pending associations ->
22073 If so , transfer all the pending requests into the busy queue for
22074 processing
22075 These requests have arrived prior to the requests in the busy queue
22076 (bc they needed to be processed in order to be placed in this queue)
22077 => they will be placed at the front of the busy queue
22078 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022079 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022080
22081 if ( NULL == pNode )
22082 {
22083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022084 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022085 return WDI_STATUS_SUCCESS;
22086 }
22087
22088 /*The node actually points to the 1st element inside the Session Id struct -
22089 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022090 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022091
22092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22093 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
22094
22095 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
22096 {
22097 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070022098
Jeff Johnson295189b2012-06-20 16:38:30 -070022099 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070022100 the front of the main waiting queue for subsequent execution*/
22101 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022102 while ( NULL != pNode )
22103 {
22104 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022105 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22106 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022107 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022108 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022109 }
22110 else
22111 {
22112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022113 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022114 WPAL_ASSERT(0);
22115 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022118
Jeff Johnson295189b2012-06-20 16:38:30 -070022119 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22120 wpalMemoryFree(pSessionIdElement);
22121 return WDI_STATUS_SUCCESS;
22122}/*WDI_DequeueAssocRequest*/
22123
22124/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022125 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022126 pending requests - all req cb will be called with
22127 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022128 @param
22129
Jeff Johnson295189b2012-06-20 16:38:30 -070022130 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022131
22132 @see
22133 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022134*/
22135WDI_Status
22136WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022137(
Jeff Johnson295189b2012-06-20 16:38:30 -070022138 WDI_ControlBlockType* pWDICtx
22139)
22140{
Jeff Johnsone7245742012-09-05 17:12:55 -070022141 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022142 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022143 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022144 void* pUserData;
22145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22146
Jeff Johnsone7245742012-09-05 17:12:55 -070022147 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022148
22149 /*------------------------------------------------------------------------
22150 Go through all the requests and fail them - this will only be called
22151 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022152 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022153 ------------------------------------------------------------------------*/
22154 while( pNode )
22155 {
22156 /*The node actually points to the 1st element inside the Event Data struct -
22157 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022158 pEventDataQueue = (WDI_EventInfoType*)pNode;
22159
Jeff Johnson295189b2012-06-20 16:38:30 -070022160 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22161 if ( NULL != pfnReqStatusCB )
22162 {
22163 /*Fail the request*/
22164 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22165 }
22166 /* Free data - that was allocated when queueing */
22167 if ( pEventDataQueue->pEventData != NULL )
22168 {
22169 wpalMemoryFree(pEventDataQueue->pEventData);
22170 }
22171 wpalMemoryFree(pEventDataQueue);
22172
22173 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22174 {
22175 break;
22176 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022177 }
22178
Jeff Johnson295189b2012-06-20 16:38:30 -070022179 return WDI_STATUS_SUCCESS;
22180}/*WDI_ClearPendingRequests*/
22181
22182/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022183 @brief Helper routine used to init the BSS Sessions in the WDI control block
22184
22185
22186 @param pWDICtx: pointer to the WLAN DAL context
22187
Jeff Johnson295189b2012-06-20 16:38:30 -070022188 @see
22189*/
22190void
22191WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022192(
Jeff Johnson295189b2012-06-20 16:38:30 -070022193 WDI_ControlBlockType* pWDICtx
22194)
22195{
Jeff Johnsone7245742012-09-05 17:12:55 -070022196 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22198
22199 /*-------------------------------------------------------------------------
22200 No Sanity check
22201 -------------------------------------------------------------------------*/
22202 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22203 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022204 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22206 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22207 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22208 }
22209}/*WDI_ResetAssocSessions*/
22210
22211/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022212 @brief Helper routine used to find a session based on the BSSID
22213
22214
22215 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022216 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022217 pSession: pointer to the session (if found)
22218
Jeff Johnson295189b2012-06-20 16:38:30 -070022219 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022220 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022221*/
22222wpt_uint8
22223WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022224(
Jeff Johnson295189b2012-06-20 16:38:30 -070022225 WDI_ControlBlockType* pWDICtx,
22226 wpt_macAddr macBSSID,
22227 WDI_BSSSessionType** ppSession
22228)
22229{
Jeff Johnsone7245742012-09-05 17:12:55 -070022230 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22232
22233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022234 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022235 -------------------------------------------------------------------------*/
22236 if ( NULL == ppSession )
22237 {
22238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022239 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022240 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022241 }
22242
Jeff Johnsone7245742012-09-05 17:12:55 -070022243 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022244
Jeff Johnsone7245742012-09-05 17:12:55 -070022245 /*------------------------------------------------------------------------
22246 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022247 ------------------------------------------------------------------------*/
22248 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22249 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022250 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22251 (eWLAN_PAL_TRUE ==
22252 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22253 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022254 {
22255 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022256 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022257 return i;
22258 }
22259 }
22260
Jeff Johnsone7245742012-09-05 17:12:55 -070022261 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022262}/*WDI_FindAssocSession*/
22263
22264/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022265 @brief Helper routine used to find a session based on the BSSID
22266
22267
22268 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022269 ucBSSIdx: BSS Index of the session
22270 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022271
Jeff Johnson295189b2012-06-20 16:38:30 -070022272 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022273 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022274*/
22275wpt_uint8
22276WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022277(
Jeff Johnson295189b2012-06-20 16:38:30 -070022278 WDI_ControlBlockType* pWDICtx,
22279 wpt_uint16 ucBSSIdx,
22280 WDI_BSSSessionType** ppSession
22281)
22282{
Jeff Johnsone7245742012-09-05 17:12:55 -070022283 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22285
22286 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022287 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022288 -------------------------------------------------------------------------*/
22289 if ( NULL == ppSession )
22290 {
22291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022292 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022293 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022294 }
22295
Jeff Johnsone7245742012-09-05 17:12:55 -070022296 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022297
Jeff Johnsone7245742012-09-05 17:12:55 -070022298 /*------------------------------------------------------------------------
22299 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022300 ------------------------------------------------------------------------*/
22301 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22302 {
22303 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22304 {
22305 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022306 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022307 return i;
22308 }
22309 }
22310
Jeff Johnsone7245742012-09-05 17:12:55 -070022311 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022312}/*WDI_FindAssocSessionByBSSIdx*/
22313
22314/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022315 @brief Helper routine used to find a session based on the BSSID
22316
22317
22318 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022319 ucBSSIdx: BSS Index of the session
22320 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022321
Jeff Johnson295189b2012-06-20 16:38:30 -070022322 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022323 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022324*/
22325wpt_uint8
22326WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022327(
Jeff Johnson295189b2012-06-20 16:38:30 -070022328 WDI_ControlBlockType* pWDICtx,
22329 wpt_uint16 usIdx,
22330 WDI_BSSSessionType** ppSession
22331)
22332{
22333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22334
22335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022336 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022337 -------------------------------------------------------------------------*/
22338 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22339 {
22340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022341 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022342 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022343 }
22344
22345 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022346 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022347
22348 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022349
Jeff Johnson295189b2012-06-20 16:38:30 -070022350}/*WDI_FindAssocSessionByBSSIdx*/
22351
22352/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022353 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022354 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022355
22356
22357 @param pWDICtx: pointer to the WLAN DAL context
22358 pSession: pointer to the session (if found)
22359
Jeff Johnson295189b2012-06-20 16:38:30 -070022360 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022361 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022362*/
22363wpt_uint8
22364WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022365(
Jeff Johnson295189b2012-06-20 16:38:30 -070022366 WDI_ControlBlockType* pWDICtx,
22367 WDI_BSSSessionType** ppSession
22368)
22369{
Jeff Johnsone7245742012-09-05 17:12:55 -070022370 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022374 -------------------------------------------------------------------------*/
22375 if ( NULL == ppSession )
22376 {
22377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022378 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022379 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022380 }
22381
Jeff Johnsone7245742012-09-05 17:12:55 -070022382 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022383
Jeff Johnsone7245742012-09-05 17:12:55 -070022384 /*------------------------------------------------------------------------
22385 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022386 ------------------------------------------------------------------------*/
22387 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22388 {
22389 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22390 {
22391 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022392 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022393 return i;
22394 }
22395 }
22396
Jeff Johnsone7245742012-09-05 17:12:55 -070022397 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022398}/*WDI_FindEmptySession*/
22399
22400
22401/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022402 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022403 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022404
22405
22406 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022407 macBSSID: pointer to BSSID. If NULL, get all the session.
22408 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22409 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22410 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022411 @see
22412 @return Number of sessions in use
22413*/
22414wpt_uint8
22415WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022416(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022417 WDI_ControlBlockType* pWDICtx,
22418 wpt_macAddr macBSSID,
22419 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022420)
22421{
Jeff Johnsone7245742012-09-05 17:12:55 -070022422 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022424
22425 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022426 Count all sessions in use
22427 ------------------------------------------------------------------------*/
22428 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22429 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022430 if ( macBSSID && skipBSSID &&
22431 (eWLAN_PAL_TRUE ==
22432 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22433 WDI_MAC_ADDR_LEN)))
22434 {
22435 continue;
22436 }
22437 else if ( pWDICtx->aBSSSessions[i].bInUse )
22438 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022439 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022440 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022441 }
22442
Jeff Johnsone7245742012-09-05 17:12:55 -070022443 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022444}/*WDI_GetActiveSessionsCount*/
22445
22446/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022447 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022448 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022449
22450
22451 @param pWDICtx: pointer to the WLAN DAL context
22452 pSession: pointer to the session (if found)
22453
Jeff Johnson295189b2012-06-20 16:38:30 -070022454 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022455 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022456*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022457void
Jeff Johnson295189b2012-06-20 16:38:30 -070022458WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022459(
Jeff Johnson295189b2012-06-20 16:38:30 -070022460 WDI_ControlBlockType* pWDICtx,
22461 WDI_BSSSessionType* ppSession
22462)
22463{
22464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022465 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022466 -------------------------------------------------------------------------*/
22467 if ( NULL == ppSession )
22468 {
22469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022470 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022471 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022472 }
22473
Jeff Johnsone7245742012-09-05 17:12:55 -070022474 /*------------------------------------------------------------------------
22475 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 ------------------------------------------------------------------------*/
22477 wpal_list_destroy(&ppSession->wptPendingQueue);
22478 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022479 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22480 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022481 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22482 wpal_list_init(&ppSession->wptPendingQueue);
22483
22484}/*WDI_DeleteSession*/
22485
22486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022487 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022488 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022489 @param
22490
Jeff Johnson295189b2012-06-20 16:38:30 -070022491 WDI_AddStaParams: - pointer to the WDI Add STA params
22492 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022493
22494 @see
22495 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022496*/
22497void
22498WDI_AddBcastSTAtoSTATable
22499(
22500 WDI_ControlBlockType* pWDICtx,
22501 WDI_AddStaParams * staParams,
22502 wpt_uint16 usBcastStaIdx
22503)
22504{
22505 WDI_AddStaParams wdiAddSTAParam = {0};
22506 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22508
22509 /*---------------------------------------------------------------------
22510 Sanity check
22511 ---------------------------------------------------------------------*/
22512 if ( NULL == staParams )
22513 {
22514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022515 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022516
Jeff Johnsone7245742012-09-05 17:12:55 -070022517 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022518 }
22519
22520 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22521 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22522 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22523 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22524 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22525 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22526 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22527 WDI_MAC_ADDR_LEN );
22528 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22529 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22530 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22531 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22532 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22533 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22534 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022535
Jeff Johnson295189b2012-06-20 16:38:30 -070022536 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22537}
22538
22539/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022540 @brief NV blob will be divided into fragments of size 4kb and
22541 Sent to HAL
22542
22543 @param pWDICtx: pointer to the WLAN DAL context
22544 pEventData: pointer to the event information structure
22545
Jeff Johnson295189b2012-06-20 16:38:30 -070022546 @see
22547 @return Result of the function call
22548 */
22549
22550WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022551(
Jeff Johnson295189b2012-06-20 16:38:30 -070022552 WDI_ControlBlockType* pWDICtx,
22553 WDI_EventInfoType* pEventData
22554)
22555{
22556
22557 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22558 wpt_uint8* pSendBuffer = NULL;
22559 wpt_uint16 usDataOffset = 0;
22560 wpt_uint16 usSendSize = 0;
22561 wpt_uint16 usCurrentFragmentSize =0;
22562 wpt_uint8* pSrcBuffer = NULL;
22563 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22564 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22565
22566 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22567 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22568 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22569
Jeff Johnsone7245742012-09-05 17:12:55 -070022570 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022571 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22572
22573 /* Update the current Fragment Number */
22574 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22575
22576 /*Update the HAL REQ structure */
22577 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22578 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22579 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22580
22581 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022582 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022583 image will be sent to HAL*/
22584
Jeff Johnsone7245742012-09-05 17:12:55 -070022585 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022586 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022587 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022588 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022589 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022590 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22591 usCurrentFragmentSize = FRAGMENT_SIZE;
22592
22593 /*Update the HAL REQ structure */
22594 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22595 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22596
22597 }
22598 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022599 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022600 usCurrentFragmentSize = FRAGMENT_SIZE;
22601
22602 /*Update the HAL REQ structure */
22603 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22604 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22605 }
22606
22607 /*-----------------------------------------------------------------------
22608 Get message buffer
22609 -----------------------------------------------------------------------*/
22610 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22611 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22612 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022613 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022614 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22615 {
22616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022617 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022618 pEventData, pwdiNvDownloadReqParams);
22619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022621 }
22622
22623 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022624 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022625 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22626
22627 /* Appending the NV image fragment */
22628 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22629 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22630 usCurrentFragmentSize);
22631
22632 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022633 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022634
Jeff Johnsone7245742012-09-05 17:12:55 -070022635 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22636 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022637 WDI_NV_DOWNLOAD_RESP);
22638
22639}
Jeff Johnsone7245742012-09-05 17:12:55 -070022640/*============================================================================
22641 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022642 ============================================================================*/
22643/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022644 @brief Helper routine used to find a session based on the BSSID
22645 @param pContext: pointer to the WLAN DAL context
22646 @param pDPContext: pointer to the Datapath context
22647
Jeff Johnson295189b2012-06-20 16:38:30 -070022648 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022649 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022650*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022651WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022652WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22653{
22654 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22655
22656 pCB->pDPContext = pDPContext;
22657 return;
22658}
22659
22660/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022661 @brief Helper routine used to find a session based on the BSSID
22662
22663
22664 @param pContext: pointer to the WLAN DAL context
22665
Jeff Johnson295189b2012-06-20 16:38:30 -070022666 @see
22667 @return pointer to Datapath context
22668*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022669WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022670WDI_DS_GetDatapathContext (void *pContext)
22671{
22672 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22673 return pCB->pDPContext;
22674}
22675/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022676 @brief Helper routine used to find a session based on the BSSID
22677
22678
22679 @param pContext: pointer to the WLAN DAL context
22680 @param pDTDriverContext: pointer to the Transport Driver context
22681
Jeff Johnson295189b2012-06-20 16:38:30 -070022682 @see
22683 @return void
22684*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022685WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022686WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22687{
22688 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22689
22690 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022691 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022692}
22693
22694/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022695 @brief Helper routine used to find a session based on the BSSID
22696
22697
22698 @param pWDICtx: pointer to the WLAN DAL context
22699
Jeff Johnson295189b2012-06-20 16:38:30 -070022700 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022701 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022702*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022703WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022704WDT_GetTransportDriverContext (void *pContext)
22705{
22706 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022707 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022708}
22709
Jeff Johnsone7245742012-09-05 17:12:55 -070022710/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022711 Helper inline converters
22712 ============================================================================*/
22713/*Convert WDI driver type into HAL driver type*/
22714WPT_STATIC WPT_INLINE WDI_Status
22715WDI_HAL_2_WDI_STATUS
22716(
22717 eHalStatus halStatus
22718)
22719{
Jeff Johnsone7245742012-09-05 17:12:55 -070022720 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022721 the chances of getting inlined*/
22722 switch( halStatus )
22723 {
22724 case eHAL_STATUS_SUCCESS:
22725 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22726 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22727 return WDI_STATUS_SUCCESS;
22728 case eHAL_STATUS_FAILURE:
22729 return WDI_STATUS_E_FAILURE;
22730 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022731 return WDI_STATUS_MEM_FAILURE;
22732 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022733 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022734 default:
22735 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22736 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022737
Jeff Johnsone7245742012-09-05 17:12:55 -070022738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022739}/*WDI_HAL_2_WDI_STATUS*/
22740
22741/*Convert WDI request type into HAL request type*/
22742WPT_STATIC WPT_INLINE tHalHostMsgType
22743WDI_2_HAL_REQ_TYPE
22744(
22745 WDI_RequestEnumType wdiReqType
22746)
22747{
Jeff Johnsone7245742012-09-05 17:12:55 -070022748 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022749 the chances of getting inlined*/
22750 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022751 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022752 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022753 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022754 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022755 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022756 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022757 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022758 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022759 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022760 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022761 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022762 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022763 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022764 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022765 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022767 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022768 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022769 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022770 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022771 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022772 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022773 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022774 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022775 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022776 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022777 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022778 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022779 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022780 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022781 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022782 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022783 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022785 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022786 return WLAN_HAL_RMV_STAKEY_REQ;
22787 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022788 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022789 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022790 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022791 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022792 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022793 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022794 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022795 case WDI_DEL_BA_REQ:
22796 return WLAN_HAL_DEL_BA_REQ;
22797#ifdef FEATURE_WLAN_CCX
22798 case WDI_TSM_STATS_REQ:
22799 return WLAN_HAL_TSM_STATS_REQ;
22800#endif
22801 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022802 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022803 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022804 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022805 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022806 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022807 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022808 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022809 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022810 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022811 case WDI_ADD_BA_SESSION_REQ:
22812 return WLAN_HAL_ADD_BA_SESSION_REQ;
22813 case WDI_TRIGGER_BA_REQ:
22814 return WLAN_HAL_TRIGGER_BA_REQ;
22815 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022816 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022817 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022818 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022819 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22820 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22821 case WDI_SET_MAX_TX_POWER_REQ:
22822 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070022823 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
22824 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070022825 case WDI_SET_TX_POWER_REQ:
22826 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022827 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22828 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053022829#ifdef FEATURE_WLAN_TDLS
22830 case WDI_TDLS_LINK_ESTABLISH_REQ:
22831 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22832#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022833 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022834 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022835 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022836 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022837 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022838 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022839 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022840 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022841 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022842 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022843 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022844 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022845 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022846 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022847 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022848 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022849 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022850 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022851 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022852 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022853 case WDI_REM_BEACON_FILTER_REQ:
22854 return WLAN_HAL_REM_BCN_FILTER_REQ;
22855 case WDI_SET_RSSI_THRESHOLDS_REQ:
22856 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22857 case WDI_HOST_OFFLOAD_REQ:
22858 return WLAN_HAL_HOST_OFFLOAD_REQ;
22859 case WDI_WOWL_ADD_BC_PTRN_REQ:
22860 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22861 case WDI_WOWL_DEL_BC_PTRN_REQ:
22862 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22863 case WDI_WOWL_ENTER_REQ:
22864 return WLAN_HAL_ENTER_WOWL_REQ;
22865 case WDI_WOWL_EXIT_REQ:
22866 return WLAN_HAL_EXIT_WOWL_REQ;
22867 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22868 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22869 case WDI_NV_DOWNLOAD_REQ:
22870 return WLAN_HAL_DOWNLOAD_NV_REQ;
22871 case WDI_FLUSH_AC_REQ:
22872 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22873 case WDI_BTAMP_EVENT_REQ:
22874 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22875#ifdef WLAN_FEATURE_VOWIFI_11R
22876 case WDI_AGGR_ADD_TS_REQ:
22877 return WLAN_HAL_AGGR_ADD_TS_REQ;
22878#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022879 case WDI_FTM_CMD_REQ:
22880 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022881 case WDI_ADD_STA_SELF_REQ:
22882 return WLAN_HAL_ADD_STA_SELF_REQ;
22883 case WDI_DEL_STA_SELF_REQ:
22884 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022885#ifdef FEATURE_OEM_DATA_SUPPORT
22886 case WDI_START_OEM_DATA_REQ:
22887 return WLAN_HAL_START_OEM_DATA_REQ;
22888#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022889 case WDI_HOST_RESUME_REQ:
22890 return WLAN_HAL_HOST_RESUME_REQ;
22891 case WDI_HOST_SUSPEND_IND:
22892 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080022893 case WDI_TRAFFIC_STATS_IND:
22894 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070022895#ifdef WLAN_FEATURE_11W
22896 case WDI_EXCLUDE_UNENCRYPTED_IND:
22897 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22898#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022899 case WDI_KEEP_ALIVE_REQ:
22900 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070022901#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070022902 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22903 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070022904#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022905#ifdef FEATURE_WLAN_SCAN_PNO
22906 case WDI_SET_PREF_NETWORK_REQ:
22907 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22908 case WDI_SET_RSSI_FILTER_REQ:
22909 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22910 case WDI_UPDATE_SCAN_PARAMS_REQ:
22911 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22912#endif // FEATURE_WLAN_SCAN_PNO
22913 case WDI_SET_TX_PER_TRACKING_REQ:
22914 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22915#ifdef WLAN_FEATURE_PACKET_FILTERING
22916 case WDI_8023_MULTICAST_LIST_REQ:
22917 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22918 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022919 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022920 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22921 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22922 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22923 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22924#endif // WLAN_FEATURE_PACKET_FILTERING
22925 case WDI_HAL_DUMP_CMD_REQ:
22926 return WLAN_HAL_DUMP_COMMAND_REQ;
22927#ifdef WLAN_FEATURE_GTK_OFFLOAD
22928 case WDI_GTK_OFFLOAD_REQ:
22929 return WLAN_HAL_GTK_OFFLOAD_REQ;
22930 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22931 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22932#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22933
22934 case WDI_INIT_SCAN_CON_REQ:
22935 return WLAN_HAL_INIT_SCAN_CON_REQ;
22936 case WDI_SET_POWER_PARAMS_REQ:
22937 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22938 case WDI_SET_TM_LEVEL_REQ:
22939 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22940 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22941 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022942#ifdef WLAN_FEATURE_11AC
22943 case WDI_UPDATE_VHT_OP_MODE_REQ:
22944 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22945#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080022946 case WDI_GET_ROAM_RSSI_REQ:
22947 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053022948 case WDI_DHCP_START_IND:
22949 return WLAN_HAL_DHCP_START_IND;
22950 case WDI_DHCP_STOP_IND:
22951 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070022952#ifdef FEATURE_WLAN_LPHB
22953 case WDI_LPHB_CFG_REQ:
22954 return WLAN_HAL_LPHB_CFG_REQ;
22955#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070022956 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22957 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22958 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22959 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22960
Rajeev79dbe4c2013-10-05 11:03:42 +053022961#ifdef FEATURE_WLAN_BATCH_SCAN
22962 case WDI_SET_BATCH_SCAN_REQ:
22963 return WLAN_HAL_BATCHSCAN_SET_REQ;
22964 case WDI_STOP_BATCH_SCAN_IND:
22965 return WLAN_HAL_BATCHSCAN_STOP_IND;
22966 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
22967 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
22968#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070022969 case WDI_RATE_UPDATE_IND:
22970 return WLAN_HAL_RATE_UPDATE_IND;
Rajeev79dbe4c2013-10-05 11:03:42 +053022971
Jeff Johnson295189b2012-06-20 16:38:30 -070022972 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022973 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022974 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022975
Jeff Johnson295189b2012-06-20 16:38:30 -070022976}/*WDI_2_HAL_REQ_TYPE*/
22977
22978/*Convert WDI response type into HAL response type*/
22979WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22980HAL_2_WDI_RSP_TYPE
22981(
22982 tHalHostMsgType halMsg
22983)
22984{
Jeff Johnsone7245742012-09-05 17:12:55 -070022985 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022986 the chances of getting inlined*/
22987 switch( halMsg )
22988 {
22989 case WLAN_HAL_START_RSP:
22990 return WDI_START_RESP;
22991 case WLAN_HAL_STOP_RSP:
22992 return WDI_STOP_RESP;
22993 case WLAN_HAL_INIT_SCAN_RSP:
22994 return WDI_INIT_SCAN_RESP;
22995 case WLAN_HAL_START_SCAN_RSP:
22996 return WDI_START_SCAN_RESP;
22997 case WLAN_HAL_END_SCAN_RSP:
22998 return WDI_END_SCAN_RESP;
22999 case WLAN_HAL_FINISH_SCAN_RSP:
23000 return WDI_FINISH_SCAN_RESP;
23001 case WLAN_HAL_CONFIG_STA_RSP:
23002 return WDI_CONFIG_STA_RESP;
23003 case WLAN_HAL_DELETE_STA_RSP:
23004 return WDI_DEL_STA_RESP;
23005 case WLAN_HAL_CONFIG_BSS_RSP:
23006 return WDI_CONFIG_BSS_RESP;
23007 case WLAN_HAL_DELETE_BSS_RSP:
23008 return WDI_DEL_BSS_RESP;
23009 case WLAN_HAL_JOIN_RSP:
23010 return WDI_JOIN_RESP;
23011 case WLAN_HAL_POST_ASSOC_RSP:
23012 return WDI_POST_ASSOC_RESP;
23013 case WLAN_HAL_SET_BSSKEY_RSP:
23014 return WDI_SET_BSS_KEY_RESP;
23015 case WLAN_HAL_SET_STAKEY_RSP:
23016 return WDI_SET_STA_KEY_RESP;
23017 case WLAN_HAL_RMV_BSSKEY_RSP:
23018 return WDI_RMV_BSS_KEY_RESP;
23019 case WLAN_HAL_RMV_STAKEY_RSP:
23020 return WDI_RMV_STA_KEY_RESP;
23021 case WLAN_HAL_SET_BCASTKEY_RSP:
23022 return WDI_SET_STA_BCAST_KEY_RESP;
23023 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
23024 // return WDI_RMV_STA_BCAST_KEY_RESP;
23025 case WLAN_HAL_ADD_TS_RSP:
23026 return WDI_ADD_TS_RESP;
23027 case WLAN_HAL_DEL_TS_RSP:
23028 return WDI_DEL_TS_RESP;
23029 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
23030 return WDI_UPD_EDCA_PRMS_RESP;
23031 case WLAN_HAL_ADD_BA_RSP:
23032 return WDI_ADD_BA_RESP;
23033 case WLAN_HAL_DEL_BA_RSP:
23034 return WDI_DEL_BA_RESP;
23035#ifdef FEATURE_WLAN_CCX
23036 case WLAN_HAL_TSM_STATS_RSP:
23037 return WDI_TSM_STATS_RESP;
23038#endif
23039 case WLAN_HAL_CH_SWITCH_RSP:
23040 return WDI_CH_SWITCH_RESP;
23041 case WLAN_HAL_SET_LINK_ST_RSP:
23042 return WDI_SET_LINK_ST_RESP;
23043 case WLAN_HAL_GET_STATS_RSP:
23044 return WDI_GET_STATS_RESP;
23045 case WLAN_HAL_UPDATE_CFG_RSP:
23046 return WDI_UPDATE_CFG_RESP;
23047 case WLAN_HAL_ADD_BA_SESSION_RSP:
23048 return WDI_ADD_BA_SESSION_RESP;
23049 case WLAN_HAL_TRIGGER_BA_RSP:
23050 return WDI_TRIGGER_BA_RESP;
23051 case WLAN_HAL_UPDATE_BEACON_RSP:
23052 return WDI_UPD_BCON_PRMS_RESP;
23053 case WLAN_HAL_SEND_BEACON_RSP:
23054 return WDI_SND_BCON_RESP;
23055 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
23056 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
23057 /*Indications*/
23058 case WLAN_HAL_RSSI_NOTIFICATION_IND:
23059 return WDI_HAL_RSSI_NOTIFICATION_IND;
23060 case WLAN_HAL_MISSED_BEACON_IND:
23061 return WDI_HAL_MISSED_BEACON_IND;
23062 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
23063 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
23064 case WLAN_HAL_MIC_FAILURE_IND:
23065 return WDI_HAL_MIC_FAILURE_IND;
23066 case WLAN_HAL_FATAL_ERROR_IND:
23067 return WDI_HAL_FATAL_ERROR_IND;
23068 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
23069 return WDI_HAL_DEL_STA_IND;
23070 case WLAN_HAL_COEX_IND:
23071 return WDI_HAL_COEX_IND;
23072 case WLAN_HAL_OTA_TX_COMPL_IND:
23073 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023074 case WLAN_HAL_P2P_NOA_ATTR_IND:
23075 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080023076 case WLAN_HAL_P2P_NOA_START_IND:
23077 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023078 case WLAN_HAL_TX_PER_HIT_IND:
23079 return WDI_HAL_TX_PER_HIT_IND;
23080 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
23081 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023082 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
23083 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070023084 case WLAN_HAL_SET_TX_POWER_RSP:
23085 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023086 case WLAN_HAL_SET_P2P_GONOA_RSP:
23087 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023088#ifdef FEATURE_WLAN_TDLS
23089 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
23090 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
23091 case WLAN_HAL_TDLS_IND:
23092 return WDI_HAL_TDLS_IND;
23093#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023094 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023095 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023096 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023097 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023098 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023099 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023100 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023101 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023102 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023103 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023104 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023105 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023106 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023107 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023108 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023109 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023110 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023111 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023112 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23113 return WDI_SET_BEACON_FILTER_RESP;
23114 case WLAN_HAL_REM_BCN_FILTER_RSP:
23115 return WDI_REM_BEACON_FILTER_RESP;
23116 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23117 return WDI_SET_RSSI_THRESHOLDS_RESP;
23118 case WLAN_HAL_HOST_OFFLOAD_RSP:
23119 return WDI_HOST_OFFLOAD_RESP;
23120 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23121 return WDI_WOWL_ADD_BC_PTRN_RESP;
23122 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23123 return WDI_WOWL_DEL_BC_PTRN_RESP;
23124 case WLAN_HAL_ENTER_WOWL_RSP:
23125 return WDI_WOWL_ENTER_RESP;
23126 case WLAN_HAL_EXIT_WOWL_RSP:
23127 return WDI_WOWL_EXIT_RESP;
23128 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23129 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23130 case WLAN_HAL_DOWNLOAD_NV_RSP:
23131 return WDI_NV_DOWNLOAD_RESP;
23132 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23133 return WDI_FLUSH_AC_RESP;
23134 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23135 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023136 case WLAN_HAL_PROCESS_PTT_RSP:
23137 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023138 case WLAN_HAL_ADD_STA_SELF_RSP:
23139 return WDI_ADD_STA_SELF_RESP;
23140case WLAN_HAL_DEL_STA_SELF_RSP:
23141 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023142#ifdef FEATURE_OEM_DATA_SUPPORT
23143 case WLAN_HAL_START_OEM_DATA_RSP:
23144 return WDI_START_OEM_DATA_RESP;
23145#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023146 case WLAN_HAL_HOST_RESUME_RSP:
23147 return WDI_HOST_RESUME_RESP;
23148 case WLAN_HAL_KEEP_ALIVE_RSP:
23149 return WDI_KEEP_ALIVE_RESP;
23150#ifdef FEATURE_WLAN_SCAN_PNO
23151 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23152 return WDI_SET_PREF_NETWORK_RESP;
23153 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023154 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023155 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23156 return WDI_UPDATE_SCAN_PARAMS_RESP;
23157 case WLAN_HAL_PREF_NETW_FOUND_IND:
23158 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23159#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023160#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023161 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23162 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023163#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023164 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23165 return WDI_SET_TX_PER_TRACKING_RESP;
23166#ifdef WLAN_FEATURE_PACKET_FILTERING
23167 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23168 return WDI_8023_MULTICAST_LIST_RESP;
23169 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23170 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23171 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23172 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23173 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23174 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23175#endif // WLAN_FEATURE_PACKET_FILTERING
23176
23177 case WLAN_HAL_DUMP_COMMAND_RSP:
23178 return WDI_HAL_DUMP_CMD_RESP;
23179 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23180 return WDI_SET_POWER_PARAMS_RESP;
23181#ifdef WLAN_FEATURE_VOWIFI_11R
23182 case WLAN_HAL_AGGR_ADD_TS_RSP:
23183 return WDI_AGGR_ADD_TS_RESP;
23184#endif
23185
23186#ifdef WLAN_FEATURE_GTK_OFFLOAD
23187 case WLAN_HAL_GTK_OFFLOAD_RSP:
23188 return WDI_GTK_OFFLOAD_RESP;
23189 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23190 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23191#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23192#ifdef WLAN_WAKEUP_EVENTS
23193 case WLAN_HAL_WAKE_REASON_IND:
23194 return WDI_HAL_WAKE_REASON_IND;
23195#endif // WLAN_WAKEUP_EVENTS
23196
23197 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23198 return WDI_SET_TM_LEVEL_RESP;
23199 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23200 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023201#ifdef WLAN_FEATURE_11AC
23202 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23203 return WDI_UPDATE_VHT_OP_MODE_RESP;
23204#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023205#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23206 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23207 return WDI_GET_ROAM_RSSI_RESP;
23208#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023209
Leo Chang9056f462013-08-01 19:21:11 -070023210#ifdef FEATURE_WLAN_LPHB
23211 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070023212 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023213 case WLAN_HAL_LPHB_CFG_RSP:
23214 return WDI_LPHB_CFG_RESP;
23215#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023216
23217 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23218 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070023219 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23220 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023221
Rajeev79dbe4c2013-10-05 11:03:42 +053023222#ifdef FEATURE_WLAN_BATCH_SCAN
23223 case WLAN_HAL_BATCHSCAN_SET_RSP:
23224 return WDI_SET_BATCH_SCAN_RESP;
23225 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23226 return WDI_BATCHSCAN_RESULT_IND;
23227#endif // FEATURE_WLAN_BATCH_SCAN
23228
Leo Chang0b0e45a2013-12-15 15:18:55 -080023229#ifdef FEATURE_WLAN_CH_AVOID
23230 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23231 return WDI_HAL_CH_AVOID_IND;
23232#endif /* FEATURE_WLAN_CH_AVOID */
23233
Jeff Johnson295189b2012-06-20 16:38:30 -070023234 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023235 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023236 }
23237
23238}/*HAL_2_WDI_RSP_TYPE*/
23239
23240
23241/*Convert WDI driver type into HAL driver type*/
23242WPT_STATIC WPT_INLINE tDriverType
23243WDI_2_HAL_DRV_TYPE
23244(
23245 WDI_DriverType wdiDriverType
23246)
23247{
Jeff Johnsone7245742012-09-05 17:12:55 -070023248 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023249 the chances of getting inlined*/
23250 switch( wdiDriverType )
23251 {
23252 case WDI_DRIVER_TYPE_PRODUCTION:
23253 return eDRIVER_TYPE_PRODUCTION;
23254 case WDI_DRIVER_TYPE_MFG:
23255 return eDRIVER_TYPE_MFG;
23256 case WDI_DRIVER_TYPE_DVT:
23257 return eDRIVER_TYPE_DVT;
23258 }
23259
Jeff Johnsone7245742012-09-05 17:12:55 -070023260 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023261}/*WDI_2_HAL_DRV_TYPE*/
23262
23263
23264/*Convert WDI stop reason into HAL stop reason*/
23265WPT_STATIC WPT_INLINE tHalStopType
23266WDI_2_HAL_STOP_REASON
23267(
23268 WDI_StopType wdiDriverType
23269)
23270{
Jeff Johnsone7245742012-09-05 17:12:55 -070023271 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023272 the chances of getting inlined*/
23273 switch( wdiDriverType )
23274 {
23275 case WDI_STOP_TYPE_SYS_RESET:
23276 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070023277 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23278 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023279 case WDI_STOP_TYPE_RF_KILL:
23280 return HAL_STOP_TYPE_RF_KILL;
23281 }
23282
Jeff Johnsone7245742012-09-05 17:12:55 -070023283 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023284}/*WDI_2_HAL_STOP_REASON*/
23285
23286
23287/*Convert WDI scan mode type into HAL scan mode type*/
23288WPT_STATIC WPT_INLINE eHalSysMode
23289WDI_2_HAL_SCAN_MODE
23290(
23291 WDI_ScanMode wdiScanMode
23292)
23293{
Jeff Johnsone7245742012-09-05 17:12:55 -070023294 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023295 the chances of getting inlined*/
23296 switch( wdiScanMode )
23297 {
23298 case WDI_SCAN_MODE_NORMAL:
23299 return eHAL_SYS_MODE_NORMAL;
23300 case WDI_SCAN_MODE_LEARN:
23301 return eHAL_SYS_MODE_LEARN;
23302 case WDI_SCAN_MODE_SCAN:
23303 return eHAL_SYS_MODE_SCAN;
23304 case WDI_SCAN_MODE_PROMISC:
23305 return eHAL_SYS_MODE_PROMISC;
23306 case WDI_SCAN_MODE_SUSPEND_LINK:
23307 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023308 case WDI_SCAN_MODE_ROAM_SCAN:
23309 return eHAL_SYS_MODE_ROAM_SCAN;
23310 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23311 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023312 }
23313
Jeff Johnsone7245742012-09-05 17:12:55 -070023314 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023315}/*WDI_2_HAL_SCAN_MODE*/
23316
23317/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023318WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023319WDI_2_HAL_SEC_CH_OFFSET
23320(
23321 WDI_HTSecondaryChannelOffset wdiSecChOffset
23322)
23323{
Jeff Johnsone7245742012-09-05 17:12:55 -070023324 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023325 the chances of getting inlined*/
23326 switch( wdiSecChOffset )
23327 {
23328 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023329 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023330 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023331 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023332 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023333 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23334#ifdef WLAN_FEATURE_11AC
23335 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23336 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23337 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23338 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23339 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23340 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23341 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23342 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23343 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23344 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23345 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23346 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23347 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23348 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23349#endif
23350 default:
23351 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023352 }
23353
Jeff Johnsone7245742012-09-05 17:12:55 -070023354 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023355}/*WDI_2_HAL_SEC_CH_OFFSET*/
23356
23357/*Convert WDI BSS type into HAL BSS type*/
23358WPT_STATIC WPT_INLINE tSirBssType
23359WDI_2_HAL_BSS_TYPE
23360(
23361 WDI_BssType wdiBSSType
23362)
23363{
Jeff Johnsone7245742012-09-05 17:12:55 -070023364 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023365 the chances of getting inlined*/
23366 switch( wdiBSSType )
23367 {
23368 case WDI_INFRASTRUCTURE_MODE:
23369 return eSIR_INFRASTRUCTURE_MODE;
23370 case WDI_INFRA_AP_MODE:
23371 return eSIR_INFRA_AP_MODE;
23372 case WDI_IBSS_MODE:
23373 return eSIR_IBSS_MODE;
23374 case WDI_BTAMP_STA_MODE:
23375 return eSIR_BTAMP_STA_MODE;
23376 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023377 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 case WDI_BSS_AUTO_MODE:
23379 return eSIR_AUTO_MODE;
23380 }
23381
Jeff Johnsone7245742012-09-05 17:12:55 -070023382 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023383}/*WDI_2_HAL_BSS_TYPE*/
23384
23385/*Convert WDI NW type into HAL NW type*/
23386WPT_STATIC WPT_INLINE tSirNwType
23387WDI_2_HAL_NW_TYPE
23388(
23389 WDI_NwType wdiNWType
23390)
23391{
Jeff Johnsone7245742012-09-05 17:12:55 -070023392 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023393 the chances of getting inlined*/
23394 switch( wdiNWType )
23395 {
23396 case WDI_11A_NW_TYPE:
23397 return eSIR_11A_NW_TYPE;
23398 case WDI_11B_NW_TYPE:
23399 return eSIR_11B_NW_TYPE;
23400 case WDI_11G_NW_TYPE:
23401 return eSIR_11G_NW_TYPE;
23402 case WDI_11N_NW_TYPE:
23403 return eSIR_11N_NW_TYPE;
23404 }
23405
Jeff Johnsone7245742012-09-05 17:12:55 -070023406 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023407}/*WDI_2_HAL_NW_TYPE*/
23408
23409/*Convert WDI chanel bonding type into HAL cb type*/
23410WPT_STATIC WPT_INLINE ePhyChanBondState
23411WDI_2_HAL_CB_STATE
23412(
23413 WDI_PhyChanBondState wdiCbState
23414)
23415{
Jeff Johnsone7245742012-09-05 17:12:55 -070023416 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023417 the chances of getting inlined*/
23418 switch ( wdiCbState )
23419 {
23420 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23421 return PHY_SINGLE_CHANNEL_CENTERED;
23422 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23423 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23424 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23425 return PHY_DOUBLE_CHANNEL_CENTERED;
23426 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23427 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023428#ifdef WLAN_FEATURE_11AC
23429 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23430 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23431 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23432 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23433 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23434 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23435 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23436 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23437 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23438 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23439 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23440 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23441 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23442 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23443#endif
23444 case WDI_MAX_CB_STATE:
23445 default:
23446 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023447 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023448
Jeff Johnson295189b2012-06-20 16:38:30 -070023449 return PHY_CHANNEL_BONDING_STATE_MAX;
23450}/*WDI_2_HAL_CB_STATE*/
23451
23452/*Convert WDI chanel bonding type into HAL cb type*/
23453WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23454WDI_2_HAL_HT_OPER_MODE
23455(
23456 WDI_HTOperatingMode wdiHTOperMode
23457)
23458{
Jeff Johnsone7245742012-09-05 17:12:55 -070023459 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023460 the chances of getting inlined*/
23461 switch ( wdiHTOperMode )
23462 {
23463 case WDI_HT_OP_MODE_PURE:
23464 return eSIR_HT_OP_MODE_PURE;
23465 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23466 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23467 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23468 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23469 case WDI_HT_OP_MODE_MIXED:
23470 return eSIR_HT_OP_MODE_MIXED;
23471 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023472
Jeff Johnson295189b2012-06-20 16:38:30 -070023473 return eSIR_HT_OP_MODE_MAX;
23474}/*WDI_2_HAL_HT_OPER_MODE*/
23475
23476/*Convert WDI mimo PS type into HAL mimo PS type*/
23477WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23478WDI_2_HAL_MIMO_PS
23479(
23480 WDI_HTMIMOPowerSaveState wdiHTOperMode
23481)
23482{
Jeff Johnsone7245742012-09-05 17:12:55 -070023483 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023484 the chances of getting inlined*/
23485 switch ( wdiHTOperMode )
23486 {
23487 case WDI_HT_MIMO_PS_STATIC:
23488 return eSIR_HT_MIMO_PS_STATIC;
23489 case WDI_HT_MIMO_PS_DYNAMIC:
23490 return eSIR_HT_MIMO_PS_DYNAMIC;
23491 case WDI_HT_MIMO_PS_NA:
23492 return eSIR_HT_MIMO_PS_NA;
23493 case WDI_HT_MIMO_PS_NO_LIMIT:
23494 return eSIR_HT_MIMO_PS_NO_LIMIT;
23495 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023496
Jeff Johnson295189b2012-06-20 16:38:30 -070023497 return eSIR_HT_MIMO_PS_MAX;
23498}/*WDI_2_HAL_MIMO_PS*/
23499
23500/*Convert WDI ENC type into HAL ENC type*/
23501WPT_STATIC WPT_INLINE tAniEdType
23502WDI_2_HAL_ENC_TYPE
23503(
23504 WDI_EncryptType wdiEncType
23505)
23506{
Jeff Johnsone7245742012-09-05 17:12:55 -070023507 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023508 the chances of getting inlined*/
23509 switch ( wdiEncType )
23510 {
23511 case WDI_ENCR_NONE:
23512 return eSIR_ED_NONE;
23513
23514 case WDI_ENCR_WEP40:
23515 return eSIR_ED_WEP40;
23516
23517 case WDI_ENCR_WEP104:
23518 return eSIR_ED_WEP104;
23519
23520 case WDI_ENCR_TKIP:
23521 return eSIR_ED_TKIP;
23522
23523 case WDI_ENCR_CCMP:
23524 return eSIR_ED_CCMP;
23525
23526 case WDI_ENCR_AES_128_CMAC:
23527 return eSIR_ED_AES_128_CMAC;
23528#if defined(FEATURE_WLAN_WAPI)
23529 case WDI_ENCR_WPI:
23530 return eSIR_ED_WPI;
23531#endif
23532 default:
23533 return eSIR_ED_NOT_IMPLEMENTED;
23534 }
23535
23536}/*WDI_2_HAL_ENC_TYPE*/
23537
23538/*Convert WDI WEP type into HAL WEP type*/
23539WPT_STATIC WPT_INLINE tAniWepType
23540WDI_2_HAL_WEP_TYPE
23541(
23542 WDI_WepType wdiWEPType
23543)
23544{
Jeff Johnsone7245742012-09-05 17:12:55 -070023545 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023546 the chances of getting inlined*/
23547 switch ( wdiWEPType )
23548 {
23549 case WDI_WEP_STATIC:
23550 return eSIR_WEP_STATIC;
23551
23552 case WDI_WEP_DYNAMIC:
23553 return eSIR_WEP_DYNAMIC;
23554 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023555
Jeff Johnson295189b2012-06-20 16:38:30 -070023556 return eSIR_WEP_MAX;
23557}/*WDI_2_HAL_WEP_TYPE*/
23558
23559WPT_STATIC WPT_INLINE tSirLinkState
23560WDI_2_HAL_LINK_STATE
23561(
23562 WDI_LinkStateType wdiLinkState
23563)
23564{
Jeff Johnsone7245742012-09-05 17:12:55 -070023565 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023566 the chances of getting inlined*/
23567 switch ( wdiLinkState )
23568 {
23569 case WDI_LINK_IDLE_STATE:
23570 return eSIR_LINK_IDLE_STATE;
23571
23572 case WDI_LINK_PREASSOC_STATE:
23573 return eSIR_LINK_PREASSOC_STATE;
23574
23575 case WDI_LINK_POSTASSOC_STATE:
23576 return eSIR_LINK_POSTASSOC_STATE;
23577
23578 case WDI_LINK_AP_STATE:
23579 return eSIR_LINK_AP_STATE;
23580
23581 case WDI_LINK_IBSS_STATE:
23582 return eSIR_LINK_IBSS_STATE;
23583
23584 case WDI_LINK_BTAMP_PREASSOC_STATE:
23585 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23586
23587 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23588 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23589
23590 case WDI_LINK_BTAMP_AP_STATE:
23591 return eSIR_LINK_BTAMP_AP_STATE;
23592
23593 case WDI_LINK_BTAMP_STA_STATE:
23594 return eSIR_LINK_BTAMP_STA_STATE;
23595
23596 case WDI_LINK_LEARN_STATE:
23597 return eSIR_LINK_LEARN_STATE;
23598
23599 case WDI_LINK_SCAN_STATE:
23600 return eSIR_LINK_SCAN_STATE;
23601
23602 case WDI_LINK_FINISH_SCAN_STATE:
23603 return eSIR_LINK_FINISH_SCAN_STATE;
23604
23605 case WDI_LINK_INIT_CAL_STATE:
23606 return eSIR_LINK_INIT_CAL_STATE;
23607
23608 case WDI_LINK_FINISH_CAL_STATE:
23609 return eSIR_LINK_FINISH_CAL_STATE;
23610
Jeff Johnson295189b2012-06-20 16:38:30 -070023611 case WDI_LINK_LISTEN_STATE:
23612 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023613
Gopichand Nakkala924e4552013-05-08 19:18:14 +053023614 case WDI_LINK_SEND_ACTION_STATE:
23615 return eSIR_LINK_SEND_ACTION_STATE;
23616
Jeff Johnson295189b2012-06-20 16:38:30 -070023617 default:
23618 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023619 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023620}
23621
Jeff Johnsone7245742012-09-05 17:12:55 -070023622/*Translate a STA Context from WDI into HAL*/
23623WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023624void
23625WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023626(
Jeff Johnson295189b2012-06-20 16:38:30 -070023627 tConfigStaParams* phalConfigSta,
23628 WDI_ConfigStaReqInfoType* pwdiConfigSta
23629)
23630{
23631 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023632#ifdef WLAN_FEATURE_11AC
23633 /* Get the Version 1 Handler */
23634 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23635 if (WDI_getFwWlanFeatCaps(DOT11AC))
23636 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023637 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023638 }
23639#endif
23640 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023641 the chances of getting inlined*/
23642
Jeff Johnsone7245742012-09-05 17:12:55 -070023643 wpalMemoryCopy(phalConfigSta->bssId,
23644 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23645
23646 wpalMemoryCopy(phalConfigSta->staMac,
23647 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023648
23649 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23650 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23651 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23652 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23653 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23654 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23655 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23656 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23657 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23658 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23659 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23660 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23661 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23662 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23663 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23664 phalConfigSta->action = pwdiConfigSta->wdiAction;
23665 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23666 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23667 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23668 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23669 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23670 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23671 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023672
Jeff Johnson295189b2012-06-20 16:38:30 -070023673 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23674
Jeff Johnsone7245742012-09-05 17:12:55 -070023675 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023676 pwdiConfigSta->wdiSupportedRates.opRateMode;
23677 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23678 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023679 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023680 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23681 }
23682 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23683 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023684 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023685 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23686 }
23687 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23688 {
23689 phalConfigSta->supportedRates.aniLegacyRates[i] =
23690 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23691 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023692 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023693 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23694 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23695 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023696 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023697 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23698 }
23699 phalConfigSta->supportedRates.rxHighestDataRate =
23700 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23701
Jeff Johnsone7245742012-09-05 17:12:55 -070023702#ifdef WLAN_FEATURE_11AC
23703 if(phalConfigSta_V1 != NULL)
23704 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023705 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23706 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23707 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23708 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023709 }
23710#endif
23711
Jeff Johnson295189b2012-06-20 16:38:30 -070023712 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023713
Jeff Johnsone7245742012-09-05 17:12:55 -070023714#ifdef WLAN_FEATURE_11AC
23715 if(phalConfigSta_V1 != NULL)
23716 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023717 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23718 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080023719 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080023720 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23721 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23722
Jeff Johnsone7245742012-09-05 17:12:55 -070023723 }
23724#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023725}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023726
23727/*Translate a Rate set info from WDI into HAL*/
23728WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023729WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023730(
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 tSirMacRateSet* pHalRateSet,
23732 WDI_RateSet* pwdiRateSet
23733)
23734{
Jeff Johnsone7245742012-09-05 17:12:55 -070023735 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23737
23738 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23739 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23740
23741 for ( i = 0; i < pHalRateSet->numRates; i++ )
23742 {
23743 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23744 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023745
Jeff Johnson295189b2012-06-20 16:38:30 -070023746}/*WDI_CopyWDIRateSetToHALRateSet*/
23747
23748
23749/*Translate an EDCA Parameter Record from WDI into HAL*/
23750WPT_STATIC WPT_INLINE void
23751WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023752(
Jeff Johnson295189b2012-06-20 16:38:30 -070023753 tSirMacEdcaParamRecord* phalEdcaParam,
23754 WDI_EdcaParamRecord* pWDIEdcaParam
23755)
23756{
Jeff Johnsone7245742012-09-05 17:12:55 -070023757 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023758 the chances of getting inlined*/
23759
23760 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23761 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23762 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23763 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23764
23765 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23766 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23767 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23768}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23769
23770
23771/*Copy a management frame header from WDI fmt into HAL fmt*/
23772WPT_STATIC WPT_INLINE void
23773WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23774(
23775 tSirMacMgmtHdr* pmacMgmtHdr,
23776 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23777)
23778{
23779 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23780 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23781 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23782 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23783 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23784 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23785 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23786 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23787 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23788 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23789 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23790
23791 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23792 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23793
Jeff Johnsone7245742012-09-05 17:12:55 -070023794 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023795 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023796 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023798 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023799 pwdiMacMgmtHdr->bssId, 6);
23800
23801 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23802 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23803 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23804
23805}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23806
23807
23808/*Copy config bss parameters from WDI fmt into HAL fmt*/
23809WPT_STATIC WPT_INLINE void
23810WDI_CopyWDIConfigBSSToHALConfigBSS
23811(
23812 tConfigBssParams* phalConfigBSS,
23813 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23814)
23815{
23816
23817 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023818#ifdef WLAN_FEATURE_11AC
23819 /* Get the Version 1 Handler */
23820 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23821 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023822 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023823#endif
23824
Jeff Johnson295189b2012-06-20 16:38:30 -070023825 wpalMemoryCopy( phalConfigBSS->bssId,
23826 pwdiConfigBSS->macBSSID,
23827 WDI_MAC_ADDR_LEN);
23828
23829#ifdef HAL_SELF_STA_PER_BSS
23830 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23831 pwdiConfigBSS->macSelfAddr,
23832 WDI_MAC_ADDR_LEN);
23833#endif
23834
23835 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23836
23837 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23838 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23839
Jeff Johnsone7245742012-09-05 17:12:55 -070023840 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023841 pwdiConfigBSS->ucShortSlotTimeSupported;
23842 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23843 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23844 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23845 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23846 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023847 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023848 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23849 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23850 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23851 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23852 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23853 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23854 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23855 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23856 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23857 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23858 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23859
Jeff Johnsone7245742012-09-05 17:12:55 -070023860 phalConfigBSS->htOperMode =
23861 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023862
23863 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23864 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23865 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23866 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23867
23868#ifdef WLAN_FEATURE_VOWIFI
23869 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23870#endif
23871
23872 /*! Used 32 as magic number because that is how the ssid is declared inside the
23873 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023874 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023875 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23876 pwdiConfigBSS->wdiSSID.ucLength : 32;
23877 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023878 pwdiConfigBSS->wdiSSID.sSSID,
23879 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023880
23881 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23882 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023883
Jeff Johnson295189b2012-06-20 16:38:30 -070023884 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23885 &pwdiConfigBSS->wdiRateSet);
23886
23887 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23888
23889 if(phalConfigBSS->edcaParamsValid)
23890 {
23891 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23892 &pwdiConfigBSS->wdiBEEDCAParams);
23893 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23894 &pwdiConfigBSS->wdiBKEDCAParams);
23895 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23896 &pwdiConfigBSS->wdiVIEDCAParams);
23897 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23898 &pwdiConfigBSS->wdiVOEDCAParams);
23899 }
23900
Jeff Johnsone7245742012-09-05 17:12:55 -070023901 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023902
23903 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23904
23905#ifdef WLAN_FEATURE_VOWIFI_11R
23906
Jeff Johnsone7245742012-09-05 17:12:55 -070023907 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023908 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023909
Jeff Johnson295189b2012-06-20 16:38:30 -070023910 if( phalConfigBSS->extSetStaKeyParamValid )
23911 {
23912 /*-----------------------------------------------------------------------
23913 Copy the STA Key parameters into the HAL message
23914 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023915 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023916 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23917
Jeff Johnsone7245742012-09-05 17:12:55 -070023918 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023919 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23920
23921 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23922
23923 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23924
23925 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23926
Jeff Johnson295189b2012-06-20 16:38:30 -070023927 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23928 keyIndex++)
23929 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023930 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023931 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23932 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23933 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23934 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23935 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23936 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023937 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023938 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023939 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023941 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023942 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23943 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023944 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023945 WDI_MAX_KEY_LENGTH);
23946 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023947 }
23948 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23949 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023950 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023951 sizeof(phalConfigBSS->extSetStaKeyParam) );
23952 }
23953
23954#endif /*WLAN_FEATURE_VOWIFI_11R*/
23955
Jeff Johnsone7245742012-09-05 17:12:55 -070023956#ifdef WLAN_FEATURE_11AC
23957 if(phalConfigBSS_V1 != NULL)
23958 {
23959 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23960 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23961 }
23962#endif
23963
Jeff Johnson295189b2012-06-20 16:38:30 -070023964}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23965
23966
Jeff Johnsone7245742012-09-05 17:12:55 -070023967/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023968 pointed to by user data */
23969WPT_STATIC WPT_INLINE void
23970WDI_ExtractRequestCBFromEvent
23971(
23972 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023973 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023974 void** ppUserData
23975)
23976{
23977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23978 switch ( pEvent->wdiRequest )
23979 {
23980 case WDI_START_REQ:
23981 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23982 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23983 break;
23984 case WDI_STOP_REQ:
23985 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23986 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23987 break;
23988 case WDI_INIT_SCAN_REQ:
23989 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23990 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23991 break;
23992 case WDI_START_SCAN_REQ:
23993 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23994 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23995 break;
23996 case WDI_END_SCAN_REQ:
23997 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23998 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23999 break;
24000 case WDI_FINISH_SCAN_REQ:
24001 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24002 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
24003 break;
24004 case WDI_JOIN_REQ:
24005 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24006 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
24007 break;
24008 case WDI_CONFIG_BSS_REQ:
24009 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24010 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
24011 break;
24012 case WDI_DEL_BSS_REQ:
24013 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24014 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
24015 break;
24016 case WDI_POST_ASSOC_REQ:
24017 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24018 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
24019 break;
24020 case WDI_DEL_STA_REQ:
24021 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24022 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
24023 break;
24024 case WDI_DEL_STA_SELF_REQ:
24025 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24026 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
24027 break;
24028
24029 case WDI_SET_BSS_KEY_REQ:
24030 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24031 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24032 break;
24033 case WDI_RMV_BSS_KEY_REQ:
24034 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24035 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24036 break;
24037 case WDI_SET_STA_KEY_REQ:
24038 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24039 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24040 break;
24041 case WDI_RMV_STA_KEY_REQ:
24042 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24043 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24044 break;
24045 case WDI_ADD_TS_REQ:
24046 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24047 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
24048 break;
24049 case WDI_DEL_TS_REQ:
24050 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24051 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
24052 break;
24053 case WDI_UPD_EDCA_PRMS_REQ:
24054 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24055 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
24056 break;
24057 case WDI_ADD_BA_SESSION_REQ:
24058 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24059 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
24060 break;
24061 case WDI_DEL_BA_REQ:
24062 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24063 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
24064 break;
24065#ifdef FEATURE_WLAN_CCX
24066 case WDI_TSM_STATS_REQ:
24067 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24068 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
24069 break;
24070#endif
24071 case WDI_CH_SWITCH_REQ:
24072 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24073 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
24074 break;
24075 case WDI_CONFIG_STA_REQ:
24076 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24077 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
24078 break;
24079 case WDI_SET_LINK_ST_REQ:
24080 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24081 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
24082 break;
24083 case WDI_GET_STATS_REQ:
24084 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24085 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
24086 break;
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024087#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
24088 case WDI_GET_ROAM_RSSI_REQ:
24089 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24090 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
24091 break;
24092#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024093 case WDI_UPDATE_CFG_REQ:
24094 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24095 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
24096 break;
24097 case WDI_ADD_BA_REQ:
24098 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24099 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
24100 break;
24101 case WDI_TRIGGER_BA_REQ:
24102 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24103 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
24104 break;
24105 case WDI_UPD_BCON_PRMS_REQ:
24106 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24107 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
24108 break;
24109 case WDI_SND_BCON_REQ:
24110 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24111 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
24112 break;
24113 case WDI_ENTER_BMPS_REQ:
24114 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24115 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24116 break;
24117 case WDI_EXIT_BMPS_REQ:
24118 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24119 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24120 break;
24121 case WDI_ENTER_UAPSD_REQ:
24122 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24123 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24124 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024125 case WDI_EXIT_UAPSD_REQ:
24126 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24127 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24128 break;
24129 case WDI_SET_UAPSD_PARAM_REQ:
24130 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24131 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24132 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024133 case WDI_UPDATE_UAPSD_PARAM_REQ:
24134 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24135 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24136 break;
24137 case WDI_CONFIGURE_RXP_FILTER_REQ:
24138 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24139 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24140 break;
24141 case WDI_SET_BEACON_FILTER_REQ:
24142 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24143 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24144 break;
24145 case WDI_REM_BEACON_FILTER_REQ:
24146 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24147 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024148 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024149 case WDI_SET_RSSI_THRESHOLDS_REQ:
24150 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24151 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24152 break;
24153 case WDI_HOST_OFFLOAD_REQ:
24154 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24155 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24156 break;
24157 case WDI_WOWL_ADD_BC_PTRN_REQ:
24158 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24159 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24160 break;
24161 case WDI_WOWL_DEL_BC_PTRN_REQ:
24162 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24163 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24164 break;
24165 case WDI_WOWL_ENTER_REQ:
24166 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24167 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24168 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024169 case WDI_WOWL_EXIT_REQ:
24170 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24171 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24172 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024173 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24174 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24175 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24176 break;
24177 case WDI_FLUSH_AC_REQ:
24178 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24179 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24180 break;
24181 case WDI_BTAMP_EVENT_REQ:
24182 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24183 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24184 break;
24185 case WDI_KEEP_ALIVE_REQ:
24186 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24187 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24188 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024189#if defined FEATURE_WLAN_SCAN_PNO
24190 case WDI_SET_PREF_NETWORK_REQ:
24191 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24192 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24193 break;
24194 case WDI_SET_RSSI_FILTER_REQ:
24195 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24196 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24197 break;
24198 case WDI_UPDATE_SCAN_PARAMS_REQ:
24199 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24200 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24201 break;
24202#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024203 case WDI_SET_TX_PER_TRACKING_REQ:
24204 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24205 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024206 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024207#if defined WLAN_FEATURE_PACKET_FILTERING
24208 case WDI_8023_MULTICAST_LIST_REQ:
24209 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24210 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24211 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024212 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24213 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24214 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24215 break;
24216 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24217 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24218 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24219 break;
24220 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24221 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24222 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24223 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024224#endif
24225 case WDI_SET_POWER_PARAMS_REQ:
24226 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24227 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24228 break;
24229#if defined WLAN_FEATURE_GTK_OFFLOAD
24230 case WDI_GTK_OFFLOAD_REQ:
24231 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24232 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24233 break;
24234 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24235 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24236 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24237 break;
24238#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024239
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 default:
24241 *ppfnReqCB = NULL;
24242 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024243 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024244 }
24245}/*WDI_ExtractRequestCBFromEvent*/
24246
24247
24248/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024249 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024250 frame xtl is enabled for a particular STA.
24251
24252 WDI_PostAssocReq must have been called.
24253
Jeff Johnsone7245742012-09-05 17:12:55 -070024254 @param uSTAIdx: STA index
24255
Jeff Johnson295189b2012-06-20 16:38:30 -070024256 @see WDI_PostAssocReq
24257 @return Result of the function call
24258*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024259wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024260WDI_IsHwFrameTxTranslationCapable
24261(
24262 wpt_uint8 uSTAIdx
24263)
24264{
Jeff Johnsone7245742012-09-05 17:12:55 -070024265 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024266 uma value*/
24267 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024268 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024269 ------------------------------------------------------------------------*/
24270 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24271 {
24272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24273 "WDI API call before module is initialized - Fail request");
24274
Jeff Johnsone7245742012-09-05 17:12:55 -070024275 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024276 }
24277
Gopichand Nakkala976e3252013-01-03 15:45:56 -080024278#ifdef WLAN_SOFTAP_VSTA_FEATURE
24279 if (IS_VSTA_IDX(uSTAIdx))
24280 {
24281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24282 "STA %d is a Virtual STA, "
24283 "HW frame translation disabled", uSTAIdx);
24284 return eWLAN_PAL_FALSE;
24285 }
24286#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024287
Jeff Johnson295189b2012-06-20 16:38:30 -070024288 return gWDICb.bFrameTransEnabled;
24289}/*WDI_IsHwFrameTxTranslationCapable*/
24290
24291#ifdef FEATURE_WLAN_SCAN_PNO
24292/**
24293 @brief WDI_SetPreferredNetworkList
24294
Jeff Johnsone7245742012-09-05 17:12:55 -070024295 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024296 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024297
Jeff Johnson295189b2012-06-20 16:38:30 -070024298 wdiPNOScanCb: callback for passing back the response
24299 of the Set PNO operation received from the
24300 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024301
Jeff Johnson295189b2012-06-20 16:38:30 -070024302 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024303 callback
24304
Jeff Johnson295189b2012-06-20 16:38:30 -070024305 @return Result of the function call
24306*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024307WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024308WDI_SetPreferredNetworkReq
24309(
24310 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24311 WDI_PNOScanCb wdiPNOScanCb,
24312 void* pUserData
24313)
24314{
24315 WDI_EventInfoType wdiEventData = {{0}};
24316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24317
24318 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024319 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024320 ------------------------------------------------------------------------*/
24321 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24322 {
24323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24324 "WDI API call before module is initialized - Fail request");
24325
Jeff Johnsone7245742012-09-05 17:12:55 -070024326 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024327 }
24328
24329 /*------------------------------------------------------------------------
24330 Fill in Event data and post to the Main FSM
24331 ------------------------------------------------------------------------*/
24332 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024333 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024334 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024335 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024336 wdiEventData.pUserData = pUserData;
24337
24338 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24339}
24340
24341
24342/**
24343 @brief WDI_SetRssiFilterReq
24344
Jeff Johnsone7245742012-09-05 17:12:55 -070024345 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024346 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024347
Jeff Johnson295189b2012-06-20 16:38:30 -070024348 wdiRssiFilterCb: callback for passing back the response
24349 of the Set RSSI Filter operation received from the
24350 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024351
Jeff Johnson295189b2012-06-20 16:38:30 -070024352 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024353 callback
24354
Jeff Johnson295189b2012-06-20 16:38:30 -070024355 @return Result of the function call
24356*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024357WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024358WDI_SetRssiFilterReq
24359(
24360 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24361 WDI_RssiFilterCb wdiRssiFilterCb,
24362 void* pUserData
24363)
24364{
24365 WDI_EventInfoType wdiEventData = {{0}};
24366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24367
24368 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024369 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024370 ------------------------------------------------------------------------*/
24371 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24372 {
24373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24374 "WDI API call before module is initialized - Fail request");
24375
Jeff Johnsone7245742012-09-05 17:12:55 -070024376 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024377 }
24378
24379 /*------------------------------------------------------------------------
24380 Fill in Event data and post to the Main FSM
24381 ------------------------------------------------------------------------*/
24382 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024383 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024384 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024385 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024386 wdiEventData.pUserData = pUserData;
24387
24388 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24389}/*WDI_SetRssiFilterReq*/
24390
24391/**
24392 @brief WDI_UpdateScanParamsReq
24393
Jeff Johnsone7245742012-09-05 17:12:55 -070024394 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024395 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024396
Jeff Johnson295189b2012-06-20 16:38:30 -070024397 wdiUpdateScanParamsCb: callback for passing back the response
24398 of the Set PNO operation received from the
24399 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024400
Jeff Johnson295189b2012-06-20 16:38:30 -070024401 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024402 callback
24403
Jeff Johnson295189b2012-06-20 16:38:30 -070024404 @return Result of the function call
24405*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024406WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024407WDI_UpdateScanParamsReq
24408(
24409 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24410 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24411 void* pUserData
24412)
24413{
24414 WDI_EventInfoType wdiEventData = {{0}};
24415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24416
24417 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024418 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024419 ------------------------------------------------------------------------*/
24420 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24421 {
24422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24423 "WDI API call before module is initialized - Fail request");
24424
Jeff Johnsone7245742012-09-05 17:12:55 -070024425 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024426 }
24427
24428 /*------------------------------------------------------------------------
24429 Fill in Event data and post to the Main FSM
24430 ------------------------------------------------------------------------*/
24431 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024432 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024433 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024434 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024435 wdiEventData.pUserData = pUserData;
24436
24437 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24438}
24439
24440/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024441 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024442 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024443
24444 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024445 pwdiPNOScanReqParams: pointer to the info received
24446 from upper layers
24447 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024448 and its size
24449
Jeff Johnson295189b2012-06-20 16:38:30 -070024450 @return Result of the function call
24451*/
24452
24453WDI_Status
24454WDI_PackPreferredNetworkList
24455(
24456 WDI_ControlBlockType* pWDICtx,
24457 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24458 wpt_uint8** ppSendBuffer,
24459 wpt_uint16* pSize
24460)
24461{
Jeff Johnsone7245742012-09-05 17:12:55 -070024462 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024463 wpt_uint16 usDataOffset = 0;
24464 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024465 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024466 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024467 /*-----------------------------------------------------------------------
24468 Get message buffer
24469 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024470 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024471 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024472 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024473 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024474 {
24475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024476 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024477 pwdiPNOScanReqParams);
24478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024480 }
24481
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024482 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24483
Jeff Johnson295189b2012-06-20 16:38:30 -070024484 /*-------------------------------------------------------------------------
24485 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24486 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024487 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024488 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024489 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024490 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24491
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024492 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024493 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024494 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024495 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024496 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24497
24498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024499 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024500 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24501 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24502 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24503
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024504 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024505 {
24506 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024507 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024508 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24509
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024510 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024511 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024512 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024513
24514 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024515 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024516 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024517
24518 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024519 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024520 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024521
Jeff Johnsone7245742012-09-05 17:12:55 -070024522 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024523 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024524 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024525 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24526 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24527 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24528 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024529
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024530 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024531 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024532 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024533
24534 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024535 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024536 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24537
24538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024539 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024540 pPrefNetwListParams->aNetworks[i].ssId.length,
24541 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024542 }
24543
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024544 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024545 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024546 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24547 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24548 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24549
24550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024551 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024552 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024553 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24554 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24555
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024556 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024557 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024558 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024559 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024560 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024561 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24562 }
24563
24564 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024565 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024566 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24567 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24568 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024569 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024570
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024571 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024572 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024573 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024574
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024575 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024576 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24577 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24578 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024579 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024580
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024581 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024582 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024583 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024584
24585 /*Set the output values*/
24586 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024587 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024588
24589 return WDI_STATUS_SUCCESS;
24590}/*WDI_PackPreferredNetworkList*/
24591
24592/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024593 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024594 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024595
24596 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024597 pwdiPNOScanReqParams: pointer to the info received
24598 from upper layers
24599 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024600 and its size
24601
Jeff Johnson295189b2012-06-20 16:38:30 -070024602 @return Result of the function call
24603*/
24604
24605WDI_Status
24606WDI_PackPreferredNetworkListNew
24607(
24608 WDI_ControlBlockType* pWDICtx,
24609 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24610 wpt_uint8** ppSendBuffer,
24611 wpt_uint16* pSize
24612)
24613{
Jeff Johnsone7245742012-09-05 17:12:55 -070024614 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024615 wpt_uint16 usDataOffset = 0;
24616 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024617 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024618 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024619
24620 /*-----------------------------------------------------------------------
24621 Get message buffer
24622 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024623 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024624 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024625 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024626 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024627 {
24628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024629 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024630 pwdiPNOScanReqParams);
24631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024633 }
24634
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024635 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24636
Jeff Johnson295189b2012-06-20 16:38:30 -070024637 /*-------------------------------------------------------------------------
24638 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24639 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024640 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024641 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024642 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024643 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24644
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024645 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024646 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024647 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024648 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024649 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24650
24651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024652 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024653 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24654 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24655 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24656
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024657 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024658 {
24659 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024660 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024661 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24662
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024663 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024664 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024665 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024666
24667 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024668 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024669 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024670
24671 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024672 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024673 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024674
24675 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024676 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024677 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024678
Jeff Johnsone7245742012-09-05 17:12:55 -070024679 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024680 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024681 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024682 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24683
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024684 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024685 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024686 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024687
24688 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024689 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024690 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24691
24692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024693 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024694 pPrefNetwListParams->aNetworks[i].ssId.length,
24695 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024696 }
24697
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024698 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024699 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024700 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24701 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24702 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24703
24704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024705 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024706 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024707 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24708 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24709
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024710 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024711 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024712 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024713 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024714 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024715 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24716 }
24717
24718 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024719 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024720 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24721 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24722 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024723 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024724
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024725 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024726 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024727 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024728
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024729 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024730 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24731 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24732 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024733 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024734
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024735 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024736 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024737 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024738
Jeff Johnson295189b2012-06-20 16:38:30 -070024739
24740 /*Set the output values*/
24741 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024742 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024743
24744 return WDI_STATUS_SUCCESS;
24745}/*WDI_PackPreferredNetworkListNew*/
24746
24747/**
24748 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024749
24750 @param pWDICtx: pointer to the WLAN DAL context
24751 pEventData: pointer to the event information structure
24752
Jeff Johnson295189b2012-06-20 16:38:30 -070024753 @return Result of the function call
24754*/
24755WDI_Status
24756WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024757(
Jeff Johnson295189b2012-06-20 16:38:30 -070024758 WDI_ControlBlockType* pWDICtx,
24759 WDI_EventInfoType* pEventData
24760)
24761{
24762 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24763 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024764 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024765 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024766 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024767
24768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024769 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024770 -------------------------------------------------------------------------*/
24771 if (( NULL == pEventData ) ||
24772 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24773 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24774 {
24775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024779 }
24780
24781 /*-------------------------------------------------------------------------
24782 Pack the PNO request structure based on version
24783 -------------------------------------------------------------------------*/
24784 if ( pWDICtx->wdiPNOVersion > 0 )
24785 {
24786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024787 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024788 pWDICtx->wdiPNOVersion);
24789
24790 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24791 &pSendBuffer, &usSendSize);
24792 }
24793 else
24794 {
24795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024796 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024797 pWDICtx->wdiPNOVersion);
24798
24799 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24800 &pSendBuffer, &usSendSize);
24801 }
24802
24803 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24804 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24805 {
24806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024807 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024809 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024810 }
24811
24812 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024813 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024814
24815 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024816 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024817 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024818 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24819 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024820}
24821
24822/**
24823 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024824
24825 @param pWDICtx: pointer to the WLAN DAL context
24826 pEventData: pointer to the event information structure
24827
Jeff Johnson295189b2012-06-20 16:38:30 -070024828 @see
24829 @return Result of the function call
24830*/
24831WDI_Status
24832WDI_ProcessSetRssiFilterReq
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_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24839 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024840 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024841 wpt_uint16 usDataOffset = 0;
24842 wpt_uint16 usSendSize = 0;
24843 wpt_uint8 ucRssiThreshold;
24844
24845 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024846 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024847 -------------------------------------------------------------------------*/
24848 if (( NULL == pEventData ) ||
24849 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24850 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24851 {
24852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024853 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024856 }
24857
24858 /*-----------------------------------------------------------------------
24859 Get message buffer
24860 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024861 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024862 sizeof(ucRssiThreshold),
24863 &pSendBuffer, &usDataOffset, &usSendSize))||
24864 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24865 {
24866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024867 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024868 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024871 }
24872
24873 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24874
Jeff Johnsone7245742012-09-05 17:12:55 -070024875 wpalMemoryCopy( pSendBuffer+usDataOffset,
24876 &ucRssiThreshold,
24877 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024878
24879 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024880 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024881
24882 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024883 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024884 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024885 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24886 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024887}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024888#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24889/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024890 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024891
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024892 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024893 by the Device Interface
24894
24895 wdiRoamOffloadScancb: callback for passing back the response
24896 of the Roam Candidate Lookup Req operation received from the
24897 device
24898
24899 pUserData: user data will be passed back with the
24900 callback
24901 @return Result of the function call
24902*/
24903WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024904WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024905(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024906 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024907 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24908 void* pUserData
24909)
24910{
24911 WDI_EventInfoType wdiEventData = {{0}};
24912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24913
24914 /*------------------------------------------------------------------------
24915 Sanity Check
24916 ------------------------------------------------------------------------*/
24917 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24918 {
24919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24920 "WDI API call before module is initialized - Fail request");
24921
24922 return WDI_STATUS_E_NOT_ALLOWED;
24923 }
24924
24925 /*------------------------------------------------------------------------
24926 Fill in Event data and post to the Main FSM
24927 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024928 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24929 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24930 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024931 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24932 wdiEventData.pUserData = pUserData;
24933
24934 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24935}
24936
24937void
24938WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24939{
24940 switch (wdiEdType)
24941 {
24942 case WDI_ED_NONE:
24943 *EdType = eED_NONE;
24944 break;
24945 case WDI_ED_WEP40:
24946 case WDI_ED_WEP104:
24947 *EdType = eED_WEP;
24948 break;
24949 case WDI_ED_TKIP:
24950 *EdType = eED_TKIP;
24951 break;
24952 case WDI_ED_CCMP:
24953#ifdef WLAN_FEATURE_11W
24954 case WDI_ED_AES_128_CMAC:
24955#endif
24956 *EdType = eED_CCMP;
24957 break;
24958#ifdef FEATURE_WLAN_WAPI
24959 case WDI_ED_WPI:
24960 *EdType = eED_WPI;
24961 break;
24962#endif
24963 case WDI_ED_ANY:
24964 *EdType = eED_ANY;
24965 break;
24966
24967 default:
24968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24969 "%s: Unknown Encryption Type", __func__);
24970 break;
24971 }
24972}
24973
24974/**
24975 @brief Helper function to pack Start Roam Candidate Lookup
24976 Request parameters
24977
24978 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024979 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024980 from upper layers
24981 ppSendBuffer, pSize - out pointers of the packed buffer
24982 and its size
24983
24984 @return Result of the function call
24985*/
24986
24987WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024988WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024989(
24990 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024991 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024992 wpt_uint8** ppSendBuffer,
24993 wpt_uint16* pSize
24994)
24995{
24996 wpt_uint8* pSendBuffer = NULL;
24997 wpt_uint16 usDataOffset = 0;
24998 wpt_uint16 usSendSize = 0;
24999 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
25000 wpt_uint8 i;
25001 /*-----------------------------------------------------------------------
25002 Get message buffer
25003 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025004 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025005 sizeof(tRoamCandidateListParams),
25006 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025007 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025008 {
25009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025010 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025011 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025012 WDI_ASSERT(0);
25013 return WDI_STATUS_E_FAILURE;
25014 }
25015 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025016 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025017 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025018 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025019 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025020 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025021 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025022 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025023 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025024 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025025 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025026
25027 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025028 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025029 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025030 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025031 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
25032 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025033 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
25034 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
25035 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
25036 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
25037 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080025038 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025039 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080025040 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025041 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
25042 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
25043 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
25044 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
25045 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
25046 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
25047 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
25048 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025049 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025050 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
25051 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
25052 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025053
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
25055 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
25056 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
25057 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
25058 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
25059 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080025060 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025061 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
25062 pRoamCandidateListParams->RoamScanOffloadEnabled,
25063 pRoamCandidateListParams->Command,
25064 pRoamCandidateListParams->StartScanReason,
25065 pRoamCandidateListParams->NeighborScanTimerPeriod,
25066 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
25067 pRoamCandidateListParams->NeighborScanChannelMinTime,
25068 pRoamCandidateListParams->NeighborScanChannelMaxTime,
25069 pRoamCandidateListParams->EmptyRefreshScanPeriod,
25070 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
25071 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
25072 pRoamCandidateListParams->ConnectedNetwork.authentication,
25073 pRoamCandidateListParams->ConnectedNetwork.encryption,
25074 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
25075 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
25076 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025077 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025078 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025079 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025080 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025081 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25082 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025083 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025084 pRoamCandidateListParams->us24GProbeSize);
25085 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025086 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025087 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025088 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025089 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25090 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025091 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025092 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025093 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
25094 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
25095 pRoamCandidateListParams->nProbes =
25096 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
25097 pRoamCandidateListParams->HomeAwayTime =
25098 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
25099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025100 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
25101 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025103 }
25104
25105
25106 /*Set the output values*/
25107 *ppSendBuffer = pSendBuffer;
25108 *pSize = usSendSize;
25109 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025110}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025111
25112/**
25113 @brief Process Start Roam Candidate Lookup Request function
25114
25115 @param pWDICtx: pointer to the WLAN DAL context
25116 pEventData: pointer to the event information structure
25117
25118 @return Result of the function call
25119*/
25120WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025121WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025122(
25123 WDI_ControlBlockType* pWDICtx,
25124 WDI_EventInfoType* pEventData
25125)
25126{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025127 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025128 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25129 wpt_uint8* pSendBuffer = NULL;
25130 wpt_uint16 usSendSize = 0;
25131 WDI_Status wdiStatus;
25132 /*-------------------------------------------------------------------------
25133 Sanity check
25134 -------------------------------------------------------------------------*/
25135 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025136 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025137 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25138 {
25139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25140 "%s: Invalid parameters", __func__);
25141 WDI_ASSERT(0);
25142 return WDI_STATUS_E_FAILURE;
25143 }
25144
25145 /*-------------------------------------------------------------------------
25146 Pack the Start Roam Candidate Lookup request structure based on version
25147 -------------------------------------------------------------------------*/
25148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25149 "%s: Packing Roam Candidate Lookup request ", __func__);
25150
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025151 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025152 &pSendBuffer, &usSendSize);
25153
25154 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25155 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25156 {
25157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25158 "%s: failed to pack request parameters", __func__);
25159 WDI_ASSERT(0);
25160 return wdiStatus;
25161 }
25162
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025163 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25164 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025165
25166 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025167 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025168 -------------------------------------------------------------------------*/
25169 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025170 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025171}
25172
25173/**
25174 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25175 response is being received over the bus from HAL)
25176
25177 @param pWDICtx: pointer to the WLAN DAL context
25178 pEventData: pointer to the event information structure
25179
25180 @see
25181 @return Result of the function call
25182*/
25183WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025184WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025185(
25186 WDI_ControlBlockType* pWDICtx,
25187 WDI_EventInfoType* pEventData
25188)
25189{
25190 WDI_Status wdiStatus;
25191 eHalStatus halStatus;
25192 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25193
25194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25195
25196 /*-------------------------------------------------------------------------
25197 Sanity check
25198 -------------------------------------------------------------------------*/
25199 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25200 ( NULL == pEventData->pEventData ))
25201 {
25202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25203 "%s: Invalid parameters", __func__);
25204 WDI_ASSERT(0);
25205 return WDI_STATUS_E_FAILURE;
25206 }
25207
25208 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25209
25210 /*-------------------------------------------------------------------------
25211 Extract response and send it to UMAC
25212 -------------------------------------------------------------------------*/
25213 halStatus = *((eHalStatus*)pEventData->pEventData);
25214 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25215
25216 /*Notify UMAC*/
25217 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25218
25219 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025220}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025221#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025222
25223/**
25224 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025225
25226 @param pWDICtx: pointer to the WLAN DAL context
25227 pEventData: pointer to the event information structure
25228
Jeff Johnson295189b2012-06-20 16:38:30 -070025229 @see
25230 @return Result of the function call
25231*/
25232WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025233WDI_PackUpdateScanParamsReq
25234(
25235 WDI_ControlBlockType* pWDICtx,
25236 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25237 wpt_uint8** ppSendBuffer,
25238 wpt_uint16* pSize
25239)
25240{
25241 wpt_uint8* pSendBuffer = NULL;
25242 wpt_uint16 usDataOffset = 0;
25243 wpt_uint16 usSendSize = 0;
25244 tUpdateScanParams updateScanParams = {0};
25245
25246
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025248 "Begin WDI Update Scan Parameters Old Style Params");
25249 /*-----------------------------------------------------------------------
25250 Get message buffer
25251 -----------------------------------------------------------------------*/
25252 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25253 sizeof(updateScanParams),
25254 &pSendBuffer, &usDataOffset, &usSendSize))||
25255 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25256 {
25257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025258 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025259 pwdiUpdateScanParams);
25260 WDI_ASSERT(0);
25261 return WDI_STATUS_E_FAILURE;
25262 }
25263
25264 //
25265 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25266 //
25267
25268 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25269 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25270
25271 updateScanParams.ucChannelCount =
25272 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25273 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25274 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25275 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
25276
25277 wpalMemoryCopy( updateScanParams.aChannels,
25278 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25279 updateScanParams.ucChannelCount);
25280
25281
25282 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25283 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25284 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25285 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25286 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25287
25288 wpalMemoryCopy( pSendBuffer+usDataOffset,
25289 &updateScanParams,
25290 sizeof(updateScanParams));
25291
25292 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25293 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25294
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025296 "End Update Scan Parameters Old Style");
25297
25298 /*Set the output values*/
25299 *ppSendBuffer = pSendBuffer;
25300 *pSize = usSendSize;
25301
25302 return WDI_STATUS_SUCCESS;
25303}
25304
25305/**
25306 @brief Process Update Scan Params function
25307
25308 @param pWDICtx: pointer to the WLAN DAL context
25309 pEventData: pointer to the event information structure
25310
25311 @see
25312 @return Result of the function call
25313*/
25314WDI_Status
25315WDI_PackUpdateScanParamsReqEx
25316(
25317 WDI_ControlBlockType* pWDICtx,
25318 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25319 wpt_uint8** ppSendBuffer,
25320 wpt_uint16* pSize
25321)
25322{
25323 wpt_uint8* pSendBuffer = NULL;
25324 wpt_uint16 usDataOffset = 0;
25325 wpt_uint16 usSendSize = 0;
25326 tUpdateScanParamsEx updateScanParams = {0};
25327
25328
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025329 /*-----------------------------------------------------------------------
25330 Get message buffer
25331 -----------------------------------------------------------------------*/
25332 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25333 sizeof(updateScanParams),
25334 &pSendBuffer, &usDataOffset, &usSendSize))||
25335 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25336 {
25337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025338 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025339 pwdiUpdateScanParams);
25340 WDI_ASSERT(0);
25341 return WDI_STATUS_E_FAILURE;
25342 }
25343
25344 //
25345 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25346 //
25347
25348 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25349 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25350
25351 updateScanParams.ucChannelCount =
25352 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25353 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25354 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25355 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25356
25357 wpalMemoryCopy( updateScanParams.aChannels,
25358 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25359 updateScanParams.ucChannelCount);
25360
25361
25362 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25363 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25364 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25365 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25366 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25367
25368 wpalMemoryCopy( pSendBuffer+usDataOffset,
25369 &updateScanParams,
25370 sizeof(updateScanParams));
25371
25372 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25373 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25374
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025375 /*Set the output values*/
25376 *ppSendBuffer = pSendBuffer;
25377 *pSize = usSendSize;
25378
25379 return WDI_STATUS_SUCCESS;
25380}
25381
25382/**
25383 @brief Process Update Scan Params function
25384
25385 @param pWDICtx: pointer to the WLAN DAL context
25386 pEventData: pointer to the event information structure
25387
25388 @see
25389 @return Result of the function call
25390*/
25391WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025392WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025393(
Jeff Johnson295189b2012-06-20 16:38:30 -070025394 WDI_ControlBlockType* pWDICtx,
25395 WDI_EventInfoType* pEventData
25396)
25397{
25398 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25399 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025400 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025401 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025402 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025403
25404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025405 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025406 -------------------------------------------------------------------------*/
25407 if (( NULL == pEventData ) ||
25408 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25409 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25410 {
25411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025412 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025413 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025414 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025415 }
25416
25417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25418 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025419
25420 //
25421 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25422 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025423 if ( pWDICtx->wlanVersion.revision < 1 )
25424 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025425 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025426 &pSendBuffer, &usSendSize);
25427 }
25428 else
25429 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025430 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25431 &pSendBuffer, &usSendSize);
25432 }
25433
25434 if(WDI_STATUS_SUCCESS != wdiStatus)
25435 {
25436 //memory allocation failed
25437 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025438 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025439
Jeff Johnson295189b2012-06-20 16:38:30 -070025440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025441 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025442 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025443 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025444 wdiUpdateScanParamsCb, pEventData->pUserData,
25445 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025446}
25447
25448/**
25449 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025450
25451 @param pWDICtx: pointer to the WLAN DAL context
25452 pEventData: pointer to the event information structure
25453
Jeff Johnson295189b2012-06-20 16:38:30 -070025454 @see
25455 @return Result of the function call
25456*/
25457WDI_Status
25458WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025459(
Jeff Johnson295189b2012-06-20 16:38:30 -070025460 WDI_ControlBlockType* pWDICtx,
25461 WDI_EventInfoType* pEventData
25462)
25463{
Srikant Kuppa066904f2013-05-07 13:56:02 -070025464 WDI_LowLevelIndType wdiInd;
25465 tpPrefNetwFoundParams pNetwFoundParams;
25466 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025467
25468
25469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025470 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025471 -------------------------------------------------------------------------*/
25472 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25473 ( NULL == pEventData->pEventData ))
25474 {
25475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025476 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025477 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025479 }
25480
25481 /*-------------------------------------------------------------------------
25482 Extract indication and send it to UMAC
25483 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070025484 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25485
25486 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25487 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25488 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25489
25490 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25491 {
25492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25493 "%s: fail to allocate memory", __func__);
25494 return WDI_STATUS_MEM_FAILURE;
25495 }
25496
25497 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25498 (pNetwFoundParams->ssId.length < 32 )?
25499 pNetwFoundParams->ssId.length : 32;
25500 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25501 pNetwFoundParams->ssId.ssId,
25502 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25503 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25504 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25505 pNetwFoundParams->frameLength;
25506 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25507 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25508 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025509
25510 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025511 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025512
Jeff Johnson295189b2012-06-20 16:38:30 -070025513 // DEBUG
25514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang56002a22013-08-28 17:55:56 -070025515 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025516 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070025517 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025518 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070025519 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025520 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25521
ltimariub77f24b2013-01-24 18:54:33 -080025522 if ( pWDICtx->wdiLowLevelIndCB )
25523 {
25524 /*Notify UMAC*/
25525 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25526 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025527
25528 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025529}
25530
25531/**
25532 @brief Process PNO Rsp function (called when a
25533 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025534
25535 @param pWDICtx: pointer to the WLAN DAL context
25536 pEventData: pointer to the event information structure
25537
Jeff Johnson295189b2012-06-20 16:38:30 -070025538 @see
25539 @return Result of the function call
25540*/
25541WDI_Status
25542WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025543(
Jeff Johnson295189b2012-06-20 16:38:30 -070025544 WDI_ControlBlockType* pWDICtx,
25545 WDI_EventInfoType* pEventData
25546)
25547{
25548 WDI_Status wdiStatus;
25549 eHalStatus halStatus;
25550 WDI_PNOScanCb wdiPNOScanCb = NULL;
25551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25552
25553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025554 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025555 -------------------------------------------------------------------------*/
25556 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25557 ( NULL == pEventData->pEventData ))
25558 {
25559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025560 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025563 }
25564
25565
Jeff Johnsone7245742012-09-05 17:12:55 -070025566 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025567
25568 /*-------------------------------------------------------------------------
25569 Extract response and send it to UMAC
25570 -------------------------------------------------------------------------*/
25571 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025572 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025573
25574 /*Notify UMAC*/
25575 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25576
Jeff Johnsone7245742012-09-05 17:12:55 -070025577 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025578}/*WDI_ProcessSetPreferredNetworkRsp*/
25579
25580/**
25581 @brief Process RSSI Filter Rsp function (called when a
25582 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025583
25584 @param pWDICtx: pointer to the WLAN DAL context
25585 pEventData: pointer to the event information structure
25586
Jeff Johnson295189b2012-06-20 16:38:30 -070025587 @see
25588 @return Result of the function call
25589*/
25590WDI_Status
25591WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025592(
Jeff Johnson295189b2012-06-20 16:38:30 -070025593 WDI_ControlBlockType* pWDICtx,
25594 WDI_EventInfoType* pEventData
25595)
25596{
25597 WDI_Status wdiStatus;
25598 eHalStatus halStatus;
25599 WDI_RssiFilterCb wdiRssiFilterCb;
25600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25601
25602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025603 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025604 -------------------------------------------------------------------------*/
25605 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25606 ( NULL == pEventData->pEventData ))
25607 {
25608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025612 }
25613
Jeff Johnsone7245742012-09-05 17:12:55 -070025614 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025615
25616 /*-------------------------------------------------------------------------
25617 Extract response and send it to UMAC
25618 -------------------------------------------------------------------------*/
25619 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025620 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025621
25622 /*Notify UMAC*/
25623 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25624
Jeff Johnsone7245742012-09-05 17:12:55 -070025625 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025626}/*WDI_ProcessSetRssiFilterRsp*/
25627
25628/**
25629 @brief Process Update Scan Params Rsp function (called when a
25630 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025631
25632 @param pWDICtx: pointer to the WLAN DAL context
25633 pEventData: pointer to the event information structure
25634
Jeff Johnson295189b2012-06-20 16:38:30 -070025635 @see
25636 @return Result of the function call
25637*/
25638WDI_Status
25639WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025640(
Jeff Johnson295189b2012-06-20 16:38:30 -070025641 WDI_ControlBlockType* pWDICtx,
25642 WDI_EventInfoType* pEventData
25643)
25644{
25645 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025646 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025647 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025648 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25650
25651 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025652 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025653 -------------------------------------------------------------------------*/
25654 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25655 ( NULL == pEventData->pEventData ))
25656 {
25657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025661 }
25662
25663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025664 "%s: Process UPD scan params ptr : %p",
25665 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025666
Jeff Johnsone7245742012-09-05 17:12:55 -070025667 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025668
25669 /*-------------------------------------------------------------------------
25670 Extract response and send it to UMAC
25671 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025672 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25673 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025674 sizeof(halUpdScanParams.status));
25675
25676 uStatus = halUpdScanParams.status;
25677
25678 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025679 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025680
25681 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025682 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025683
Jeff Johnsone7245742012-09-05 17:12:55 -070025684 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025685
25686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025687 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025688 halUpdScanParams.status);
25689
25690 /*Notify UMAC*/
25691 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25692
Jeff Johnsone7245742012-09-05 17:12:55 -070025693 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025694}
25695#endif // FEATURE_WLAN_SCAN_PNO
25696
25697#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025698WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025699WDI_8023MulticastListReq
25700(
25701 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25702 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25703 void* pUserData
25704)
25705{
25706 WDI_EventInfoType wdiEventData;
25707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25708
25709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025710 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025711
25712 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025713 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025714 ------------------------------------------------------------------------*/
25715 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25716 {
25717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25718 "WDI API call before module is initialized - Fail request");
25719
Jeff Johnsone7245742012-09-05 17:12:55 -070025720 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025721 }
25722
25723 /*------------------------------------------------------------------------
25724 Fill in Event data and post to the Main FSM
25725 ------------------------------------------------------------------------*/
25726 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025727 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025728 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025729 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025730 wdiEventData.pUserData = pUserData;
25731
25732 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25733}
25734
Jeff Johnsone7245742012-09-05 17:12:55 -070025735WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025736WDI_ReceiveFilterSetFilterReq
25737(
25738 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25739 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25740 void* pUserData
25741)
25742{
25743 WDI_EventInfoType wdiEventData;
25744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25745
25746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025747 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025748
25749 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025750 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025751 ------------------------------------------------------------------------*/
25752 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25753 {
25754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25755 "WDI API call before module is initialized - Fail request");
25756
Jeff Johnsone7245742012-09-05 17:12:55 -070025757 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025758 }
25759
25760 /*------------------------------------------------------------------------
25761 Fill in Event data and post to the Main FSM
25762 ------------------------------------------------------------------------*/
25763 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025764 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25765 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070025766 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25767 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025768 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025769 wdiEventData.pUserData = pUserData;
25770
25771
25772 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25773}
25774
Jeff Johnsone7245742012-09-05 17:12:55 -070025775WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025776WDI_FilterMatchCountReq
25777(
25778 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25779 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25780 void* pUserData
25781)
25782{
25783 WDI_EventInfoType wdiEventData;
25784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25785
25786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025787 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025788
25789 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025790 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025791 ------------------------------------------------------------------------*/
25792 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25793 {
25794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25795 "WDI API call before module is initialized - Fail request");
25796
Jeff Johnsone7245742012-09-05 17:12:55 -070025797 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025798 }
25799
25800 /*------------------------------------------------------------------------
25801 Fill in Event data and post to the Main FSM
25802 ------------------------------------------------------------------------*/
25803 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025804 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025805 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025806 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025807 wdiEventData.pUserData = pUserData;
25808
25809
25810 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25811}
25812
Jeff Johnsone7245742012-09-05 17:12:55 -070025813WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025814WDI_ReceiveFilterClearFilterReq
25815(
25816 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25817 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25818 void* pUserData
25819)
25820{
25821 WDI_EventInfoType wdiEventData;
25822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25823
25824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025825 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025826
25827 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025828 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025829 ------------------------------------------------------------------------*/
25830 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25831 {
25832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25833 "WDI API call before module is initialized - Fail request");
25834
Jeff Johnsone7245742012-09-05 17:12:55 -070025835 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025836 }
25837
25838 /*------------------------------------------------------------------------
25839 Fill in Event data and post to the Main FSM
25840 ------------------------------------------------------------------------*/
25841 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025842 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025843 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025844 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025845 wdiEventData.pUserData = pUserData;
25846
25847
25848 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25849}
25850
25851/**
25852 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025853
25854 @param pWDICtx: pointer to the WLAN DAL context
25855 pEventData: pointer to the event information structure
25856
Jeff Johnson295189b2012-06-20 16:38:30 -070025857 @see
25858 @return Result of the function call
25859*/
25860WDI_Status
25861WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025862(
Jeff Johnson295189b2012-06-20 16:38:30 -070025863 WDI_ControlBlockType* pWDICtx,
25864 WDI_EventInfoType* pEventData
25865)
25866{
25867 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25868 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025869 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025870 wpt_uint16 usDataOffset = 0;
25871 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025872 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025873 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025874 wpt_uint8 ucCurrentBSSSesIdx = 0;
25875 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025876
25877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025878 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025879
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025880 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25881 if( NULL == pRcvFltMcAddrListType )
25882 {
25883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25884 "Failed to alloc in WDI_Process8023MulticastListReq");
25885 return WDI_STATUS_E_FAILURE;
25886 }
25887
Jeff Johnson295189b2012-06-20 16:38:30 -070025888 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025889 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025890 -------------------------------------------------------------------------*/
25891 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025892 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025893 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025894 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025895 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25896 {
25897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025898 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025899 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025901 return WDI_STATUS_E_FAILURE;
25902 }
25903
25904 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25905 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25906 &pBSSSes);
25907 if ( NULL == pBSSSes )
25908 {
25909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025910 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025911 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025913 }
25914
25915 /*-----------------------------------------------------------------------
25916 Get message buffer
25917 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025918 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25919 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025920 sizeof(tHalRcvFltMcAddrListType),
25921 &pSendBuffer, &usDataOffset, &usSendSize))||
25922 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25923 {
25924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25925 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025926 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025927 pEventData, pwdiFltPktSetMcListReqParamsType,
25928 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070025929 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025930 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025931 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025932 }
25933
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025934 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025935 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025936 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025937 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025938 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025939 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25940 sizeof(tSirMacAddr));
25941 }
25942
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025943 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025944 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025945 pRcvFltMcAddrListType,
25946 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025947
25948 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025949 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025950
25951
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025952 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025954 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025955 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025956 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025957 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025958 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025959}
25960
25961/**
25962 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025963
25964 @param pWDICtx: pointer to the WLAN DAL context
25965 pEventData: pointer to the event information structure
25966
Jeff Johnson295189b2012-06-20 16:38:30 -070025967 @see
25968 @return Result of the function call
25969*/
25970WDI_Status
25971WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025972(
Jeff Johnson295189b2012-06-20 16:38:30 -070025973 WDI_ControlBlockType* pWDICtx,
25974 WDI_EventInfoType* pEventData
25975)
25976{
25977 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25978 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025979 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025980 wpt_uint16 usDataOffset = 0;
25981 wpt_uint16 usSendSize = 0;
25982 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025983 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025984 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025985 wpt_uint8 ucCurrentBSSSesIdx = 0;
25986 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025987 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25988 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025989
25990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025991 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025992
25993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025994 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025995 -------------------------------------------------------------------------*/
25996 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025997 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025998 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025999 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026000 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
26001 {
26002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026005 return WDI_STATUS_E_FAILURE;
26006 }
26007
26008 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26009 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
26010 &pBSSSes);
26011 if ( NULL == pBSSSes )
26012 {
26013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026014 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026016 }
26017
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026018 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
26019 {
Jeff Johnson295189b2012-06-20 16:38:30 -070026020
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026021 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
26022 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26023 * sizeof(tHalSessionizedRcvPktFilterCfgType));
26024
26025 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
26026 usSessRcvPktFilterCfgSize);
26027
26028 if(NULL == pSessRcvPktFilterCfg)
26029 {
26030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26031 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026032 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026033 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026034 WDI_ASSERT(0);
26035 return WDI_STATUS_E_FAILURE;
26036 }
26037
26038 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
26039
26040 /*-----------------------------------------------------------------------
26041 Get message buffer
26042 -----------------------------------------------------------------------*/
26043
26044 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
26045 usSessRcvPktFilterCfgSize,
26046 &pSendBuffer, &usDataOffset, &usSendSize))||
26047 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
26048 {
26049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26050 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026051 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026052 pEventData, pwdiSetRcvPktFilterReqInfo,
26053 wdiReceiveFilterSetFilterCb);
26054 WDI_ASSERT(0);
26055 wpalMemoryFree(pSessRcvPktFilterCfg);
26056 return WDI_STATUS_E_FAILURE;
26057 }
26058
26059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026060 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026061 usSendSize,pSessRcvPktFilterCfg);
26062
26063 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26064 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26065 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26066 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
26067
26068 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
26069
26070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26071 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
26072 pSessRcvPktFilterCfg->filterType);
26073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26074 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
26075 pSessRcvPktFilterCfg->coleasceTime);
26076
26077 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
26078 {
26079 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
26080 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26081 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
26082 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26083 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
26084 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26085 pSessRcvPktFilterCfg->paramsData[i].dataLength =
26086 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
26087
26088 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
26089 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26090 8);
26091 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
26092 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26093 8);
26094
26095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026096 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026097 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
26098 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
26099
26100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026101 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026102 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
26103 pSessRcvPktFilterCfg->paramsData[i].dataLength);
26104
26105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026106 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026107 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
26108 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
26109 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
26110 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
26111 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
26112 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
26113
26114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026115 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026116 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26117 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26118 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26119 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26120 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26121 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26122 }
26123
26124 wpalMemoryCopy( pSendBuffer+usDataOffset,
26125 pSessRcvPktFilterCfg,
26126 usSessRcvPktFilterCfgSize);
26127
26128
26129 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26130 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26131
26132 wpalMemoryFree(pSessRcvPktFilterCfg);
26133
26134 }
26135 /*If SLM_SESSIONIZATION is not supported then do this */
26136 else
26137 {
26138 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26139 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26140 * sizeof(tHalRcvPktFilterParams));
26141
26142 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026143 usRcvPktFilterCfgSize);
26144
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026145 if(NULL == pRcvPktFilterCfg)
26146 {
26147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26148 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026149 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026150 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026151 WDI_ASSERT(0);
26152 return WDI_STATUS_E_FAILURE;
26153 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026154
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026155 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026156
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026157 /*-----------------------------------------------------------------------
26158 Get message buffer
26159 -----------------------------------------------------------------------*/
26160 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026161 usRcvPktFilterCfgSize,
26162 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026163 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26164 {
26165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026166 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026167 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026168 pEventData, pwdiSetRcvPktFilterReqInfo,
26169 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026170 WDI_ASSERT(0);
26171 wpalMemoryFree(pRcvPktFilterCfg);
26172 return WDI_STATUS_E_FAILURE;
26173 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026174
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026176 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026177 usSendSize,usRcvPktFilterCfgSize);
26178
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026179 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26180 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26181 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26182 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026183
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026185 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026186 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026188 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026189 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026190
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026191 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26192 {
26193 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26194 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26195 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26196 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26197 pRcvPktFilterCfg->paramsData[i].dataOffset =
26198 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26199 pRcvPktFilterCfg->paramsData[i].dataLength =
26200 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070026201
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026202 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026203 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26204 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026205 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070026206 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26207 8);
26208
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026210 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070026211 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070026212 pRcvPktFilterCfg->paramsData[i].cmpFlag);
26213
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026215 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026216 pRcvPktFilterCfg->paramsData[i].dataOffset,
26217 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026218
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026220 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026221 pRcvPktFilterCfg->paramsData[i].compareData[0],
26222 pRcvPktFilterCfg->paramsData[i].compareData[1],
26223 pRcvPktFilterCfg->paramsData[i].compareData[2],
26224 pRcvPktFilterCfg->paramsData[i].compareData[3],
26225 pRcvPktFilterCfg->paramsData[i].compareData[4],
26226 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070026227
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026229 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026230 pRcvPktFilterCfg->paramsData[i].dataMask[0],
26231 pRcvPktFilterCfg->paramsData[i].dataMask[1],
26232 pRcvPktFilterCfg->paramsData[i].dataMask[2],
26233 pRcvPktFilterCfg->paramsData[i].dataMask[3],
26234 pRcvPktFilterCfg->paramsData[i].dataMask[4],
26235 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
26236 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026237
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026238 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070026239 pRcvPktFilterCfg,
26240 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026241
26242
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026243 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26244 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026245
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026247 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026248 wpalMemoryFree(pRcvPktFilterCfg);
26249 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026251 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026252 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026253 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026254 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026255 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026256}
26257
26258/**
26259 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026260
26261 @param pWDICtx: pointer to the WLAN DAL context
26262 pEventData: pointer to the event information structure
26263
Jeff Johnson295189b2012-06-20 16:38:30 -070026264 @see
26265 @return Result of the function call
26266*/
26267WDI_Status
26268WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026269(
Jeff Johnson295189b2012-06-20 16:38:30 -070026270 WDI_ControlBlockType* pWDICtx,
26271 WDI_EventInfoType* pEventData
26272)
26273{
26274 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
26275 NULL;
26276 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
26277 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026278 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026279 wpt_uint16 usDataOffset = 0;
26280 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026281 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
26282 wpt_uint8 ucCurrentBSSSesIdx = 0;
26283 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026284
26285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026286 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026287
26288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026289 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026290 -------------------------------------------------------------------------*/
26291 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026292 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026293 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026294 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026295 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
26296 {
26297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026299 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026301 }
26302
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026303 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26304 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26305 &pBSSSes);
26306 if ( NULL == pBSSSes )
26307 {
26308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026309 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026310 return WDI_STATUS_E_FAILURE;
26311 }
26312
Jeff Johnson295189b2012-06-20 16:38:30 -070026313 /*-----------------------------------------------------------------------
26314 Get message buffer
26315 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26317 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026318 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026319 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026320 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026321 {
26322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26323 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026324 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026325 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26326 wdiFilterMatchCountCb);
26327 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026328 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026329 }
26330
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026331 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26332 wpalMemoryCopy( pSendBuffer+usDataOffset,
26333 &rcvFltPktMatchCntReqParam,
26334 sizeof(rcvFltPktMatchCntReqParam));
26335
Jeff Johnson295189b2012-06-20 16:38:30 -070026336 //
26337 // Don't need to fill send buffer other than header
26338 //
26339 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026340 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026341
26342
26343 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026344 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026345 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026346 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26347 wdiFilterMatchCountCb,
26348 pEventData->pUserData,
26349 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026350}
26351
26352/**
26353 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026354
26355 @param pWDICtx: pointer to the WLAN DAL context
26356 pEventData: pointer to the event information structure
26357
Jeff Johnson295189b2012-06-20 16:38:30 -070026358 @see
26359 @return Result of the function call
26360*/
26361WDI_Status
26362WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026363(
Jeff Johnson295189b2012-06-20 16:38:30 -070026364 WDI_ControlBlockType* pWDICtx,
26365 WDI_EventInfoType* pEventData
26366)
Jeff Johnsone7245742012-09-05 17:12:55 -070026367{
Jeff Johnson295189b2012-06-20 16:38:30 -070026368 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26369 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026370 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026371 wpt_uint16 usDataOffset = 0;
26372 wpt_uint16 usSendSize = 0;
26373 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026374 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026375 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026376
26377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026378 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026379
26380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026382 -------------------------------------------------------------------------*/
26383 if (( NULL == pEventData ) ||
26384 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26385 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026386 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026387 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26388 {
26389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026390 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026392 return WDI_STATUS_E_FAILURE;
26393 }
26394
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026395 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026396 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26397 &pBSSSes);
26398 if ( NULL == pBSSSes )
26399 {
26400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026401 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026403 }
26404
26405 /*-----------------------------------------------------------------------
26406 Get message buffer
26407 -----------------------------------------------------------------------*/
26408 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026409 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026410 sizeof(tHalRcvFltPktClearParam),
26411 &pSendBuffer, &usDataOffset, &usSendSize))||
26412 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26413 {
26414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26415 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026416 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026417 pEventData, pwdiRcvFltPktClearReqParamsType,
26418 wdiRcvFltPktClearFilterCb);
26419 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026421 }
26422
26423
26424 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026425 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026426 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026427 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026428
Jeff Johnsone7245742012-09-05 17:12:55 -070026429 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26430 wpalMemoryCopy( pSendBuffer+usDataOffset,
26431 &rcvFltPktClearParam,
26432 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026433
26434 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026435 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026436
26437
26438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026439 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026440 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026441 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026442 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026443 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026444}
26445
26446/**
26447 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026448
26449 @param pWDICtx: pointer to the WLAN DAL context
26450 pEventData: pointer to the event information structure
26451
Jeff Johnson295189b2012-06-20 16:38:30 -070026452 @see
26453 @return Result of the function call
26454*/
26455WDI_Status
26456WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026457(
Jeff Johnson295189b2012-06-20 16:38:30 -070026458 WDI_ControlBlockType* pWDICtx,
26459 WDI_EventInfoType* pEventData
26460)
26461{
Jeff Johnson295189b2012-06-20 16:38:30 -070026462 eHalStatus halStatus;
26463 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026464 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26465 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26467
26468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026469 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026470
26471 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026472 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026473 -------------------------------------------------------------------------*/
26474 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26475 ( NULL == pEventData->pEventData ))
26476 {
26477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026478 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026479 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026481 }
26482
Jeff Johnsone7245742012-09-05 17:12:55 -070026483 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026484
26485 /*-------------------------------------------------------------------------
26486 Extract response and send it to UMAC
26487 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026488 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26489 {
26490 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26491 pEventData->pEventData,
26492 sizeof(halRcvFltPktSetMcListRsp));
26493
26494 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26495 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26496 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26497 halRcvFltPktSetMcListRsp.bssIdx;
26498 }
26499 else
26500 {
26501 halStatus = *((eHalStatus*)pEventData->pEventData);
26502 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26503 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026504
26505 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026506 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026507
Jeff Johnsone7245742012-09-05 17:12:55 -070026508 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026509}
26510
26511/**
26512 @brief Process Set Rsp function (called when a
26513 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026514
26515 @param pWDICtx: pointer to the WLAN DAL context
26516 pEventData: pointer to the event information structure
26517
Jeff Johnson295189b2012-06-20 16:38:30 -070026518 @see
26519 @return Result of the function call
26520*/
26521WDI_Status
26522WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026523(
Jeff Johnson295189b2012-06-20 16:38:30 -070026524 WDI_ControlBlockType* pWDICtx,
26525 WDI_EventInfoType* pEventData
26526)
26527{
Jeff Johnson295189b2012-06-20 16:38:30 -070026528 eHalStatus halStatus;
26529 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026530 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26531 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26533
26534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026535 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026536
26537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026538 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026539 -------------------------------------------------------------------------*/
26540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26541 ( NULL == pEventData->pEventData ))
26542 {
26543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026547 }
26548
26549 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026550 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026551
26552 /*-------------------------------------------------------------------------
26553 Extract response and send it to UMAC
26554 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026555 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26556 {
26557 wpalMemoryCopy( &halSetPktFilterRspParams,
26558 pEventData->pEventData,
26559 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026560
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026561 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26562 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26563 }
26564 else
26565 {
26566 halStatus = *((eHalStatus*)pEventData->pEventData);
26567 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26568 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026569 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026570 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026571
Jeff Johnsone7245742012-09-05 17:12:55 -070026572 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026573}
26574
26575/**
26576 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026577
26578 @param pWDICtx: pointer to the WLAN DAL context
26579 pEventData: pointer to the event information structure
26580
Jeff Johnson295189b2012-06-20 16:38:30 -070026581 @see
26582 @return Result of the function call
26583*/
26584WDI_Status
26585WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026586(
Jeff Johnson295189b2012-06-20 16:38:30 -070026587 WDI_ControlBlockType* pWDICtx,
26588 WDI_EventInfoType* pEventData
26589)
26590{
Jeff Johnson295189b2012-06-20 16:38:30 -070026591 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026592 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026593 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26594 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026595
26596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26597
26598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026599 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026600
26601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026602 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026603 -------------------------------------------------------------------------*/
26604 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26605 ( NULL == pEventData->pEventData ))
26606 {
26607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026608 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026611 }
26612
Jeff Johnsone7245742012-09-05 17:12:55 -070026613 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026614
26615 /*-------------------------------------------------------------------------
26616 Extract response and send it to UMAC
26617 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026618 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26619 {
26620 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26621 pEventData->pEventData,
26622 sizeof(halRcvFltrPktMatachRsp));
26623
26624 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26625 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26626 }
26627 else
26628 {
26629 halStatus = *((eHalStatus*)pEventData->pEventData);
26630 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26631 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026632
26633 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026634 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026635
Jeff Johnsone7245742012-09-05 17:12:55 -070026636 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026637}
26638
26639/**
26640 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026641
26642 @param pWDICtx: pointer to the WLAN DAL context
26643 pEventData: pointer to the event information structure
26644
Jeff Johnson295189b2012-06-20 16:38:30 -070026645 @see
26646 @return Result of the function call
26647*/
26648WDI_Status
26649WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026650(
Jeff Johnson295189b2012-06-20 16:38:30 -070026651 WDI_ControlBlockType* pWDICtx,
26652 WDI_EventInfoType* pEventData
26653)
26654{
Jeff Johnson295189b2012-06-20 16:38:30 -070026655 eHalStatus halStatus;
26656 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026657 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26658 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26660
26661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026662 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026663
26664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026665 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026666 -------------------------------------------------------------------------*/
26667 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26668 ( NULL == pEventData->pEventData ))
26669 {
26670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026674 }
26675
26676 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026677 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026678
26679 /*-------------------------------------------------------------------------
26680 Extract response and send it to UMAC
26681 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026682 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26683 {
26684 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26685 pEventData->pEventData,
26686 sizeof(halRcvFltPktClearRspMsg));
26687
26688 wdiRcvFltPktClearRspParamsType.wdiStatus =
26689 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26690 wdiRcvFltPktClearRspParamsType.bssIdx =
26691 halRcvFltPktClearRspMsg.bssIdx;
26692 }
26693 else
26694 {
26695 halStatus = *((eHalStatus*)pEventData->pEventData);
26696 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26697 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026698
26699 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026700 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026701
Jeff Johnsone7245742012-09-05 17:12:55 -070026702 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026703}
26704#endif // WLAN_FEATURE_PACKET_FILTERING
26705
26706/**
26707 @brief Process Shutdown Rsp function
26708 There is no shutdown response comming from HAL
26709 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026710
Jeff Johnson295189b2012-06-20 16:38:30 -070026711 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026712 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026713
26714 @see
26715 @return Result of the function call
26716*/
26717WDI_Status
26718WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026719(
Jeff Johnson295189b2012-06-20 16:38:30 -070026720 WDI_ControlBlockType* pWDICtx,
26721 WDI_EventInfoType* pEventData
26722)
26723{
26724 /*There is no shutdown response comming from HAL - function just kept for
26725 simmetry */
26726 WDI_ASSERT(0);
26727 return WDI_STATUS_SUCCESS;
26728}/*WDI_ProcessShutdownRsp*/
26729
26730/**
26731 @brief WDI_SetPowerParamsReq
26732
Jeff Johnsone7245742012-09-05 17:12:55 -070026733 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026734 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026735
Jeff Johnson295189b2012-06-20 16:38:30 -070026736 wdiPowerParamsCb: callback for passing back the response
26737 of the Set Power Params operation received from the
26738 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026739
Jeff Johnson295189b2012-06-20 16:38:30 -070026740 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026741 callback
26742
Jeff Johnson295189b2012-06-20 16:38:30 -070026743 @return Result of the function call
26744*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026745WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026746WDI_SetPowerParamsReq
26747(
26748 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26749 WDI_SetPowerParamsCb wdiPowerParamsCb,
26750 void* pUserData
26751)
26752{
26753 WDI_EventInfoType wdiEventData;
26754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26755
26756 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026757 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026758 ------------------------------------------------------------------------*/
26759 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26760 {
26761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26762 "WDI API call before module is initialized - Fail request");
26763
Jeff Johnsone7245742012-09-05 17:12:55 -070026764 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026765 }
26766
26767 /*------------------------------------------------------------------------
26768 Fill in Event data and post to the Main FSM
26769 ------------------------------------------------------------------------*/
26770 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026771 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026772 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026773 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026774 wdiEventData.pUserData = pUserData;
26775
26776 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26777}/*WDI_SetPowerParamsReq*/
26778
26779/**
26780 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026781
26782 @param pWDICtx: pointer to the WLAN DAL context
26783 pEventData: pointer to the event information structure
26784
Jeff Johnson295189b2012-06-20 16:38:30 -070026785 @see
26786 @return Result of the function call
26787*/
26788WDI_Status
26789WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026790(
Jeff Johnson295189b2012-06-20 16:38:30 -070026791 WDI_ControlBlockType* pWDICtx,
26792 WDI_EventInfoType* pEventData
26793)
26794{
26795 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26796 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026797 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026798 wpt_uint16 usDataOffset = 0;
26799 wpt_uint16 usSendSize = 0;
26800 tSetPowerParamsType powerParams;
26801
26802 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026803 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026804 -------------------------------------------------------------------------*/
26805 if (( NULL == pEventData ) ||
26806 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26807 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26808 {
26809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026810 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026811 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026813 }
26814
26815 /*-----------------------------------------------------------------------
26816 Get message buffer
26817 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026818 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026819 sizeof(powerParams),
26820 &pSendBuffer, &usDataOffset, &usSendSize))||
26821 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26822 {
26823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026824 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026825 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026827 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026828 }
26829
26830 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026831 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026832 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26833
26834 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026835 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026836 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26837
26838 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026839 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026840 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26841
26842 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026843 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026844 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26845
26846 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026847 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026848 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26849
26850 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026851 powerParams.uBETInterval =
26852 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026853
Yue Mac24062f2013-05-13 17:01:29 -070026854 /* MAX LI for modulated DTIM */
26855 powerParams.uMaxLIModulatedDTIM =
26856 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026857
26858 wpalMemoryCopy( pSendBuffer+usDataOffset,
26859 &powerParams,
26860 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026861
26862 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026863 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026864
26865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026866 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026867 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026868 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26869 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026870}
26871
26872/**
26873 @brief Process Power Params Rsp function (called when a
26874 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026875
26876 @param pWDICtx: pointer to the WLAN DAL context
26877 pEventData: pointer to the event information structure
26878
Jeff Johnson295189b2012-06-20 16:38:30 -070026879 @see
26880 @return Result of the function call
26881*/
26882WDI_Status
26883WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026884(
Jeff Johnson295189b2012-06-20 16:38:30 -070026885 WDI_ControlBlockType* pWDICtx,
26886 WDI_EventInfoType* pEventData
26887)
26888{
26889 WDI_Status wdiStatus;
26890 eHalStatus halStatus;
26891 WDI_SetPowerParamsCb wdiPowerParamsCb;
26892 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26893
26894 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026895 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026896 -------------------------------------------------------------------------*/
26897 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26898 ( NULL == pEventData->pEventData ))
26899 {
26900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026901 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026902 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026904 }
26905
Jeff Johnsone7245742012-09-05 17:12:55 -070026906 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026907
26908 /*-------------------------------------------------------------------------
26909 Extract response and send it to UMAC
26910 -------------------------------------------------------------------------*/
26911 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026912 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026913
26914 /*Notify UMAC*/
26915 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26916
Jeff Johnsone7245742012-09-05 17:12:55 -070026917 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026918}/*WDI_ProcessSetPowerParamsRsp*/
26919
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053026920/**
26921 @brief WDI_dhcpStartInd
26922 Host will send an event to the FW when DHCP is initiated
26923
26924 @param
26925 WDI_DHCPInd: DHCP Indication
26926 @see
26927 @return Result of the function call
26928*/
26929WDI_Status
26930WDI_dhcpStartInd
26931(
26932 WDI_DHCPInd *wdiDHCPInd
26933)
26934{
26935 WDI_EventInfoType wdiEventData;
26936
26937 /*------------------------------------------------------------------------
26938 Sanity Check
26939 ------------------------------------------------------------------------*/
26940 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26941 {
26942 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26943 "WDI API call before module is initialized - Fail request");
26944
26945 return WDI_STATUS_E_NOT_ALLOWED;
26946 }
26947
26948 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26949 wdiEventData.pEventData = wdiDHCPInd;
26950 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26951 wdiEventData.pCBfnc = NULL;
26952 wdiEventData.pUserData = NULL;
26953
26954 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26955}
26956
26957
26958/**
26959 @brief WDI_dhcpStopInd
26960 Host will send an event to the FW when DHCP is completed
26961
26962 @param
26963 WDI_DHCPInd: DHCP Indication
26964 @see
26965 @return Result of the function call
26966*/
26967WDI_Status
26968WDI_dhcpStopInd
26969(
26970 WDI_DHCPInd *wdiDHCPInd
26971)
26972{
26973 WDI_EventInfoType wdiEventData;
26974
26975 /*------------------------------------------------------------------------
26976 Sanity Check
26977 ------------------------------------------------------------------------*/
26978 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26979 {
26980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26981 "WDI API call before module is initialized - Fail request");
26982
26983 return WDI_STATUS_E_NOT_ALLOWED;
26984 }
26985
26986 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26987 wdiEventData.pEventData = wdiDHCPInd;
26988 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26989 wdiEventData.pCBfnc = NULL;
26990 wdiEventData.pUserData = NULL;
26991
26992 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26993}
26994
26995
26996/**
26997 @brief Process DHCP Start Indication message and post it to HAL
26998
26999 @param pWDICtx: pointer to the WLAN DAL context
27000 pEventData: pointer to the event information structure
27001
27002 @see
27003 @return Result of the function call
27004*/
27005WDI_Status
27006WDI_ProcessDHCPStartInd
27007(
27008 WDI_ControlBlockType* pWDICtx,
27009 WDI_EventInfoType* pEventData
27010)
27011{
27012 wpt_uint8* pSendBuffer = NULL;
27013 wpt_uint16 usDataOffset = 0;
27014 wpt_uint16 usSendSize = 0;
27015 wpt_uint16 usLen = 0;
27016 WDI_DHCPInd* pwdiDHCPInd = NULL;
27017 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027018 WDI_Status wdiStatus;
27019
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027020
27021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27022
27023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27024 "%s", __func__);
27025
27026 /*-------------------------------------------------------------------------
27027 Sanity check
27028 -------------------------------------------------------------------------*/
27029 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27030 {
27031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27032 "%s: Invalid parameters", __func__);
27033 WDI_ASSERT(0);
27034 return WDI_STATUS_E_FAILURE;
27035 }
27036 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27037 /*-----------------------------------------------------------------------
27038 Get message buffer
27039 -----------------------------------------------------------------------*/
27040
27041 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27042 WDI_DHCP_START_IND,
27043 sizeof(tDHCPInfo),
27044 &pSendBuffer, &usDataOffset, &usSendSize))||
27045 ( usSendSize < (usDataOffset + usLen )))
27046 {
27047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27048 "Unable to get send buffer in DHCP Start req %p ",
27049 pEventData);
27050 WDI_ASSERT(0);
27051 return WDI_STATUS_E_FAILURE;
27052 }
27053
Sandeep Puligillaee789512014-02-13 19:14:52 +053027054 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027055 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27056 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27057 WDI_MAC_ADDR_LEN);
27058
27059 pWDICtx->pReqStatusUserData = NULL;
27060 pWDICtx->pfncRspCB = NULL;
27061
27062 /*-------------------------------------------------------------------------
27063 Send DHCP Start Indication to HAL
27064 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027065 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27066 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027067}/*WDI_ProcessDHCPStartInd*/
27068
27069/**
27070 @brief Process DHCP Stop indication message and post it to HAL
27071
27072 @param pWDICtx: pointer to the WLAN DAL context
27073 pEventData: pointer to the event information structure
27074
27075 @see
27076 @return Result of the function call
27077*/
27078WDI_Status
27079WDI_ProcessDHCPStopInd
27080(
27081 WDI_ControlBlockType* pWDICtx,
27082 WDI_EventInfoType* pEventData
27083)
27084{
27085 wpt_uint8* pSendBuffer = NULL;
27086 wpt_uint16 usDataOffset = 0;
27087 wpt_uint16 usSendSize = 0;
27088 wpt_uint16 usLen = 0;
27089 WDI_DHCPInd* pwdiDHCPInd = NULL;
27090 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027091 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027092
27093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27094
27095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27096 "%s", __func__);
27097
27098 /*-------------------------------------------------------------------------
27099 Sanity check
27100 -------------------------------------------------------------------------*/
27101
27102 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27103 {
27104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27105 "%s: Invalid parameters", __func__);
27106 WDI_ASSERT(0);
27107 return WDI_STATUS_E_FAILURE;
27108 }
27109 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27110 /*-----------------------------------------------------------------------
27111 Get message buffer
27112 -----------------------------------------------------------------------*/
27113
27114 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27115 WDI_DHCP_STOP_IND,
27116 sizeof(tDHCPInfo),
27117 &pSendBuffer, &usDataOffset, &usSendSize))||
27118 ( usSendSize < (usDataOffset + usLen )))
27119 {
27120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27121 "Unable to get send buffer in DHCP Start req %p ",
27122 pEventData);
27123 WDI_ASSERT(0);
27124 return WDI_STATUS_E_FAILURE;
27125 }
27126
Sandeep Puligillaee789512014-02-13 19:14:52 +053027127 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027128 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27129 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27130 WDI_MAC_ADDR_LEN);
27131
27132 pWDICtx->pReqStatusUserData = NULL;
27133 pWDICtx->pfncRspCB = NULL;
27134 /*-------------------------------------------------------------------------
27135 Send DHCP Stop indication to HAL
27136 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027137 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27138 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027139
27140}/*WDI_ProcessDHCPStopInd*/
27141
27142
Jeff Johnson295189b2012-06-20 16:38:30 -070027143#ifdef WLAN_FEATURE_GTK_OFFLOAD
27144/**
27145 @brief WDI_GTKOffloadReq will be called when the upper MAC
27146 wants to set GTK Rekey Counter while in power save. Upon
27147 the call of this API the WLAN DAL will pack and send a
27148 HAL GTK offload request message to the lower RIVA
27149 sub-system if DAL is in state STARTED.
27150
27151 In state BUSY this request will be queued. Request won't
27152 be allowed in any other state.
27153
27154 WDI_PostAssocReq must have been called.
27155
27156 @param pwdiGtkOffloadParams: the GTK offload as specified
27157 by the Device Interface
27158
27159 wdiGtkOffloadCb: callback for passing back the response
27160 of the GTK offload operation received from the device
27161
27162 pUserData: user data will be passed back with the
27163 callback
27164
27165 @see WDI_PostAssocReq
27166 @return Result of the function call
27167*/
27168WDI_Status
27169WDI_GTKOffloadReq
27170(
27171 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27172 WDI_GtkOffloadCb wdiGtkOffloadCb,
27173 void* pUserData
27174)
27175{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027176 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27178
27179 /*------------------------------------------------------------------------
27180 Sanity Check
27181 ------------------------------------------------------------------------*/
27182 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27183 {
27184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27185 "WDI API call before module is initialized - Fail request");
27186
27187 return WDI_STATUS_E_NOT_ALLOWED;
27188 }
27189
27190 /*------------------------------------------------------------------------
27191 Fill in Event data and post to the Main FSM
27192 ------------------------------------------------------------------------*/
27193 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27194 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027195 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027196 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27197 wdiEventData.pUserData = pUserData;
27198
27199 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27200}
27201
27202
27203/**
27204 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
27205 MAC wants to get GTK Rekey Counter while in power save.
27206 Upon the call of this API the WLAN DAL will pack and
27207 send a HAL GTK offload request message to the lower RIVA
27208 sub-system if DAL is in state STARTED.
27209
27210 In state BUSY this request will be queued. Request won't
27211 be allowed in any other state.
27212
27213 WDI_PostAssocReq must have been called.
27214
27215 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
27216 Information Message as specified by the
27217 Device Interface
27218
27219 wdiGtkOffloadGetInfoCb: callback for passing back the
27220 response of the GTK offload operation received from the
27221 device
27222
27223 pUserData: user data will be passed back with the
27224 callback
27225
27226 @see WDI_PostAssocReq
27227 @return Result of the function call
27228*/
27229WDI_Status
27230WDI_GTKOffloadGetInfoReq
27231(
27232 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
27233 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
27234 void* pUserData
27235)
27236{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027237 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27239
27240 /*------------------------------------------------------------------------
27241 Sanity Check
27242 ------------------------------------------------------------------------*/
27243 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27244 {
27245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27246 "WDI API call before module is initialized - Fail request");
27247
27248 return WDI_STATUS_E_NOT_ALLOWED;
27249 }
27250
27251 /*------------------------------------------------------------------------
27252 Fill in Event data and post to the Main FSM
27253 ------------------------------------------------------------------------*/
27254 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
27255 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
27256 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
27257 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
27258 wdiEventData.pUserData = pUserData;
27259
27260 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27261}
27262
27263
27264/**
27265 @brief Process set GTK Offload Request function
27266
27267 @param pWDICtx: pointer to the WLAN DAL context
27268 pEventData: pointer to the event information structure
27269
27270 @see
27271 @return Result of the function call
27272*/
27273WDI_Status
27274WDI_ProcessGTKOffloadReq
27275(
27276 WDI_ControlBlockType* pWDICtx,
27277 WDI_EventInfoType* pEventData
27278)
27279{
27280 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
27281 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
27282 wpt_uint8* pSendBuffer = NULL;
27283 wpt_uint16 usDataOffset = 0;
27284 wpt_uint16 usSendSize = 0;
27285 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027286 wpt_uint8 ucCurrentSessionId = 0;
27287 WDI_BSSSessionType* pBSSSes = NULL;
27288
Jeff Johnson295189b2012-06-20 16:38:30 -070027289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27290
27291 /*-------------------------------------------------------------------------
27292 Sanity check
27293 -------------------------------------------------------------------------*/
27294 if (( NULL == pEventData ) ||
27295 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
27296 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
27297 {
27298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027299 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027300 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027301 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027302 }
27303
27304 /*-----------------------------------------------------------------------
27305 Get message buffer
27306 -----------------------------------------------------------------------*/
27307 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27308 sizeof(gtkOffloadReqParams),
27309 &pSendBuffer, &usDataOffset, &usSendSize))||
27310 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27311 {
27312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027313 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027314 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27315 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027316 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027317 }
27318
27319 //
27320 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27321 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027322 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27323 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27324 &pBSSSes);
27325 if ( NULL == pBSSSes )
27326 {
27327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027328 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027329 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027330 }
27331
27332 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27333
Jeff Johnson295189b2012-06-20 16:38:30 -070027334 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27335 // Copy KCK
27336 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27337 // Copy KEK
27338 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27339 // Copy KeyReplayCounter
27340 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27341
27342 wpalMemoryCopy( pSendBuffer+usDataOffset,
27343 &gtkOffloadReqParams,
27344 sizeof(gtkOffloadReqParams));
27345
27346 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27347 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27348
27349 /*-------------------------------------------------------------------------
27350 Send Get STA Request to HAL
27351 -------------------------------------------------------------------------*/
27352 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27353 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027354
27355fail:
27356 // Release the message buffer so we don't leak
27357 wpalMemoryFree(pSendBuffer);
27358
27359failRequest:
27360 //WDA should have failure check to avoid the memory leak
27361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027362}
27363
27364
27365/**
27366 @brief Process GTK Offload Get Information Request function
27367
27368 @param pWDICtx: pointer to the WLAN DAL context
27369 pEventData: pointer to the event information structure
27370
27371 @see
27372 @return Result of the function call
27373*/
27374WDI_Status
27375WDI_ProcessGTKOffloadGetInfoReq
27376(
27377 WDI_ControlBlockType* pWDICtx,
27378 WDI_EventInfoType* pEventData
27379)
27380{
27381 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27382 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27383 wpt_uint8* pSendBuffer = NULL;
27384 wpt_uint16 usDataOffset = 0;
27385 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027386 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27387 wpt_uint8 ucCurrentSessionId = 0;
27388 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027389
27390 /*-------------------------------------------------------------------------
27391 Sanity check
27392 -------------------------------------------------------------------------*/
27393 if (( NULL == pEventData ) ||
27394 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27395 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27396 {
27397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027398 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027399 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027400 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027401 }
27402
27403 /*-----------------------------------------------------------------------
27404 Get message buffer
27405 -----------------------------------------------------------------------*/
27406 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027407 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027408 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027409 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027410 {
27411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027412 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027413 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27414 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027415 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027416 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027417 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27418 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27419 &pBSSSes);
27420 if ( NULL == pBSSSes )
27421 {
27422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027423 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027424 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027425 }
27426 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027427
27428 //
27429 // Don't need to fill send buffer other than header
27430 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027431 wpalMemoryCopy( pSendBuffer+usDataOffset,
27432 &halGtkOffloadGetInfoReqParams,
27433 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027434
27435 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27436 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27437
27438 /*-------------------------------------------------------------------------
27439 Send Get STA Request to HAL
27440 -------------------------------------------------------------------------*/
27441 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27442 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027443fail:
27444 // Release the message buffer so we don't leak
27445 wpalMemoryFree(pSendBuffer);
27446
27447failRequest:
27448 //WDA should have failure check to avoid the memory leak
27449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027450}
27451
27452/**
27453 @brief Process host offload Rsp function (called when a
27454 response is being received over the bus from HAL)
27455
27456 @param pWDICtx: pointer to the WLAN DAL context
27457 pEventData: pointer to the event information structure
27458
27459 @see
27460 @return Result of the function call
27461*/
27462WDI_Status
27463WDI_ProcessGtkOffloadRsp
27464(
27465 WDI_ControlBlockType* pWDICtx,
27466 WDI_EventInfoType* pEventData
27467)
27468{
Jeff Johnson295189b2012-06-20 16:38:30 -070027469 eHalStatus halStatus;
27470 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027471 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27472 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027473
27474 /*-------------------------------------------------------------------------
27475 Sanity check
27476 -------------------------------------------------------------------------*/
27477 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27478 ( NULL == pEventData->pEventData))
27479 {
27480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027481 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027482 WDI_ASSERT(0);
27483 return WDI_STATUS_E_FAILURE;
27484 }
27485
Wilson Yang00256342013-10-10 23:13:38 -070027486 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27487
Jeff Johnson295189b2012-06-20 16:38:30 -070027488 /*-------------------------------------------------------------------------
27489 Extract response and send it to UMAC
27490 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027491 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27492 {
27493 wpalMemoryCopy( &halGtkOffloadRspParams,
27494 pEventData->pEventData,
27495 sizeof(halGtkOffloadRspParams));
27496
27497 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027498 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027499 wdiGtkOffloadRsparams.bssIdx =
27500 halGtkOffloadRspParams.bssIdx;
27501 }
27502 else
27503 {
27504 halStatus = *((eHalStatus*)pEventData->pEventData);
27505 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27506 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027507
27508 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027509 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027510
27511 return WDI_STATUS_SUCCESS;
27512}
27513
27514/**
27515 @brief Process GTK Offload Get Information Response function
27516
27517 @param pWDICtx: pointer to the WLAN DAL context
27518 pEventData: pointer to the event information structure
27519
27520 @see
27521 @return Result of the function call
27522*/
27523WDI_Status
27524WDI_ProcessGTKOffloadGetInfoRsp
27525(
27526 WDI_ControlBlockType* pWDICtx,
27527 WDI_EventInfoType* pEventData
27528)
27529{
Jeff Johnson295189b2012-06-20 16:38:30 -070027530 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027531 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027532 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27533 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027534 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027535
Jeff Johnson295189b2012-06-20 16:38:30 -070027536
27537 /*-------------------------------------------------------------------------
27538 Sanity check
27539 -------------------------------------------------------------------------*/
27540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27541 ( NULL == pEventData->pEventData ))
27542 {
27543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027545 WDI_ASSERT(0);
27546 return WDI_STATUS_E_FAILURE;
27547 }
27548
Wilson Yang00256342013-10-10 23:13:38 -070027549 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27550
27551 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070027552 Extract response and send it to UMAC
27553 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027554 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27555 {
27556 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27557 pEventData->pEventData,
27558 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027559
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027560 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027561 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027562 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27563 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27564 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27565 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27566 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27567 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27568 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27569 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027570
27571 wpalMutexAcquire(&pWDICtx->wptMutex);
27572 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27573 &pBSSSes);
27574
27575 if ( NULL == pBSSSes )
27576 {
27577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27578 "Association sequence for this BSS does not exist or "
27579 "association no longer in progress - mysterious HAL response");
27580 wpalMutexRelease(&pWDICtx->wptMutex);
27581 return WDI_STATUS_E_NOT_ALLOWED;
27582 }
27583
27584 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27585 sizeof (wpt_macAddr));
27586 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027587 }
27588 else
27589 {
27590 halStatus = *((eHalStatus*)pEventData->pEventData);
27591 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27592 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027593 /*Notify UMAC*/
27594 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27595 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027596 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027597
27598 return WDI_STATUS_SUCCESS;
27599}
27600#endif // WLAN_FEATURE_GTK_OFFLOAD
27601
27602#ifdef WLAN_WAKEUP_EVENTS
27603WDI_Status
27604WDI_ProcessWakeReasonInd
27605(
27606 WDI_ControlBlockType* pWDICtx,
27607 WDI_EventInfoType* pEventData
27608)
27609{
27610 WDI_LowLevelIndType *pWdiInd;
27611 tpWakeReasonParams pWakeReasonParams;
27612 wpt_uint32 allocSize = 0;
27613
27614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027615 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027616
27617 /*-------------------------------------------------------------------------
27618 Sanity check
27619 -------------------------------------------------------------------------*/
27620 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27621 ( NULL == pEventData->pEventData ))
27622 {
27623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027624 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027625 WDI_ASSERT( 0 );
27626 return WDI_STATUS_E_FAILURE;
27627 }
27628
27629 /*-------------------------------------------------------------------------
27630 Extract indication and send it to UMAC
27631 -------------------------------------------------------------------------*/
27632 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27633
27634 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27635
27636 //Allocate memory for WDI_WakeReasonIndType structure
27637 pWdiInd = wpalMemoryAllocate(allocSize) ;
27638
27639 if(NULL == pWdiInd)
27640 {
27641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027642 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027643 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027644 WDI_ASSERT(0);
27645 return WDI_STATUS_E_FAILURE;
27646 }
27647
27648 wpalMemoryZero(pWdiInd, allocSize);
27649
27650 /* Fill in the indication parameters*/
27651 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27652 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27653 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27654 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27655 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27656 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27657 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27658 &(pWakeReasonParams->aDataStart[0]),
27659 pWakeReasonParams->ulStoredDataLen);
27660
ltimariub77f24b2013-01-24 18:54:33 -080027661
27662 if ( pWDICtx->wdiLowLevelIndCB )
27663 {
27664 /*Notify UMAC*/
27665 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27666 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027667
27668 //Free memory allocated for WDI_WakeReasonIndType structure
27669 wpalMemoryFree(pWdiInd);
27670
27671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027672 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027673
27674 return WDI_STATUS_SUCCESS;
27675}
27676#endif // WLAN_WAKEUP_EVENTS
27677
27678void WDI_GetWcnssCompiledApiVersion
27679(
27680 WDI_WlanVersionType *pWcnssApiVersion
27681)
27682{
27683 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27684 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27685 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27686 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27687}
27688
27689/**
27690 @brief Process Set TM Level Rsp function (called when a
27691 response is being received over the bus from HAL)
27692
27693 @param pWDICtx: pointer to the WLAN DAL context
27694 pEventData: pointer to the event information structure
27695
27696 @see
27697 @return Result of the function call
27698*/
27699WDI_Status
27700WDI_ProcessSetTmLevelRsp
27701(
27702 WDI_ControlBlockType* pWDICtx,
27703 WDI_EventInfoType* pEventData
27704)
27705{
27706 WDI_Status wdiStatus;
27707 eHalStatus halStatus;
27708 WDI_SetTmLevelCb wdiSetTmLevelCb;
27709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27710
27711 /*-------------------------------------------------------------------------
27712 Sanity check
27713 -------------------------------------------------------------------------*/
27714 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27715 ( NULL == pEventData->pEventData ))
27716 {
27717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027718 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027719 WDI_ASSERT(0);
27720 return WDI_STATUS_E_FAILURE;
27721 }
27722
27723 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27724
27725 /*-------------------------------------------------------------------------
27726 Extract response and send it to UMAC
27727 -------------------------------------------------------------------------*/
27728 halStatus = *((eHalStatus*)pEventData->pEventData);
27729 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27730
27731 /*Notify UMAC*/
27732 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27733
27734 return WDI_STATUS_SUCCESS;
27735}/*WDI_ProcessSetTmLevelRsp*/
27736
27737/**
27738 @brief Process Set Thermal Mitigation level Changed request
27739
27740 @param pWDICtx: pointer to the WLAN DAL context
27741 pEventData: pointer to the event information structure
27742
27743 @see
27744 @return Result of the function call
27745*/
27746WDI_Status
27747WDI_ProcessSetTmLevelReq
27748(
27749 WDI_ControlBlockType* pWDICtx,
27750 WDI_EventInfoType* pEventData
27751)
27752{
27753 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27754 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27755 wpt_uint8* pSendBuffer = NULL;
27756 wpt_uint16 usDataOffset = 0;
27757 wpt_uint16 usSendSize = 0;
27758 tSetThermalMitgationType halTmMsg;
27759
27760 /*-------------------------------------------------------------------------
27761 Sanity check
27762 -------------------------------------------------------------------------*/
27763 if (( NULL == pEventData ) ||
27764 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27765 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27766 {
27767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027768 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027769 WDI_ASSERT(0);
27770 return WDI_STATUS_E_FAILURE;
27771 }
27772
27773 /*-----------------------------------------------------------------------
27774 Get message buffer
27775 -----------------------------------------------------------------------*/
27776 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27777 sizeof(halTmMsg),
27778 &pSendBuffer, &usDataOffset, &usSendSize))||
27779 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27780 {
27781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027782 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027783 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27784 WDI_ASSERT(0);
27785 return WDI_STATUS_E_FAILURE;
27786 }
27787
27788 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27789 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27790
27791 wpalMemoryCopy( pSendBuffer+usDataOffset,
27792 &halTmMsg,
27793 sizeof(halTmMsg));
27794
27795 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27796 pWDICtx->pfncRspCB = NULL;
27797 /*-------------------------------------------------------------------------
27798 Send Get STA Request to HAL
27799 -------------------------------------------------------------------------*/
27800 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27801 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27802}
27803
27804/* Fill the value from the global features enabled array to the global capabilities
27805 * bitmap struct
27806 */
27807static void
27808FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27809{
27810 wpt_int8 i;
27811 for (i=0; i<len; i++)
27812 {
27813 setFeatCaps(fCaps, enabledFeat[i]);
27814 }
27815}
27816
27817/**
27818 @brief WDI_featureCapsExchangeReq
27819 Post feature capability bitmap exchange event.
27820 Host will send its own capability to FW in this req and
27821 expect FW to send its capability back as a bitmap in Response
27822
27823 @param
27824
27825 wdiFeatureCapsExchangeCb: callback called on getting the response.
27826 It is kept to mantain similarity between WDI reqs and if needed, can
27827 be used in future. Currently, It is set to NULL
27828
27829 pUserData: user data will be passed back with the
27830 callback
27831
27832 @see
27833 @return Result of the function call
27834*/
27835WDI_Status
27836WDI_featureCapsExchangeReq
27837(
27838 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27839 void* pUserData
27840)
27841{
27842 WDI_EventInfoType wdiEventData;
27843 wpt_int32 fCapsStructSize;
27844
27845 /*------------------------------------------------------------------------
27846 Sanity Check
27847 ------------------------------------------------------------------------*/
27848 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27849 {
27850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27851 "WDI API call before module is initialized - Fail request");
27852
27853 return WDI_STATUS_E_NOT_ALLOWED;
27854 }
27855
27856 /* Allocate memory separately for global variable carrying FW caps */
27857 fCapsStructSize = sizeof(tWlanFeatCaps);
27858 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27859 if ( NULL == gpHostWlanFeatCaps )
27860 {
27861 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027862 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027863 WDI_ASSERT(0);
27864 return WDI_STATUS_MEM_FAILURE;
27865 }
27866
27867 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27868
27869 /*------------------------------------------------------------------------
27870 Fill in Event data and post to the Main FSM
27871 ------------------------------------------------------------------------*/
27872 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27873 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053027874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027875 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027876 gpHostWlanFeatCaps->featCaps[0],
27877 gpHostWlanFeatCaps->featCaps[1],
27878 gpHostWlanFeatCaps->featCaps[2],
27879 gpHostWlanFeatCaps->featCaps[3]
27880 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053027881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27882 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027883 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27884 wdiEventData.pEventData = gpHostWlanFeatCaps;
27885 wdiEventData.uEventDataSize = fCapsStructSize;
27886 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27887 wdiEventData.pUserData = pUserData;
27888
27889 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27890}
27891
27892/**
Yathish9f22e662012-12-10 14:21:35 -080027893 @brief Disable Active mode offload in Host
27894
27895 @param void
27896 @see
27897 @return void
27898*/
27899void
27900WDI_disableCapablityFeature(wpt_uint8 feature_index)
27901{
27902 supportEnabledFeatures[feature_index] = 0;
27903 return;
27904}
27905
27906/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027907 @brief Process Host-FW Capability Exchange Request function
27908
27909 @param pWDICtx: pointer to the WLAN DAL context
27910 pEventData: pointer to the event information structure
27911
27912 @see
27913 @return Result of the function call
27914*/
27915WDI_Status
27916WDI_ProcessFeatureCapsExchangeReq
27917(
27918 WDI_ControlBlockType* pWDICtx,
27919 WDI_EventInfoType* pEventData
27920)
27921{
27922 wpt_uint8* pSendBuffer = NULL;
27923 wpt_uint16 usDataOffset = 0;
27924 wpt_uint16 usSendSize = 0;
27925 wpt_uint16 usLen = 0;
27926
27927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27928
27929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027930 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027931
27932 /*-------------------------------------------------------------------------
27933 Sanity check
27934 -------------------------------------------------------------------------*/
27935 /* Call back function is NULL since not required for cap exchange req */
27936 if (( NULL == pEventData ) ||
27937 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27938 {
27939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027940 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027941 WDI_ASSERT(0);
27942 return WDI_STATUS_E_FAILURE;
27943 }
27944
27945 /*-----------------------------------------------------------------------
27946 Get message buffer
27947 -----------------------------------------------------------------------*/
27948 usLen = sizeof(tWlanFeatCaps);
27949
27950 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27951 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27952 usLen,
27953 &pSendBuffer, &usDataOffset, &usSendSize))||
27954 ( usSendSize < (usDataOffset + usLen )))
27955 {
27956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027957 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027958 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27959 WDI_ASSERT(0);
27960 return WDI_STATUS_E_FAILURE;
27961 }
27962
27963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027964 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027965 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27966 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27967 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27968 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27969 );
27970
27971 /* Copy host caps after the offset in the send buffer */
27972 wpalMemoryCopy( pSendBuffer+usDataOffset,
27973 (tWlanFeatCaps *)pEventData->pEventData,
27974 usLen);
27975
27976 /*-------------------------------------------------------------------------
27977 Send Start Request to HAL
27978 -------------------------------------------------------------------------*/
27979 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27980 (WDI_StartRspCb)pEventData->pCBfnc,
27981 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27982
27983}/*WDI_ProcessFeatureCapsExchangeReq*/
27984
27985/**
27986 @brief Process Host-FW Capability Exchange Response function
27987
27988 @param pWDICtx: pointer to the WLAN DAL context
27989 pEventData: pointer to the event information structure
27990
27991 @see
27992 @return Result of the function call
27993*/
27994WDI_Status
27995WDI_ProcessFeatureCapsExchangeRsp
27996(
27997 WDI_ControlBlockType* pWDICtx,
27998 WDI_EventInfoType* pEventData
27999)
28000{
28001 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
28002 wpt_int32 fCapsStructSize;
28003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28004
28005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028006 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028007
28008 /*-------------------------------------------------------------------------
28009 Sanity check
28010 -------------------------------------------------------------------------*/
28011 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28012 ( NULL == pEventData->pEventData ))
28013 {
28014 /* It will go here when riva is old (doesn't understand this msg) and host is new */
28015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028016 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028017 WDI_ASSERT(0);
28018 return WDI_STATUS_E_FAILURE;
28019 }
28020
28021 /* Allocate memory separately for global variable carrying FW caps */
28022 fCapsStructSize = sizeof(tWlanFeatCaps);
28023 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28024 if ( NULL == gpFwWlanFeatCaps )
28025 {
28026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028027 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028028 WDI_ASSERT(0);
28029 return WDI_STATUS_MEM_FAILURE;
28030 }
28031
28032 /*-------------------------------------------------------------------------
28033 Unpack HAL Response Message - the header was already extracted by the
28034 main Response Handling procedure
28035 -------------------------------------------------------------------------*/
28036 /*-------------------------------------------------------------------------
28037 Extract response and send it to UMAC
28038 -------------------------------------------------------------------------*/
28039
28040 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
28041 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028043 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028044 gpFwWlanFeatCaps->featCaps[0],
28045 gpFwWlanFeatCaps->featCaps[1],
28046 gpFwWlanFeatCaps->featCaps[2],
28047 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028048 );
28049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
28050 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028051 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
28052
28053 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
28054 if (wdiFeatureCapsExchangeCb != NULL)
28055 wdiFeatureCapsExchangeCb(NULL, NULL);
28056
28057 return WDI_STATUS_SUCCESS;
28058}
28059
Mohit Khanna4a70d262012-09-11 16:30:12 -070028060#ifdef WLAN_FEATURE_11AC
28061WDI_Status
28062WDI_ProcessUpdateVHTOpModeRsp
28063(
28064 WDI_ControlBlockType* pWDICtx,
28065 WDI_EventInfoType* pEventData
28066)
28067{
28068 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28069 WDI_Status wdiStatus;
28070 eHalStatus halStatus;
28071
28072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28073
28074 /*-------------------------------------------------------------------------
28075 Sanity check
28076 -------------------------------------------------------------------------*/
28077 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28078 ( NULL == pEventData->pEventData))
28079 {
28080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028081 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028082 WDI_ASSERT(0);
28083 return WDI_STATUS_E_FAILURE;
28084 }
28085 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
28086
28087 /*-------------------------------------------------------------------------
28088 Extract response and send it to UMAC
28089 -------------------------------------------------------------------------*/
28090 halStatus = *((eHalStatus*)pEventData->pEventData);
28091 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28092
28093 /*Notify UMAC*/
28094 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
28095
28096 return WDI_STATUS_SUCCESS;
28097}
28098#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070028099/**
28100 @brief WDI_getHostWlanFeatCaps
28101 WDI API that returns whether the feature passed to it as enum value in
28102 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
28103 variable storing host capability bitmap to find this. This can be used by
28104 other moduels to decide certain things like call different APIs based on
28105 whether a particular feature is supported.
28106
28107 @param
28108
28109 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
28110
28111 @see
28112 @return
28113 0 - if the feature is NOT supported in host
28114 any non-zero value - if the feature is SUPPORTED in host.
28115*/
28116wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
28117{
28118 wpt_uint8 featSupported = 0;
28119 if (gpHostWlanFeatCaps != NULL)
28120 {
28121 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28122 }
28123 else
28124 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028126 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028127 }
28128 return featSupported;
28129}
28130
28131/**
28132 @brief WDI_getFwWlanFeatCaps
28133 WDI API that returns whether the feature passed to it as enum value in
28134 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28135 variable storing host capability bitmap to find this. This can be used by
28136 other moduels to decide certain things like call different APIs based on
28137 whether a particular feature is supported.
28138
28139 @param
28140
28141 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28142 in wlan_hal_msg.h.
28143
28144 @see
28145 @return
28146 0 - if the feature is NOT supported in FW
28147 any non-zero value - if the feature is SUPPORTED in FW.
28148*/
28149wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28150{
28151 wpt_uint8 featSupported = 0;
28152 if (gpFwWlanFeatCaps != NULL)
28153 {
28154 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28155 }
28156 else
28157 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028159 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028160 }
28161 return featSupported;
28162}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028163
28164#ifdef WLAN_FEATURE_11AC
28165WDI_Status
28166WDI_ProcessUpdateVHTOpModeReq
28167(
28168 WDI_ControlBlockType* pWDICtx,
28169 WDI_EventInfoType* pEventData
28170)
28171{
28172 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28173 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28174 wpt_uint8* pSendBuffer = NULL;
28175 wpt_uint16 usDataOffset = 0;
28176 wpt_uint16 usSendSize = 0;
28177
28178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28179
28180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028181 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028182
28183 /*-------------------------------------------------------------------------
28184 Sanity check
28185 -------------------------------------------------------------------------*/
28186 if (( NULL == pEventData ) ||
28187 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28188 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28189 {
28190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028191 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028192 WDI_ASSERT(0);
28193 return WDI_STATUS_E_FAILURE;
28194 }
28195
28196 /*-----------------------------------------------------------------------
28197 Get message buffer
28198 -----------------------------------------------------------------------*/
28199 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
28200 sizeof(WDI_UpdateVHTOpMode),
28201 &pSendBuffer, &usDataOffset, &usSendSize))||
28202 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
28203 {
28204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28205 "Unable to get send buffer in update vht opMode req");
28206 WDI_ASSERT(0);
28207 return WDI_STATUS_E_FAILURE;
28208 }
28209
28210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028211 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028212
28213 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
28214 sizeof(WDI_UpdateVHTOpMode));
28215
28216 /*-------------------------------------------------------------------------
28217 Send Start Request to HAL
28218 -------------------------------------------------------------------------*/
28219 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28220 wdiVHTOpModeCb,
28221 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
28222
28223}
28224
28225WDI_Status
28226WDI_UpdateVHTOpModeReq
28227(
28228 WDI_UpdateVHTOpMode *pData,
28229 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
28230 void* pUserData
28231)
28232{
28233 WDI_EventInfoType wdiEventData;
28234
28235 /*------------------------------------------------------------------------
28236 Sanity Check
28237 ------------------------------------------------------------------------*/
28238 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28239 {
28240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28241 "WDI API call before module is initialized - Fail request");
28242
28243 return WDI_STATUS_E_NOT_ALLOWED;
28244 }
28245
28246 /*------------------------------------------------------------------------
28247 Fill in Event data and post to the Main FSM
28248 ------------------------------------------------------------------------*/
28249 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
28250 wdiEventData.pEventData = pData;
28251 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
28252 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
28253 wdiEventData.pUserData = pUserData;
28254
28255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028256 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028257
28258 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28259
28260}
28261#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028262
28263/**
28264 @brief WDI_TransportChannelDebug -
28265 Display DXE Channel debugging information
28266 User may request to display DXE channel snapshot
28267 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028268
Jeff Johnsonb88db982012-12-10 13:34:59 -080028269 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028270 @param enableStallDetect : Enable stall detect feature
28271 This feature will take effect to data performance
28272 Not integrate till fully verification
28273 @see
28274 @return none
28275*/
28276void WDI_TransportChannelDebug
28277(
28278 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028279 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028280)
28281{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028282 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028283 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070028284}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028285/**
28286 @brief WDI_SsrTimerCB
28287 Callback function for SSR timer, if this is called then the graceful
28288 shutdown for Riva did not happen.
28289
28290 @param pUserData : user data to timer
28291
28292 @see
28293 @return none
28294*/
28295void
28296WDI_SsrTimerCB
28297(
28298 void *pUserData
28299)
28300{
28301 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28303
28304 if (NULL == pWDICtx )
28305 {
28306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028307 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028308 WDI_ASSERT(0);
28309 return;
28310 }
28311 wpalRivaSubystemRestart();
28312
28313 return;
28314
28315}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070028316
28317/**
28318 @brief WDI_SetEnableSSR -
28319 This API is called to enable/disable SSR on WDI timeout.
28320
28321 @param enableSSR : enable/disable SSR
28322
28323 @see
28324 @return none
28325*/
28326void WDI_SetEnableSSR(wpt_boolean enableSSR)
28327{
28328 gWDICb.bEnableSSR = enableSSR;
28329}
Leo Chang9056f462013-08-01 19:21:11 -070028330
28331
28332#ifdef FEATURE_WLAN_LPHB
28333/**
Leo Changd9df8aa2013-09-26 13:32:26 -070028334 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070028335 This function will be invoked when FW detects low power
28336 heart beat failure
28337
28338 @param pWDICtx : wdi context
28339 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070028340 @see
28341 @return Result of the function call
28342*/
28343WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070028344WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070028345(
28346 WDI_ControlBlockType* pWDICtx,
28347 WDI_EventInfoType* pEventData
28348)
28349{
28350 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070028351 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070028352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28353
28354 /*-------------------------------------------------------------------------
28355 Sanity check
28356 -------------------------------------------------------------------------*/
28357 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28358 (NULL == pEventData->pEventData))
28359 {
28360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28361 "%s: Invalid parameters", __func__);
28362 WDI_ASSERT(0);
28363 return WDI_STATUS_E_FAILURE;
28364 }
28365
28366 /*-------------------------------------------------------------------------
28367 Extract indication and send it to UMAC
28368 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070028369 wpalMemoryCopy(&lphbIndicationParam,
28370 pEventData->pEventData,
28371 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070028372
Leo Changd9df8aa2013-09-26 13:32:26 -070028373 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070028374 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028375 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028376 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028377 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028378 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070028379 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070028380 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070028381 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070028382 /*Notify UMAC*/
28383 if (pWDICtx->wdiLowLevelIndCB)
28384 {
28385 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28386 }
28387
28388 return WDI_STATUS_SUCCESS;
28389}
28390
28391/**
28392 @brief WDI_ProcessLphbCfgRsp -
28393 LPHB configuration response from FW
28394
28395 @param pWDICtx : wdi context
28396 pEventData : indication data
28397
28398 @see
28399 @return Result of the function call
28400*/
28401WDI_Status WDI_ProcessLphbCfgRsp
28402(
28403 WDI_ControlBlockType* pWDICtx,
28404 WDI_EventInfoType* pEventData
28405)
28406{
28407 WDI_Status wdiStatus;
28408 eHalStatus halStatus;
28409 WDI_LphbCfgCb wdiLphbCfgCb;
28410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28411
28412 /*-------------------------------------------------------------------------
28413 Sanity check
28414 -------------------------------------------------------------------------*/
28415 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28416 (NULL == pEventData->pEventData))
28417 {
28418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28419 "%s: Invalid parameters", __func__);
28420 WDI_ASSERT(0);
28421 return WDI_STATUS_E_FAILURE;
28422 }
28423
28424 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28425
28426 /*-------------------------------------------------------------------------
28427 Extract response and send it to UMAC
28428 -------------------------------------------------------------------------*/
28429 halStatus = *((eHalStatus*)pEventData->pEventData);
28430 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28431
28432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28433 "LPHB Cfg Rsp Return status %d", wdiStatus);
28434 /*Notify UMAC*/
28435 if (NULL != wdiLphbCfgCb)
28436 {
28437 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28438 }
28439
28440 return WDI_STATUS_SUCCESS;
28441}
28442
28443/**
28444 @brief WDI_ProcessLPHBConfReq -
28445 LPHB configuration request to FW
28446
28447 @param pWDICtx : wdi context
28448 pEventData : indication data
28449
28450 @see
28451 @return none
28452*/
28453WDI_Status WDI_ProcessLPHBConfReq
28454(
28455 WDI_ControlBlockType* pWDICtx,
28456 WDI_EventInfoType* pEventData
28457)
28458{
28459 WDI_LPHBReq *pLphbReqParams;
28460 WDI_Status wdiStatus;
28461 wpt_uint8* pSendBuffer = NULL;
28462 wpt_uint16 usDataOffset = 0;
28463 wpt_uint16 usSendSize = 0;
28464 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28466
28467 /*-------------------------------------------------------------------------
28468 Sanity check
28469 -------------------------------------------------------------------------*/
28470 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28471 {
28472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28473 "%s: Invalid parameters in Suspend ind",__func__);
28474 WDI_ASSERT(0);
28475 return WDI_STATUS_E_FAILURE;
28476 }
28477
28478 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28479
28480 /*-----------------------------------------------------------------------
28481 Get message buffer
28482 -----------------------------------------------------------------------*/
28483 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28484 WDI_LPHB_CFG_REQ,
28485 sizeof(tHalLowPowerHeartBeatReqMsg),
28486 &pSendBuffer, &usDataOffset, &usSendSize))||
28487 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28488 {
28489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28490 "Unable to get send buffer in LPHB Ind ");
28491 WDI_ASSERT(0);
28492 return WDI_STATUS_E_FAILURE;
28493 }
28494
28495 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28496 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28497
28498 halLphbReqRarams->lowPowerHeartBeatCmdType =
28499 (tANI_U16)(++pLphbReqParams->cmd);
28500 switch ((tANI_U16)pLphbReqParams->cmd)
28501 {
28502 case WDI_LPHB_SET_EN_PARAMS_INDID:
28503 halLphbReqRarams->sessionIdx =
28504 pLphbReqParams->params.lphbEnableReq.session;
28505 halLphbReqRarams->options.control.heartBeatEnable =
28506 pLphbReqParams->params.lphbEnableReq.enable;
28507 halLphbReqRarams->options.control.heartBeatType =
28508 pLphbReqParams->params.lphbEnableReq.item;
28509 break;
28510
28511 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28512 halLphbReqRarams->sessionIdx =
28513 pLphbReqParams->params.lphbTcpParamReq.session;
28514 halLphbReqRarams->options.tcpParams.timeOutSec =
28515 pLphbReqParams->params.lphbTcpParamReq.timeout;
28516 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28517 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28518 sizeof(v_U32_t));
28519 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28520 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28521 sizeof(v_U32_t));
28522
28523 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28524 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28525 WDI_MAC_ADDR_LEN);
28526
28527 halLphbReqRarams->options.tcpParams.hostPort =
28528 pLphbReqParams->params.lphbTcpParamReq.src_port;
28529 halLphbReqRarams->options.tcpParams.destPort =
28530 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070028531 halLphbReqRarams->options.tcpParams.timePeriodSec =
28532 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
28533 halLphbReqRarams->options.tcpParams.tcpSn =
28534 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070028535 break;
28536
28537 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28538 halLphbReqRarams->sessionIdx =
28539 pLphbReqParams->params.lphbTcpFilterReq.session;
28540 halLphbReqRarams->options.tcpUdpFilter.offset =
28541 pLphbReqParams->params.lphbTcpFilterReq.offset;
28542 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28543 pLphbReqParams->params.lphbTcpFilterReq.length;
28544 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28545 pLphbReqParams->params.lphbTcpFilterReq.filter,
28546 WDI_LPHB_FILTER_LEN);
28547 break;
28548
28549 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28550 halLphbReqRarams->sessionIdx =
28551 pLphbReqParams->params.lphbUdpParamReq.session;
28552 halLphbReqRarams->options.udpParams.timeOutSec =
28553 pLphbReqParams->params.lphbUdpParamReq.timeout;
28554 halLphbReqRarams->options.udpParams.timePeriodSec =
28555 pLphbReqParams->params.lphbUdpParamReq.interval;
28556 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28557 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28558 sizeof(v_U32_t));
28559 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28560 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28561 sizeof(v_U32_t));
28562
28563 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28564 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28565 WDI_MAC_ADDR_LEN);
28566
28567 halLphbReqRarams->options.udpParams.hostPort =
28568 pLphbReqParams->params.lphbUdpParamReq.src_port;
28569 halLphbReqRarams->options.udpParams.destPort =
28570 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28571 break;
28572
28573 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28574 halLphbReqRarams->sessionIdx =
28575 pLphbReqParams->params.lphbUdpFilterReq.session;
28576 halLphbReqRarams->options.tcpUdpFilter.offset =
28577 pLphbReqParams->params.lphbUdpFilterReq.offset;
28578 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28579 pLphbReqParams->params.lphbUdpFilterReq.length;
28580 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28581 pLphbReqParams->params.lphbUdpFilterReq.filter,
28582 WDI_LPHB_FILTER_LEN);
28583 break;
28584
28585 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28586 /* NA */
28587 break;
28588
28589 default:
28590 break;
28591 }
28592
28593 /*-------------------------------------------------------------------------
28594 Send Suspend Request to HAL
28595 -------------------------------------------------------------------------*/
28596 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28597 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28598
28599 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28600 usSendSize, pWDICtx->pfncRspCB,
28601 pWDICtx->pReqStatusUserData,
28602 WDI_LPHB_CFG_RESP);
28603
28604 return wdiStatus;
28605}
28606
28607/**
28608 @brief WDI_LPHBConfReq -
28609 LPHB configuration request API
28610
28611 @param lphbconfParam : configuration parameter
28612 usrData : client context
28613 lphbCfgCb : callback function pointer
28614
28615 @see
28616 @return Success or fail status code
28617*/
28618WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28619 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28620{
28621 WDI_EventInfoType wdiEventData;
28622
28623 /*------------------------------------------------------------------------
28624 Sanity Check
28625 ------------------------------------------------------------------------*/
28626 if (eWLAN_PAL_FALSE == gWDIInitialized)
28627 {
28628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28629 "WDI API call before module is initialized - Fail request");
28630
28631 return WDI_STATUS_E_NOT_ALLOWED;
28632 }
28633
28634 /*------------------------------------------------------------------------
28635 Fill in Event data and post to the Main FSM
28636 ------------------------------------------------------------------------*/
28637 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28638 wdiEventData.pEventData = lphbconfParam;
28639 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28640 wdiEventData.pCBfnc = lphbCfgCb;
28641 wdiEventData.pUserData = usrData;
28642
28643 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28644}
28645#endif /* FEATURE_WLAN_LPHB */
28646
Ravi Joshid2ca7c42013-07-23 08:37:49 -070028647/**
28648 @brief WDI_ProcessIbssPeerInactivityInd
28649 Process peer inactivity indication coming from HAL
28650
28651 @param pWDICtx: pointer to the WLAN DAL context
28652 pEventData: pointer to the event information structure
28653 @see
28654 @return Result of the function call
28655*/
28656WDI_Status
28657WDI_ProcessIbssPeerInactivityInd
28658(
28659 WDI_ControlBlockType* pWDICtx,
28660 WDI_EventInfoType* pEventData
28661)
28662{
28663 WDI_LowLevelIndType wdiInd;
28664 tIbssPeerInactivityIndMsg halIbssIndMsg;
28665
28666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28667
28668 /*-------------------------------------------------------------------------
28669 Sanity check
28670 -------------------------------------------------------------------------*/
28671 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28672 ( NULL == pEventData->pEventData ))
28673 {
28674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28675 "%s: Invalid parameters", __func__);
28676 WDI_ASSERT( 0 );
28677 return WDI_STATUS_E_FAILURE;
28678 }
28679
28680 /*-------------------------------------------------------------------------
28681 Extract indication and send it to UMAC
28682 -------------------------------------------------------------------------*/
28683 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28684 pEventData->pEventData,
28685 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28686
28687 /*Fill in the indication parameters*/
28688 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28689
28690 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28691 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28692
28693 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28694 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28695
28696 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28697 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28698 sizeof(tSirMacAddr));
28699
28700 /*Notify UMAC*/
28701 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28702
28703 return WDI_STATUS_SUCCESS;
28704
28705} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053028706
Chittajit Mitraf5413a42013-10-18 14:20:08 -070028707/**
28708*@brief WDI_RateUpdateInd will be called when the upper MAC
28709 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053028710
Chittajit Mitraf5413a42013-10-18 14:20:08 -070028711
28712 @param wdiRateUpdateIndParams:
28713
28714
28715 @see
28716 @return Result of the function call
28717*/
28718WDI_Status
28719WDI_RateUpdateInd
28720(
28721 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
28722)
28723{
28724 WDI_EventInfoType wdiEventData;
28725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28726
28727 /*------------------------------------------------------------------------
28728 Sanity Check
28729 ------------------------------------------------------------------------*/
28730 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28731 {
28732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28733 "WDI API call before module is initialized - Fail request");
28734
28735 return WDI_STATUS_E_NOT_ALLOWED;
28736 }
28737
28738 /*------------------------------------------------------------------------
28739 Fill in Event data and post to the Main FSM
28740 ------------------------------------------------------------------------*/
28741 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
28742 wdiEventData.pEventData = wdiRateUpdateIndParams;
28743 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
28744 wdiEventData.pCBfnc = NULL;
28745 wdiEventData.pUserData = NULL;
28746
28747 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28748
28749}/* WDI_RateUpdateInd */
28750
28751/**
28752 @brief Process Rate Update Indication and post it to HAL
28753
28754 @param pWDICtx: pointer to the WLAN DAL context
28755 pEventData: pointer to the event information structure
28756
28757 @see
28758 @return Result of the function call
28759*/
28760WDI_Status
28761WDI_ProcessRateUpdateInd
28762(
28763 WDI_ControlBlockType* pWDICtx,
28764 WDI_EventInfoType* pEventData
28765)
28766{
28767 wpt_uint8* pSendBuffer = NULL;
28768 wpt_uint16 usDataOffset = 0;
28769 wpt_uint16 usSendSize = 0;
28770 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
28771 tHalRateUpdateInd *pRateUpdateInd;
28772 WDI_Status wdiStatus;
28773
28774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28775
28776 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28777 "%s", __func__);
28778
28779 /*-------------------------------------------------------------------------
28780 Sanity check
28781 -------------------------------------------------------------------------*/
28782 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28783 {
28784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28785 "%s: Invalid parameters", __func__);
28786 WDI_ASSERT(0);
28787 return WDI_STATUS_E_FAILURE;
28788 }
28789 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
28790 /*-----------------------------------------------------------------------
28791 Get message buffer
28792 -----------------------------------------------------------------------*/
28793
28794 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28795 WDI_RATE_UPDATE_IND,
28796 sizeof(tHalRateUpdateParams),
28797 &pSendBuffer, &usDataOffset, &usSendSize))||
28798 ( usSendSize < (usDataOffset +
28799 sizeof(tHalRateUpdateParams) )))
28800 {
28801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28802 "Unable to get send buffer in Rate Update Indication %p ",
28803 pEventData);
28804 WDI_ASSERT(0);
28805 return WDI_STATUS_E_FAILURE;
28806 }
28807
28808 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
28809
28810 /* Copy the bssid */
28811 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
28812 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
28813
28814 /* Copy the tx flags */
28815 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
28816 pwdiRateUpdateInd->ucastDataRateTxFlag;
28817 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
28818 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
28819 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
28820 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
28821 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
28822 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
28823
28824 /* Copy the tx rates */
28825 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
28826 pwdiRateUpdateInd->ucastDataRate;
28827 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
28828 pwdiRateUpdateInd->reliableMcastDataRate;
28829 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
28830 pwdiRateUpdateInd->mcastDataRate24GHz;
28831 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
28832 pwdiRateUpdateInd->mcastDataRate5GHz;
28833
28834 /*-------------------------------------------------------------------------
28835 Send Rate Update Indication to HAL
28836 -------------------------------------------------------------------------*/
28837 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
28838 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
28839
28840 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
28841
28842 return (wdiStatus != WDI_STATUS_SUCCESS) ?
28843 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
28844
28845} /* WDI_ProcessRateUpdateInd */
28846
28847#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053028848/**
28849 @brief Process stop batch indication from WDA
28850
28851 @param pWDICtx: pointer to the WLAN DAL context
28852 pEventData: pointer to the event information structure
28853
28854 @see
28855 @return Result of the function call
28856*/
28857WDI_Status
28858WDI_ProcessStopBatchScanInd
28859(
28860 WDI_ControlBlockType* pWDICtx,
28861 WDI_EventInfoType* pEventData
28862)
28863{
28864 wpt_uint8* pSendBuffer = NULL;
28865 wpt_uint16 usDataOffset = 0;
28866 wpt_uint16 usSendSize = 0;
28867 WDI_Status wdiStatus;
28868 tHalBatchScanStopIndParam *pHalInd = NULL;
28869 WDI_StopBatchScanIndType *pWdiInd = NULL;
28870
28871
28872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28873
28874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28875 "%s", __func__);
28876
28877 /*-------------------------------------------------------------------------
28878 Sanity check
28879 -------------------------------------------------------------------------*/
28880
28881 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28882 {
28883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28884 "%s: Invalid parameters", __func__);
28885 WDI_ASSERT(0);
28886 return WDI_STATUS_E_FAILURE;
28887 }
28888 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
28889 /*-----------------------------------------------------------------------
28890 Get message buffer
28891 -----------------------------------------------------------------------*/
28892
28893 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28894 WDI_STOP_BATCH_SCAN_IND,
28895 sizeof(tHalBatchScanStopIndParam),
28896 &pSendBuffer, &usDataOffset, &usSendSize))||
28897 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
28898 {
28899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28900 "Unable to get send buffer in stop batch scan ind %p ",
28901 pEventData);
28902 WDI_ASSERT(0);
28903 return WDI_STATUS_E_FAILURE;
28904 }
28905
28906 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
28907 pHalInd->param = pWdiInd->param;
28908
28909 pWDICtx->pReqStatusUserData = NULL;
28910 pWDICtx->pfncRspCB = NULL;
28911 /*-------------------------------------------------------------------------
28912 Send Stop batch scan indication to HAL
28913 -------------------------------------------------------------------------*/
28914 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28915 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28916}
28917
28918/**
28919 @brief This API is called to trigger batch scan results from FW
28920
28921 @param pWDICtx: pointer to the WLAN DAL context
28922 pEventData: pointer to the event information structure
28923
28924 @see
28925 @return Result of the function call
28926*/
28927WDI_Status
28928WDI_ProcessTriggerBatchScanResultInd
28929(
28930 WDI_ControlBlockType* pWDICtx,
28931 WDI_EventInfoType* pEventData
28932)
28933{
28934 WDI_Status wdiStatus;
28935 wpt_uint8* pSendBuffer = NULL;
28936 wpt_uint16 usDataOffset = 0;
28937 wpt_uint16 usSendSize = 0;
28938 tHalBatchScanTriggerResultParam *pHalInd = NULL;
28939 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
28940
28941
28942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28943
28944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28945 "%s", __func__);
28946
28947 /*-------------------------------------------------------------------------
28948 Sanity check
28949 -------------------------------------------------------------------------*/
28950
28951 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28952 {
28953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28954 "%s: Invalid parameters", __func__);
28955 WDI_ASSERT(0);
28956 return WDI_STATUS_E_FAILURE;
28957 }
28958 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
28959 /*-----------------------------------------------------------------------
28960 Get message buffer
28961 -----------------------------------------------------------------------*/
28962
28963 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28964 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
28965 sizeof(tHalBatchScanTriggerResultParam),
28966 &pSendBuffer, &usDataOffset, &usSendSize))||
28967 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
28968 {
28969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28970 "Unable to get send buffer in stop batch scan ind %p ",
28971 pEventData);
28972 WDI_ASSERT(0);
28973 return WDI_STATUS_E_FAILURE;
28974 }
28975
28976 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
28977 pHalInd->param = pWdiInd->param;
28978
28979 pWDICtx->pReqStatusUserData = NULL;
28980 pWDICtx->pfncRspCB = NULL;
28981 /*-------------------------------------------------------------------------
28982 Send trigger batch scan result indication to HAL
28983 -------------------------------------------------------------------------*/
28984 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28985 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28986}
28987
28988
28989/**
28990 @brief Process set batch scan response from FW
28991
28992 @param pWDICtx: pointer to the WLAN DAL context
28993 pEventData: pointer to the event information structure
28994
28995 @see
28996 @return Result of the function call
28997*/
28998WDI_Status
28999WDI_ProcessSetBatchScanRsp
29000(
29001 WDI_ControlBlockType* pWDICtx,
29002 WDI_EventInfoType* pEventData
29003)
29004{
29005 WDI_SetBatchScanCb wdiSetBatchScanCb;
29006 WDI_SetBatchScanRspType *pSetBatchScanRsp;
29007
29008 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
29009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29010
29011 /*sanity check*/
29012 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29013 ( NULL == pEventData->pEventData))
29014 {
29015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29016 "%s: Invalid parameters", __func__);
29017 WDI_ASSERT(0);
29018 return WDI_STATUS_E_FAILURE;
29019 }
29020
29021 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
29022 if ( NULL == wdiSetBatchScanCb)
29023 {
29024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29025 "%s: call back function is NULL", __func__);
29026 WDI_ASSERT(0);
29027 return WDI_STATUS_E_FAILURE;
29028 }
29029
29030 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
29031
29032 if (NULL == pSetBatchScanRsp)
29033 {
29034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029035 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053029036 pWDICtx, pEventData, pEventData->pEventData);
29037 WDI_ASSERT(0);
29038 return WDI_STATUS_E_FAILURE;
29039 }
29040
29041 /*extract response and send it to UMAC*/
29042 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
29043
29044 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
29045
29046 /*Notify UMAC*/
29047 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
29048
29049 wpalMemoryFree(pSetBatchScanRsp);
29050
29051 return WDI_STATUS_SUCCESS;
29052}/*WDI_ProcessSetBatchScanRsp*/
29053
29054/**
29055 @brief Process batch scan result indication from FW
29056
29057 @param pWDICtx: pointer to the WLAN DAL context
29058 pEventData: pointer to the event information structure
29059
29060 @see
29061 @return Result of the function call
29062*/
29063WDI_Status
29064WDI_ProcessBatchScanResultInd
29065(
29066 WDI_ControlBlockType* pWDICtx,
29067 WDI_EventInfoType* pEventData
29068)
29069{
29070 void *pBatchScanResultInd;
29071 WDI_LowLevelIndType wdiInd;
29072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29073
29074 /*sanity check*/
29075 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29076 ( NULL == pEventData->pEventData))
29077 {
29078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29079 "%s: Invalid parameters", __func__);
29080 WDI_ASSERT(0);
29081 return WDI_STATUS_E_FAILURE;
29082 }
29083
29084 /*extract response and send it to UMAC*/
29085 pBatchScanResultInd = (void *)pEventData->pEventData;
29086
29087 /*Fill in the indication parameters*/
29088 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
29089
29090 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
29091
29092 /*Notify UMAC*/
29093 if (pWDICtx->wdiLowLevelIndCB)
29094 {
29095 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29096 }
29097 else
29098 {
29099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29100 "%s: WDILowLevelIndCb is null", __func__);
29101 WDI_ASSERT(0);
29102 return WDI_STATUS_E_FAILURE;
29103 }
29104
29105 return WDI_STATUS_SUCCESS;
29106} /*End of WDI_ProcessBatchScanResultInd*/
29107
29108/**
29109 @brief WDI_ProcessSetBatchScanReq -
29110 Set batch scan request to FW
29111
29112 @param pWDICtx : wdi context
29113 pEventData : indication data
29114
29115 @see
29116 @return none
29117*/
29118WDI_Status WDI_ProcessSetBatchScanReq
29119(
29120 WDI_ControlBlockType* pWDICtx,
29121 WDI_EventInfoType* pEventData
29122)
29123{
29124 WDI_SetBatchScanReqType *pWdiReq;
29125 WDI_Status wdiStatus;
29126 wpt_uint8* pSendBuffer = NULL;
29127 wpt_uint16 usDataOffset = 0;
29128 wpt_uint16 usSendSize = 0;
29129 tHalBatchScanSetParams *pHalReq;
29130 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29131
29132 /*sanity check*/
29133 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29134 {
29135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29136 "%s: Invalid parameters in set batch scan request", __func__);
29137 WDI_ASSERT(0);
29138 return WDI_STATUS_E_FAILURE;
29139 }
29140
29141
29142 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
29143
29144
29145 /*get message buffer*/
29146 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29147 WDI_SET_BATCH_SCAN_REQ,
29148 sizeof(tHalBatchScanSetParams),
29149 &pSendBuffer, &usDataOffset, &usSendSize))||
29150 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
29151 {
29152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29153 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
29154 WDI_ASSERT(0);
29155 return WDI_STATUS_E_FAILURE;
29156 }
29157
29158 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
29159
29160 pHalReq->rtt = pWdiReq->rtt;
29161 pHalReq->rfBand = pWdiReq->rfBand;
29162 pHalReq->bestNetworks = pWdiReq->bestNetwork;
29163 pHalReq->scanInterval = pWdiReq->scanFrequency;
29164 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
29165
29166 /*send set batch scan request to fw*/
29167 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29168 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29169
29170 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29171 usSendSize, pWDICtx->pfncRspCB,
29172 pWDICtx->pReqStatusUserData,
29173 WDI_SET_BATCH_SCAN_RESP);
29174
29175 return wdiStatus;
29176}
29177
29178/**
29179 @brief WDI_SetBatchScanReq
29180 This API is called to set batch scan request in FW
29181
29182 @param pBatchScanReqParam : pointer to set batch scan re param
29183 usrData : Client context
29184 setBatchScanRspCb : set batch scan resp callback
29185 @see
29186 @return SUCCESS or FAIL
29187*/
29188WDI_Status WDI_SetBatchScanReq
29189(
29190 void *pBatchScanReqParam,
29191 void *usrData,
29192 WDI_SetBatchScanCb setBatchScanRspCb
29193)
29194{
29195 WDI_EventInfoType wdiEventData;
29196
29197 /*sanity check*/
29198 if (eWLAN_PAL_FALSE == gWDIInitialized)
29199 {
29200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29201 "WDI API call before module is initialized - Fail request");
29202
29203 return WDI_STATUS_E_NOT_ALLOWED;
29204 }
29205
29206 /* fill in event data and post to the main FSM */
29207 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
29208 wdiEventData.pEventData = pBatchScanReqParam;
29209 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
29210 wdiEventData.pCBfnc = setBatchScanRspCb;
29211 wdiEventData.pUserData = usrData;
29212
29213 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29214}
29215
29216/**
29217 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
29218
29219 @param None
29220
29221 @see
29222
29223 @return Status of the request
29224*/
29225WDI_Status
29226WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
29227{
29228 WDI_EventInfoType wdiEventData;
29229
29230 /*-------------------------------------------------------------------------
29231 Sanity Check
29232 ------------------------------------------------------------------------*/
29233 if (eWLAN_PAL_FALSE == gWDIInitialized)
29234 {
29235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29236 "WDI API call before module is initialized - Fail request!");
29237
29238 return WDI_STATUS_E_NOT_ALLOWED;
29239 }
29240
29241 /*-------------------------------------------------------------------------
29242 Fill in Event data and post to the Main FSM
29243 ------------------------------------------------------------------------*/
29244 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
29245 wdiEventData.pEventData = pWdiReq;
29246 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
29247 wdiEventData.pCBfnc = NULL;
29248 wdiEventData.pUserData = NULL;
29249
29250 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29251}
29252
29253/**
29254 @brief WDI_TriggerBatchScanResultInd
29255 This API is called to pull batch scan result from FW
29256
29257 @param pWdiReq : pointer to get batch scan ind param
29258 @see
29259 @return SUCCESS or FAIL
29260*/
29261WDI_Status WDI_TriggerBatchScanResultInd
29262(
29263 WDI_TriggerBatchScanResultIndType *pWdiReq
29264)
29265{
29266 WDI_EventInfoType wdiEventData;
29267 /*-------------------------------------------------------------------------
29268 Sanity Check
29269 ------------------------------------------------------------------------*/
29270 if (eWLAN_PAL_FALSE == gWDIInitialized)
29271 {
29272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29273 "WDI API call before module is initialized - Fail request!");
29274
29275 return WDI_STATUS_E_NOT_ALLOWED;
29276 }
29277
29278 /*-------------------------------------------------------------------------
29279 Fill in Event data and post to the Main FSM
29280 ------------------------------------------------------------------------*/
29281 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
29282 wdiEventData.pEventData = pWdiReq;
29283 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
29284 wdiEventData.pCBfnc = NULL;
29285 wdiEventData.pUserData = NULL;
29286
29287 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29288}
Rajeev79dbe4c2013-10-05 11:03:42 +053029289#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080029290
29291#ifdef FEATURE_WLAN_CH_AVOID
29292/**
29293 @brief v -WDI_ProcessChAvoidInd
29294
29295
29296 @param pWDICtx : wdi context
29297 pEventData : indication data
29298 @see
29299 @return Result of the function call
29300*/
29301WDI_Status
29302WDI_ProcessChAvoidInd
29303(
29304 WDI_ControlBlockType* pWDICtx,
29305 WDI_EventInfoType* pEventData
29306)
29307{
29308 WDI_LowLevelIndType wdiInd;
29309 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
29310 wpt_uint16 rangeLoop;
29311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29312
29313 /*-------------------------------------------------------------------------
29314 Sanity check
29315 -------------------------------------------------------------------------*/
29316 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29317 (NULL == pEventData->pEventData))
29318 {
29319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29320 "%s: Invalid parameters", __func__);
29321 WDI_ASSERT(0);
29322 return WDI_STATUS_E_FAILURE;
29323 }
29324
29325 /*-------------------------------------------------------------------------
29326 Extract indication and send it to UMAC
29327 -------------------------------------------------------------------------*/
29328 wpalMemoryCopy(&chAvoidIndicationParam,
29329 pEventData->pEventData,
29330 sizeof(tHalAvoidFreqRangeIndParams));
29331
29332 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
29333 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
29334 chAvoidIndicationParam.avoidCnt;
29335 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
29336 (void *)chAvoidIndicationParam.avoidRange,
29337 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
29338 sizeof(WDI_ChAvoidFreqType));
29339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29340 "%s: band count %d", __func__,
29341 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
29342 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
29343 {
29344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29345 "%s: srart freq %d, end freq %d", __func__,
29346 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
29347 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
29348 }
29349
29350 /*Notify UMAC*/
29351 if (pWDICtx->wdiLowLevelIndCB)
29352 {
29353 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29354 }
29355
29356 return WDI_STATUS_SUCCESS;
29357}
29358#endif /* FEATURE_WLAN_CH_AVOID */
29359
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053029360/**
29361 @brief Process OBSS Start scan result indication
29362
29363 @param pWDICtx: pointer to the WLAN DAL context
29364 pEventData: pointer to the event information structure
29365
29366 @see
29367 @return Result of the function call
29368*/
29369WDI_Status
29370WDI_ProcessHT40OBSSScanInd
29371(
29372 WDI_ControlBlockType* pWDICtx,
29373 WDI_EventInfoType* pEventData
29374)
29375{
29376 wpt_uint8* pSendBuffer = NULL;
29377 wpt_uint16 usDataOffset = 0;
29378 wpt_uint16 usSendSize = 0;
29379 wpt_uint16 usLen = 0;
29380 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
29381 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
29382 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
29383 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
29384
29385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29386
29387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29388 "%s", __func__);
29389
29390 /*-------------------------------------------------------------------------
29391 Sanity check
29392 -------------------------------------------------------------------------*/
29393 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29394 {
29395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29396 "%s: Invalid parameters", __func__);
29397 WDI_ASSERT(0);
29398 return WDI_STATUS_E_FAILURE;
29399 }
29400 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
29401
29402 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
29403 /*-----------------------------------------------------------------------
29404 Get message buffer
29405 -----------------------------------------------------------------------*/
29406
29407 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29408 WDI_START_HT40_OBSS_SCAN_IND,
29409 sizeof(tHT40ObssScanIndType),
29410 &pSendBuffer, &usDataOffset, &usSendSize))||
29411 ( usSendSize < (usDataOffset + usLen )))
29412 {
29413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29414 "Unable to get send buffer in HT40 OBSS Start req %p ",
29415 pEventData);
29416 WDI_ASSERT(0);
29417 return WDI_STATUS_E_FAILURE;
29418 }
29419 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
29420 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
29421 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
29422 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
29423 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
29424 pHT40ObssScanInd->OBSSScanActiveDwellTime =
29425 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
29426 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
29427 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
29428 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
29429 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
29430 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
29431 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
29432 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
29433 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
29434 pHT40ObssScanInd->OBSSScanActivityThreshold =
29435 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
29436 pHT40ObssScanInd->selfStaIdx =
29437 pwdiHT40OBSSScanInd->selfStaIdx;
29438 pHT40ObssScanInd->bssIdx =
29439 pwdiHT40OBSSScanInd->bssIdx;
29440 pHT40ObssScanInd->fortyMHZIntolerent =
29441 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
29442 pHT40ObssScanInd->channelCount =
29443 pwdiHT40OBSSScanInd->channelCount;
29444
29445 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
29446 WDI_ROAM_SCAN_MAX_CHANNELS);
29447 pHT40ObssScanInd->ieFieldLen =
29448 pwdiHT40OBSSScanInd->ieFieldLen;
29449
29450 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
29451 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
29452 pWDICtx->pReqStatusUserData = NULL;
29453 pWDICtx->pfncRspCB = NULL;
29454
29455 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
29456 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
29457
29458 /*-------------------------------------------------------------------------
29459 Send OBSS Start Indication to HAL
29460 -------------------------------------------------------------------------*/
29461 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29462 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29463
29464} /*End of WDI_ProcessHT40OBSSStartScanInd*/
29465
29466
29467/**
29468 @brief wdi_HT40OBSSScanInd
29469 This API is called to start OBSS scan
29470
29471 @param pWdiReq : pointer to get ind param
29472 @see
29473 @return SUCCESS or FAIL
29474*/
29475WDI_Status WDI_HT40OBSSScanInd
29476(
29477 WDI_HT40ObssScanParamsType *pWdiReq
29478)
29479{
29480 WDI_EventInfoType wdiEventData;
29481
29482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29483 "%s", __func__);
29484 /*-------------------------------------------------------------------------
29485 Sanity Check
29486 ------------------------------------------------------------------------*/
29487 if (eWLAN_PAL_FALSE == gWDIInitialized)
29488 {
29489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29490 "WDI API call before module is initialized - Fail request!");
29491
29492 return WDI_STATUS_E_NOT_ALLOWED;
29493 }
29494
29495 /*-------------------------------------------------------------------------
29496 Fill in Event data and post to the Main FSM
29497 ------------------------------------------------------------------------*/
29498 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
29499 wdiEventData.pEventData = pWdiReq;
29500 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
29501 wdiEventData.pCBfnc = NULL;
29502 wdiEventData.pUserData = NULL;
29503
29504
29505 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29506}
29507
29508/**
29509 @brief Process OBSS Stop scan result
29510
29511 @param pWDICtx: pointer to the WLAN DAL context
29512 pEventData: pointer to the event information structure
29513
29514 @see
29515 @return Result of the function call
29516*/
29517WDI_Status
29518WDI_ProcessHT40OBSSStopScanInd
29519(
29520 WDI_ControlBlockType* pWDICtx,
29521 WDI_EventInfoType* pEventData
29522)
29523{
29524 wpt_uint8* pSendBuffer = NULL;
29525 wpt_uint16 usDataOffset = 0;
29526 wpt_uint16 usSendSize = 0;
29527 wpt_uint16 usLen = 0;
29528 wpt_uint8 *wdiBssIdx = 0;
29529 tANI_U8 *bssIdx = 0;
29530 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
29531
29532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29533
29534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29535 "%s", __func__);
29536
29537 /*-------------------------------------------------------------------------
29538 Sanity check
29539 -------------------------------------------------------------------------*/
29540 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29541 {
29542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29543 "%s: Invalid parameters", __func__);
29544 WDI_ASSERT(0);
29545 return WDI_STATUS_E_FAILURE;
29546 }
29547 bssIdx = (wpt_uint8*)pEventData->pEventData;
29548 /*-----------------------------------------------------------------------
29549 Get message buffer
29550 -----------------------------------------------------------------------*/
29551
29552 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29553 WDI_STOP_HT40_OBSS_SCAN_IND,
29554 sizeof(tANI_U8),
29555 &pSendBuffer, &usDataOffset, &usSendSize))||
29556 ( usSendSize < (usDataOffset + usLen )))
29557 {
29558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29559 "Unable to get send buffer in HT40 OBSS Start req %p ",
29560 pEventData);
29561 WDI_ASSERT(0);
29562 return WDI_STATUS_E_FAILURE;
29563 }
29564
29565 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
29566 bssIdx = wdiBssIdx;
29567
29568 pWDICtx->pReqStatusUserData = NULL;
29569 pWDICtx->pfncRspCB = NULL;
29570
29571 /*-------------------------------------------------------------------------
29572 Send DHCP Start Indication to HAL
29573 -------------------------------------------------------------------------*/
29574 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29575 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29576} /*End of WDI_ProcessHT40OBSSStopScanInd*/
29577
29578/**
29579 @brief WDI_HT40OBSSStopScanInd
29580 This API is called to start OBSS scan
29581 @param pWdiReq : pointer to get ind param
29582 @see
29583 @return SUCCESS or FAIL
29584*/
29585WDI_Status WDI_HT40OBSSStopScanInd
29586(
29587 wpt_uint8 bssIdx
29588)
29589{
29590 WDI_EventInfoType wdiEventData;
29591
29592 /*-------------------------------------------------------------------------
29593 Sanity Check
29594 ------------------------------------------------------------------------*/
29595 if (eWLAN_PAL_FALSE == gWDIInitialized)
29596 {
29597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29598 "WDI API call before module is initialized - Fail request!");
29599
29600 return WDI_STATUS_E_NOT_ALLOWED;
29601 }
29602
29603 /*-------------------------------------------------------------------------
29604 Fill in Event data and post to the Main FSM
29605 ------------------------------------------------------------------------*/
29606 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
29607 wdiEventData.pEventData = &bssIdx;
29608 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
29609 wdiEventData.pCBfnc = NULL;
29610 wdiEventData.pUserData = NULL;
29611
29612 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29613}
29614