blob: a4f2be4648d621d3062aaffd526ec50eeaea5b43 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05302 * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved.
Kiet Lam1ed83fc2014-02-19 01:15:45 -08003 *
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/*
Kiet Lama7f454d2014-07-24 12:04:06 -070023 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
Kiet Lam1ed83fc2014-02-19 01:15:45 -080026 */
27
Jeff Johnson295189b2012-06-20 16:38:30 -070028
Kiet Lama7f454d2014-07-24 12:04:06 -070029
30
Jeff Johnson295189b2012-06-20 16:38:30 -070031/*===========================================================================
32
33 W L A N _ Q C T _ W D I. C
34
35 OVERVIEW:
36
Jeff Johnsone7245742012-09-05 17:12:55 -070037 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070038 Layer Interface.
39
Jeff Johnsone7245742012-09-05 17:12:55 -070040 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070041 MAC implementation that wishes to use the WLAN Device.
42
43 DEPENDENCIES:
44
45 Are listed for each API below.
46
47
Jeff Johnson295189b2012-06-20 16:38:30 -070048===========================================================================*/
49
50/*===========================================================================
51
52 EDIT HISTORY FOR FILE
53
54
55 This section contains comments describing changes made to the module.
56 Notice that changes are listed in reverse chronological order.
57
58
59 $Header$$DateTime$$Author$
60
61
62 when who what, where, why
63---------- --- --------------------------------------------------------
6410/05/11 hap Adding support for Keep Alive
652010-08-09 lti Created module
66
67===========================================================================*/
68
69/*----------------------------------------------------------------------------
70 * Include Files
71 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070072#include "wlan_qct_wdi.h"
73#include "wlan_qct_wdi_i.h"
74#include "wlan_qct_wdi_sta.h"
75#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070076
Jeff Johnsone7245742012-09-05 17:12:55 -070077#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070078
79#include "wlan_qct_pal_api.h"
80#include "wlan_qct_pal_type.h"
81#include "wlan_qct_pal_status.h"
82#include "wlan_qct_pal_sync.h"
83#include "wlan_qct_pal_msg.h"
84#include "wlan_qct_pal_trace.h"
85#include "wlan_qct_pal_packet.h"
86
Jeff Johnsone7245742012-09-05 17:12:55 -070087#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070088
89#include "wlan_hal_msg.h"
90
Jeff Johnson295189b2012-06-20 16:38:30 -070091#include "pttMsgApi.h"
Srikant Kuppa64eae792013-08-29 15:27:56 -070092#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070093
Girish Gowli55caa852015-01-19 16:09:49 +053094#include "vos_api.h"
Girish Gowli55caa852015-01-19 16:09:49 +053095
Jeff Johnson295189b2012-06-20 16:38:30 -070096/*===========================================================================
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
Sachin Ahuja69bfa982015-04-24 17:02:57 +0530105#define MAX_FW_HOST_CAP_SIZE 1024
Jeff Johnson295189b2012-06-20 16:38:30 -0700106#ifdef FEATURE_WLAN_SCAN_PNO
107#define WDI_PNO_VERSION_MASK 0x8000
108#endif
109
110/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700111static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700112/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700113static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700114/* array of features supported. Need to add a new feature
115 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
116 */
117static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800118 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -0800119#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700120 ,SAP32STA //5
Yathish9f22e662012-12-10 14:21:35 -0800121#else
122 ,FEATURE_NOT_SUPPORTED
123#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800124#ifdef FEATURE_WLAN_TDLS
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700125 ,TDLS //6
Yathish9f22e662012-12-10 14:21:35 -0800126#else
127 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800128#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700129 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathish9f22e662012-12-10 14:21:35 -0800130#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700131 ,WLANACTIVE_OFFLOAD //8
Yathish9f22e662012-12-10 14:21:35 -0800132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700135 ,FEATURE_NOT_SUPPORTED //9
136 ,FEATURE_NOT_SUPPORTED //10
137 ,FEATURE_NOT_SUPPORTED //11
138 ,FEATURE_NOT_SUPPORTED //12
139 ,FEATURE_NOT_SUPPORTED //13
140 ,FEATURE_NOT_SUPPORTED //14
141 ,FEATURE_NOT_SUPPORTED //15
142 ,FEATURE_NOT_SUPPORTED //16
143 ,FEATURE_NOT_SUPPORTED //17
144 ,FEATURE_NOT_SUPPORTED //18
145 ,FEATURE_NOT_SUPPORTED //19
146 ,FEATURE_NOT_SUPPORTED //20
147 ,FEATURE_NOT_SUPPORTED //21
Yue Ma55855df2013-08-26 10:59:03 -0700148 ,WOW //22
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700149#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Ma55855df2013-08-26 10:59:03 -0700150 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700151#else
152 ,FEATURE_NOT_SUPPORTED
153#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700154 ,FEATURE_NOT_SUPPORTED //24
155 ,FEATURE_NOT_SUPPORTED //25
156 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Ma55855df2013-08-26 10:59:03 -0700157 ,FEATURE_NOT_SUPPORTED //27
158 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudice419872013-09-13 19:36:52 +0530159#ifdef FEATURE_WLAN_TDLS
160 ,ADVANCE_TDLS //29
161#else
162 ,FEATURE_NOT_SUPPORTED //29
163#endif
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530164 ,FEATURE_NOT_SUPPORTED //30
165 ,FW_IN_TX_PATH //31
Sandeep Puligilla60342762014-01-30 21:05:37 +0530166 ,EXTENDED_NSOFFLOAD_SLOT //32
167 ,CH_SWITCH_V1 //33
168 ,HT40_OBSS_SCAN //34
169 ,UPDATE_CHANNEL_LIST //35
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +0530170 ,FEATURE_NOT_SUPPORTED //36
171 ,FEATURE_NOT_SUPPORTED //37
172 ,FEATURE_NOT_SUPPORTED //38
173#ifdef FEATURE_WLAN_TDLS
174 ,TDLS_SCAN_COEXISTENCE //39
175#else
176 ,FEATURE_NOT_SUPPORTED //39
177#endif
Dino Mycledf0a5d92014-07-04 09:41:55 +0530178#ifdef WLAN_FEATURE_LINK_LAYER_STATS
179 ,LINK_LAYER_STATS_MEAS //40
180#else
181 ,FEATURE_NOT_SUPPORTED //40
182#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +0530183 ,MU_MIMO //41
Dino Myclee8843b32014-07-04 14:21:45 +0530184#ifdef WLAN_FEATURE_EXTSCAN
185 ,EXTENDED_SCAN //42
186#else
187 ,FEATURE_NOT_SUPPORTED //42
188#endif
Mihir Shetec34258c2014-07-30 17:50:27 +0530189 ,DYNAMIC_WMM_PS //43
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800190
Siddharth Bhal171788a2014-09-29 21:02:40 +0530191 ,MAC_SPOOFED_SCAN //44
Sachin Ahuja825082e2014-11-25 17:34:36 +0530192 ,FEATURE_NOT_SUPPORTED //45
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530193 ,DISA //46
Abhishek Singh85b74712014-10-08 11:38:19 +0530194 ,FW_STATS //47
Sachin Ahuja825082e2014-11-25 17:34:36 +0530195 ,WPS_PRBRSP_TMPL //48
Abhishek Singh5fef4042014-11-25 18:33:00 +0530196 ,BCN_IE_FLT_DELTA //49
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +0530197 ,FEATURE_NOT_SUPPORTED //50
198#ifdef FEATURE_WLAN_TDLS
199 ,TDLS_OFF_CHANNEL //51
200#else
201 ,FEATURE_NOT_SUPPORTED //51
202#endif
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530203 ,FEATURE_NOT_SUPPORTED //52
204 ,MGMT_FRAME_LOGGING //53
Ganesh Kondabattinib18b3292015-03-16 16:59:26 +0530205 ,ENHANCED_TXBD_COMPLETION //54
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530206 ,LOGGING_ENHANCEMENT //55
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530207};
Jeff Johnson295189b2012-06-20 16:38:30 -0700208
209/*--------------------------------------------------------------------------
210 WLAN DAL State Machine
211 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700212WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700213{
214 /*WDI_INIT_ST*/
215 {{
216 WDI_MainStart, /*WDI_START_EVENT*/
217 NULL, /*WDI_STOP_EVENT*/
218 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
219 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
220 WDI_MainClose, /*WDI_CLOSE_EVENT*/
221 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
222 }},
223
224 /*WDI_STARTED_ST*/
225 {{
226 WDI_MainStartStarted, /*WDI_START_EVENT*/
227 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
228 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
229 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
230 NULL, /*WDI_CLOSE_EVENT*/
231 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
232 }},
233
234 /*WDI_STOPPED_ST*/
235 {{
236 WDI_MainStart, /*WDI_START_EVENT*/
237 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
238 NULL, /*WDI_REQUEST_EVENT*/
239 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
240 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700241 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700242 }},
243
244 /*WDI_BUSY_ST*/
245 {{
246 WDI_MainStartBusy, /*WDI_START_EVENT*/
247 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
248 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
249 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
250 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
251 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
252 }}
253};
254
Jeff Johnsone7245742012-09-05 17:12:55 -0700255/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700256 DAL Request Processing Array - the functions in this table will only be
257 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700258 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700259 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700260WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700261{
262 /*INIT*/
263 WDI_ProcessStartReq, /* WDI_START_REQ */
264 WDI_ProcessStopReq, /* WDI_STOP_REQ */
265 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
266
267 /*SCAN*/
268 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
269 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
270 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
271 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
272
273 /*ASSOCIATION*/
274 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
275 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
276 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
277 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
278 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
279
280 /* Security */
281 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
282 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
283 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
284 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
285
286 /* QoS and BA APIs */
287 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
288 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
289 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
290 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
291 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
292
293 /* Miscellaneous Control APIs */
294 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
295 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
296 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
297 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
298 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
299
300 /*BA APIs*/
301 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
302 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
303
304 /*Beacon processing APIs*/
305 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
306 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
307
308 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
309 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
310 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
311 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700313 /* PowerSave APIs */
314 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
315 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
316 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
317 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
318 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
319 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
320 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
321 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
322 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
323 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
324 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
325 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
326 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
327 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
328 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
329 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
330 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
331 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
332 /*NV Download APIs*/
333 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
334 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
335 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
336#ifdef WLAN_FEATURE_VOWIFI_11R
337 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
338#else
339 NULL,
340#endif /* WLAN_FEATURE_VOWIFI_11R */
341 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
342 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700343 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700344
345#ifdef FEATURE_OEM_DATA_SUPPORT
346 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
347#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700348 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700349#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700350 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700351
352 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700353
354#ifdef FEATURE_WLAN_SCAN_PNO
355 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
356 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
357 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
358#else
359 NULL,
360 NULL,
361 NULL,
362#endif /* FEATURE_WLAN_SCAN_PNO */
363
364 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700365
Jeff Johnson295189b2012-06-20 16:38:30 -0700366#ifdef WLAN_FEATURE_PACKET_FILTERING
367 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700368 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700369 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700370 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700371 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700372 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700373 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700374 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700375#else
376 NULL,
377 NULL,
378 NULL,
379 NULL,
380#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700381 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700382 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
383 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
384
385 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800386#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700387 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
388#else
389 NULL,
390#endif
391
392#ifdef WLAN_FEATURE_GTK_OFFLOAD
393 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
394 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
395#else
396 NULL,
397 NULL,
398#endif // WLAN_FEATURE_GTK_OFFLOAD
399
400 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
401 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700402#ifdef WLAN_FEATURE_11AC
403 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800404#else
405 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700406#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800407#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800408 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
409#else
schang86c22c42013-03-13 18:41:24 -0700410 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800411#endif
schang86c22c42013-03-13 18:41:24 -0700412 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700413#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700414 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700415#else
416 NULL,
417#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530418#ifdef FEATURE_WLAN_TDLS
419 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
420#else
421 NULL,
422#endif
Leo Chang9056f462013-08-01 19:21:11 -0700423#ifdef FEATURE_WLAN_LPHB
424 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
425#else
426 NULL,
427#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530428
429#ifdef FEATURE_WLAN_BATCH_SCAN
430 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
431#else
432 NULL,
433#endif /* FEATURE_WLAN_BATCH_SCAN */
434
Arif Hussaina5ebce02013-08-09 15:09:58 -0700435 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800436
437 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530438
439 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530440
441#ifdef WLAN_FEATURE_LINK_LAYER_STATS
442 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
443 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
444 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
445#else
446 NULL,
447 NULL,
448 NULL,
449#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530450#ifdef WLAN_FEATURE_EXTSCAN
451 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
452 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
453 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
454 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
455 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
456 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
457 WDI_ProcessEXTScanSetSignifRSSIChangeReq, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ */
458 WDI_ProcessEXTScanResetSignfRSSIChangeReq, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ */
459#else
460 NULL,
461 NULL,
462 NULL,
463 NULL,
464 NULL,
465 NULL,
466 NULL,
467 NULL,
468#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530469 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
Abhishek Singh85b74712014-10-08 11:38:19 +0530470
471 WDI_ProcessGetFwStatsReq, /*WDI_GET_FW_STATS_REQ*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530472
473 WDI_ProcessEncryptMsgReq, /* WDI_ENCRYPT_MSG_REQ*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530474
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530475 WDI_ProcessFWLoggingInitReq, /* WDI_FW_LOGGING_INIT_REQ*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530476 WDI_ProcessGetFrameLogReq, /* WDI_GET_FRAME_LOG_REQ*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530477
478 WDI_ProcessNanRequest, /* WDI_NAN_REQUEST*/
479
Katya Nigamf0511f62015-05-05 16:40:57 +0530480 WDI_ProcessMonStartReq, /* WDI_MON_START_REQ */
481 WDI_ProcessMonStopReq, /* WDI_MON_STOP_REQ */
schang86c22c42013-03-13 18:41:24 -0700482 /*-------------------------------------------------------------------------
483 Indications
484 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700485 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800486 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530487 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
488 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700489#ifdef WLAN_FEATURE_11W
490 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
491#else
492 NULL,
493#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700494 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
495 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530496#ifdef FEATURE_WLAN_BATCH_SCAN
497 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
498 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
499#else
500 NULL,
501 NULL,
502#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700503 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800504
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530505 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800506 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
507
508 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530509#ifdef FEATURE_WLAN_TDLS
510 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
511#else
512 NULL,
513#endif
Abhishek Singh41988ba2015-05-25 19:42:29 +0530514 WDI_ProcessSetRtsCtsHtvhtInd, /* WDI_SET_RTS_CTS_HTVHT_IND */
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530515 WDI_ProcessFWLoggingDXEdoneInd, /* WDI_FW_LOGGING_DXE_DONE_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700516};
517
518
Jeff Johnsone7245742012-09-05 17:12:55 -0700519/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700520 DAL Request Processing Array - the functions in this table will only be
521 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700522 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700523 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700524WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700525{
526 /*INIT*/
527 WDI_ProcessStartRsp, /* WDI_START_RESP */
528 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
529 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
530
531 /*SCAN*/
532 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
533 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
534 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
535 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
536
537 /* ASSOCIATION*/
538 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
539 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
540 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
541 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
542 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
543
544 /* Security */
545 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
546 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
547 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
548 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
549
550 /* QoS and BA APIs */
551 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
552 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
553 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
554 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
555 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
556
557 /* Miscellaneous Control APIs */
558 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
559 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
560 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
561 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
562 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
563
564 /* BA APIs*/
565 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
566 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700567
Jeff Johnson295189b2012-06-20 16:38:30 -0700568 /* IBSS APIs*/
569 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
570 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
571
572 /*Soft AP APIs*/
573 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
574 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
575 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
576 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
577
578 /* PowerSave APIs */
579 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
580 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
581 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
582 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
583 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
584 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
585 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
586 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
587 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
588 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
589 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
590 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
591 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
592 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
593 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
594 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
595 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
596 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700597
Jeff Johnson295189b2012-06-20 16:38:30 -0700598
599 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
600
601 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
602 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
603#ifdef WLAN_FEATURE_VOWIFI_11R
604 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
605#else
606 NULL,
607#endif /* WLAN_FEATURE_VOWIFI_11R */
608 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
609 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700610#ifdef FEATURE_OEM_DATA_SUPPORT
611 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
612#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700613 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700614#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700615 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
616
Jeff Johnson295189b2012-06-20 16:38:30 -0700617 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700618
Jeff Johnson295189b2012-06-20 16:38:30 -0700619 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700620
Jeff Johnsone7245742012-09-05 17:12:55 -0700621 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
622
Jeff Johnson295189b2012-06-20 16:38:30 -0700623#ifdef FEATURE_WLAN_SCAN_PNO
624 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
625 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
626 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
627#else
628 NULL,
629 NULL,
630 NULL,
631#endif // FEATURE_WLAN_SCAN_PNO
632
633 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700634 /*---------------------------------------------------------------------
635 Indications
636 ---------------------------------------------------------------------*/
637#ifdef WLAN_FEATURE_PACKET_FILTERING
638 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700639 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700640 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700641 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700642 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700643 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700644 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700645 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700646#else
647 NULL,
648 NULL,
649 NULL,
650 NULL,
651#endif // WLAN_FEATURE_PACKET_FILTERING
652
653 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
654 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
655
656 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800657#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700658 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
659#else
660 NULL,
661#endif
662
663#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700664 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
665 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700666#else
667 NULL,
668 NULL,
669#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700670 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
671 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700672#ifdef WLAN_FEATURE_11AC
673 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700674#else
675 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700676#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800677#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800678 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
679#else
680 NULL,
681#endif
schang86c22c42013-03-13 18:41:24 -0700682 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700683#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700684 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700685#else
686 NULL,
687#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530688#ifdef FEATURE_WLAN_TDLS
689 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
690#else
691 NULL,
692#endif
Leo Chang9056f462013-08-01 19:21:11 -0700693#ifdef FEATURE_WLAN_LPHB
694 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
695#else
696 NULL,
697#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530698
699#ifdef FEATURE_WLAN_BATCH_SCAN
700 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
701#else
702 NULL,
703#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800704 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530705
c_hpothu92367912014-05-01 15:18:17 +0530706 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800707
c_hpothu92367912014-05-01 15:18:17 +0530708 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
709
710 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800711
Sunil Duttbd736ed2014-05-26 21:19:41 +0530712
713#ifdef WLAN_FEATURE_LINK_LAYER_STATS
714 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
715 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
716 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
717#else
718 NULL,
719 NULL,
720 NULL,
721#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530722#ifdef WLAN_FEATURE_EXTSCAN
723 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
724 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
725 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
726 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
727 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
728 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
729 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
730 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
731#else
732 NULL,
733 NULL,
734 NULL,
735 NULL,
736 NULL,
737 NULL,
738 NULL,
739 NULL,
740#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530741 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530742
743 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530744
745 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530746 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530747 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530748
Srinivas Dasari32a79262015-02-19 13:04:49 +0530749 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
750
Katya Nigamf0511f62015-05-05 16:40:57 +0530751 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
752 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700753 /*---------------------------------------------------------------------
754 Indications
755 ---------------------------------------------------------------------*/
756 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
757 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
758 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
759 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
760 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
761 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
762
763 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
764
765 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
766
Jeff Johnson295189b2012-06-20 16:38:30 -0700767 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700768
769#ifdef FEATURE_WLAN_SCAN_PNO
770 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
771#else
772 NULL,
773#endif // FEATURE_WLAN_SCAN_PNO
774
775#ifdef WLAN_WAKEUP_EVENTS
776 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
777#else // WLAN_WAKEUP_EVENTS
778 NULL,
779#endif // WLAN_WAKEUP_EVENTS
780
781 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800782
Viral Modid86bde22012-12-10 13:09:21 -0800783 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530784#ifdef FEATURE_WLAN_TDLS
785 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
786#else
787 NULL,
788#endif
Leo Chang9056f462013-08-01 19:21:11 -0700789
790#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700791 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700792#else
793 NULL,
794#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700795
796 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700797
798 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530799
800#ifdef FEATURE_WLAN_BATCH_SCAN
801 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
802#else
803 NULL,
804#endif
805
Leo Chang0b0e45a2013-12-15 15:18:55 -0800806#ifdef FEATURE_WLAN_CH_AVOID
807 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
808#else
809 NULL,
810#endif /* FEATURE_WLAN_CH_AVOID */
811
Sunil Duttbd736ed2014-05-26 21:19:41 +0530812 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
813#ifdef WLAN_FEATURE_LINK_LAYER_STATS
814 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
815#else
816 NULL,
817#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530818#ifdef WLAN_FEATURE_EXTSCAN
819 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
820 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
821 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
822 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
823 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
824#else
825 NULL,
826 NULL,
827 NULL,
828 NULL,
829 NULL,
830#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530831#ifdef FEATURE_WLAN_TDLS
832 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
833#else
834 NULL,
835#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530836 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530837 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Jeff Johnson295189b2012-06-20 16:38:30 -0700838};
839
840
Jeff Johnsone7245742012-09-05 17:12:55 -0700841/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700842 WLAN DAL Global Control Block
843 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700844WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700845static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
846
Jeff Johnsone7245742012-09-05 17:12:55 -0700847const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700848
849/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700850WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700851void* WDI_GET_PAL_CTX( void )
852{
Jeff Johnsone7245742012-09-05 17:12:55 -0700853 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700854}/*WDI_GET_PAL_CTX*/
855
Jeff Johnsone7245742012-09-05 17:12:55 -0700856/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700857 Helper inline converters
858 ============================================================================*/
859/*Convert WDI driver type into HAL driver type*/
860WPT_STATIC WPT_INLINE WDI_Status
861WDI_HAL_2_WDI_STATUS
862(
863 eHalStatus halStatus
864);
865
866/*Convert WDI request type into HAL request type*/
867WPT_STATIC WPT_INLINE tHalHostMsgType
868WDI_2_HAL_REQ_TYPE
869(
870 WDI_RequestEnumType wdiReqType
871);
872
873/*Convert WDI response type into HAL response type*/
874WPT_STATIC WPT_INLINE WDI_ResponseEnumType
875HAL_2_WDI_RSP_TYPE
876(
877 tHalHostMsgType halMsg
878);
879
880/*Convert WDI driver type into HAL driver type*/
881WPT_STATIC WPT_INLINE tDriverType
882WDI_2_HAL_DRV_TYPE
883(
884 WDI_DriverType wdiDriverType
885);
886
887/*Convert WDI stop reason into HAL stop reason*/
888WPT_STATIC WPT_INLINE tHalStopType
889WDI_2_HAL_STOP_REASON
890(
891 WDI_StopType wdiStopType
892);
893
894/*Convert WDI scan mode type into HAL scan mode type*/
895WPT_STATIC WPT_INLINE eHalSysMode
896WDI_2_HAL_SCAN_MODE
897(
898 WDI_ScanMode wdiScanMode
899);
900
901/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700902WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700903WDI_2_HAL_SEC_CH_OFFSET
904(
905 WDI_HTSecondaryChannelOffset wdiSecChOffset
906);
907
908/*Convert WDI BSS type into HAL BSS type*/
909WPT_STATIC WPT_INLINE tSirBssType
910WDI_2_HAL_BSS_TYPE
911(
912 WDI_BssType wdiBSSType
913);
914
915/*Convert WDI NW type into HAL NW type*/
916WPT_STATIC WPT_INLINE tSirNwType
917WDI_2_HAL_NW_TYPE
918(
919 WDI_NwType wdiNWType
920);
921
922/*Convert WDI chanel bonding type into HAL cb type*/
923WPT_STATIC WPT_INLINE ePhyChanBondState
924WDI_2_HAL_CB_STATE
925(
926 WDI_PhyChanBondState wdiCbState
927);
928
929/*Convert WDI chanel bonding type into HAL cb type*/
930WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
931WDI_2_HAL_HT_OPER_MODE
932(
933 WDI_HTOperatingMode wdiHTOperMode
934);
935
936/*Convert WDI mimo PS type into HAL mimo PS type*/
937WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
938WDI_2_HAL_MIMO_PS
939(
940 WDI_HTMIMOPowerSaveState wdiHTOperMode
941);
942
943/*Convert WDI ENC type into HAL ENC type*/
944WPT_STATIC WPT_INLINE tAniEdType
945WDI_2_HAL_ENC_TYPE
946(
947 WDI_EncryptType wdiEncType
948);
949
950/*Convert WDI WEP type into HAL WEP type*/
951WPT_STATIC WPT_INLINE tAniWepType
952WDI_2_HAL_WEP_TYPE
953(
954 WDI_WepType wdiWEPType
955);
956
957/*Convert WDI Link State into HAL Link State*/
958WPT_STATIC WPT_INLINE tSirLinkState
959WDI_2_HAL_LINK_STATE
960(
961 WDI_LinkStateType wdiLinkState
962);
963
Jeff Johnsone7245742012-09-05 17:12:55 -0700964/*Translate a STA Context from WDI into HAL*/
965WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700966void
967WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700968(
Jeff Johnson295189b2012-06-20 16:38:30 -0700969 tConfigStaParams* phalConfigSta,
970 WDI_ConfigStaReqInfoType* pwdiConfigSta
971);
Jeff Johnsone7245742012-09-05 17:12:55 -0700972
973/*Translate a Rate set info from WDI into HAL*/
974WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700975WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700976(
Jeff Johnson295189b2012-06-20 16:38:30 -0700977 tSirMacRateSet* pHalRateSet,
978 WDI_RateSet* pwdiRateSet
979);
980
981/*Translate an EDCA Parameter Record from WDI into HAL*/
982WPT_STATIC WPT_INLINE void
983WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700984(
Jeff Johnson295189b2012-06-20 16:38:30 -0700985 tSirMacEdcaParamRecord* phalEdcaParam,
986 WDI_EdcaParamRecord* pWDIEdcaParam
987);
988
989/*Copy a management frame header from WDI fmt into HAL fmt*/
990WPT_STATIC WPT_INLINE void
991WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
992(
993 tSirMacMgmtHdr* pmacMgmtHdr,
994 WDI_MacMgmtHdr* pwdiMacMgmtHdr
995);
996
997/*Copy config bss parameters from WDI fmt into HAL fmt*/
998WPT_STATIC WPT_INLINE void
999WDI_CopyWDIConfigBSSToHALConfigBSS
1000(
1001 tConfigBssParams* phalConfigBSS,
1002 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1003);
1004
Jeff Johnsone7245742012-09-05 17:12:55 -07001005/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001006 pointed to by user data */
1007WPT_STATIC WPT_INLINE void
1008WDI_ExtractRequestCBFromEvent
1009(
1010 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001011 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001012 void** ppUserData
1013);
1014
1015wpt_uint8
1016WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001017(
Jeff Johnson295189b2012-06-20 16:38:30 -07001018 WDI_ControlBlockType* pWDICtx,
1019 WDI_BSSSessionType** ppSession
1020);
1021
1022void
1023WDI_AddBcastSTAtoSTATable
1024(
1025 WDI_ControlBlockType* pWDICtx,
1026 WDI_AddStaParams * staParams,
1027 wpt_uint16 usBcastStaIdx
1028);
1029
1030WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001031(
Jeff Johnson295189b2012-06-20 16:38:30 -07001032 WDI_ControlBlockType* pWDICtx,
1033 WDI_EventInfoType* pEventData
1034);
1035
1036void
1037WDI_SetPowerStateCb
1038(
1039 wpt_status status,
1040 unsigned int dxePhyAddr,
1041 void *pContext
1042);
1043
Jeff Johnson295189b2012-06-20 16:38:30 -07001044/**
1045 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001046
1047 @param wdiReqMsgId: WDI Message request Id
1048
1049 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001050 @return Result of the function call
1051*/
1052static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1053{
1054 switch (wdiReqMsgId)
1055 {
1056 CASE_RETURN_STRING( WDI_START_REQ );
1057 CASE_RETURN_STRING( WDI_STOP_REQ );
1058 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1059 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1060 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1061 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1062 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1063 CASE_RETURN_STRING( WDI_JOIN_REQ );
1064 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1065 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1066 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1067 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1068 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1069 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1070 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1071 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1072 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1073 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1074 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1075 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1076 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1077 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001078 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001079 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1080 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1081 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1082 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1083 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1084 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1085 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1086 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1087 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1088 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1089 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1090 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001091 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001092 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301093#ifdef FEATURE_WLAN_TDLS
1094 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301095 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301096#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001097 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1098 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1099 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1100 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1101 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1102 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1103 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1104 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1105 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1106 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1107 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1108 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1109 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1110 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1111 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1112 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1113 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1114 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1115 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1116 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1117 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1118 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1119 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1120 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1121 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001122 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001123 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1124 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1125 #ifdef FEATURE_WLAN_SCAN_PNO
1126 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1127 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1128 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1129 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001130#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001131 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001132#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001133 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1134 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1135 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1136 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1137 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1138 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1139 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1140 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1141 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301142 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001143 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001144 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001145#ifdef WLAN_FEATURE_11W
1146 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1147#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301148#ifdef FEATURE_WLAN_BATCH_SCAN
1149 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1150 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1151 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1152#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301153 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1154 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001155 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301156#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1157 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1158 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1159 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1160#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301161#ifdef WLAN_FEATURE_EXTSCAN
1162 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1163 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1164 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1165 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1166 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1167 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1168 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1169 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1170#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301171 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301172 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301173 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301174 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301175 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301176 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301177 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301178 CASE_RETURN_STRING( WDI_MON_START_REQ );
1179 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001180 default:
1181 return "Unknown WDI MessageId";
1182 }
1183}
1184
1185
1186
1187/**
1188 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001189
1190 @param wdiRespMsgId: WDI Message response Id
1191
1192 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001193 @return Result of the function call
1194*/
1195static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1196{
1197 switch (wdiRespMsgId)
1198 {
1199 CASE_RETURN_STRING( WDI_START_RESP );
1200 CASE_RETURN_STRING( WDI_STOP_RESP );
1201 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1202 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1203 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1204 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1205 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1206 CASE_RETURN_STRING( WDI_JOIN_RESP );
1207 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1208 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1209 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1210 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1211 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1212 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1213 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1214 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1215 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1216 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1217 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1218 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1219 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1220 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1221 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1222 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1223 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1224 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1225 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1226 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1227 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1228 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1229 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1230 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1231 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1232 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1233 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301234#ifdef FEATURE_WLAN_TDLS
1235 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301236 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301237 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1238#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001239 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1240 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1241 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1242 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1243 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1244 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1245 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1246 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1247 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1248 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1249 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1250 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1251 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1252 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1253 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1254 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1255 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1256 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1257 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1258 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1259 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1260 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1261 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1262 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1263 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001264 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001265 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1266 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1267 #ifdef FEATURE_WLAN_SCAN_PNO
1268 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1269 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1270 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1271 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001272#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001273 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001274#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001275 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1276 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1277 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1278 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1279 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1280 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1281 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1282 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001283 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301284#ifdef FEATURE_WLAN_BATCH_SCAN
1285 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1286#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001287 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301288 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301289 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301290#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1291 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1292 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1293 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1294#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301295#ifdef WLAN_FEATURE_EXTSCAN
1296 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1297 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1298 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1299 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1300 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1301 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1302 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1303 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1304 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1305 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1306 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1307 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1308 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1309
1310#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301311 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301312 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301313 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301314 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001315 default:
1316 return "Unknown WDI MessageId";
1317 }
1318}
1319
1320/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301321 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1322 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301323 @param capabilityBitmap - Base address of a 4 element Bitmap array
1324 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301325 @see
1326 @returns None
1327 */
1328void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1329{
Abhishek Singh08b60122014-02-04 18:05:23 +05301330 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301331 char *pTempCapStr = NULL;
1332 char *pCapStr = NULL;
1333 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1334 if (NULL == pTempCapStr)
1335 {
1336 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1337 "Memory allocation failed for CapStr");
1338 return;
1339 }
1340
1341 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301342 for (j = 0; j < 4; j++) {
1343 for (i = 0; i < 32; i++) {
1344 if ((*(capabilityBitmap + j) & (1 << i))) {
1345 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301346 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1347 pCapStr += strlen("MCC");
1348 break;
1349 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1350 pCapStr += strlen("P2P");
1351 break;
1352 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1353 pCapStr += strlen("DOT11AC");
1354 break;
1355 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1356 pCapStr += strlen("SLM_SESSIONIZATION");
1357 break;
1358 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1359 pCapStr += strlen("DOT11AC_OPMODE");
1360 break;
1361 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1362 pCapStr += strlen("SAP32STA");
1363 break;
1364 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1365 pCapStr += strlen("TDLS");
1366 break;
1367 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1368 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1369 break;
1370 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1371 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1372 break;
1373 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1374 pCapStr += strlen("BEACON_OFFLOAD");
1375 break;
1376 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1377 pCapStr += strlen("SCAN_OFFLOAD");
1378 break;
1379 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1380 pCapStr += strlen("ROAM_OFFLOAD");
1381 break;
1382 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1383 pCapStr += strlen("BCN_MISS_OFFLOAD");
1384 break;
1385 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1386 pCapStr += strlen("STA_POWERSAVE");
1387 break;
1388 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1389 pCapStr += strlen("AP_UAPSD");
1390 break;
1391 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1392 pCapStr += strlen("AP_DFS");
1393 break;
1394 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1395 pCapStr += strlen("BLOCKACK");
1396 break;
1397 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1398 pCapStr += strlen("PHY_ERR");
1399 break;
1400 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1401 pCapStr += strlen("BCN_FILTER");
1402 break;
1403 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1404 pCapStr += strlen("RTT");
1405 break;
1406 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1407 pCapStr += strlen("RATECTRL");
1408 break;
1409 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1410 pCapStr += strlen("WOW");
1411 break;
1412 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1413 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1414 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301415 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1416 pCapStr += strlen("FW_IN_TX_PATH");
1417 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301418 case HT40_OBSS_SCAN:
1419 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1420 "%s", "HT40_OBSS_SCAN");
1421 pCapStr += strlen("HT40_OBSS_SCAN");
1422 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301423 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1424 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1425 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1426 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1427 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301428 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1429 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1430 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301431 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1432 pCapStr += strlen("CH_SWITCH_V1");
1433 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301434#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1435 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1436 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1437 break;
1438#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301439#ifdef WLAN_FEATURE_EXTSCAN
1440 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1441 pCapStr += strlen("EXTENDED_SCAN");
1442 break;
1443#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301444 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1445 pCapStr += strlen("MU_MIMO");
1446 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301447
Mihir Shetec34258c2014-07-30 17:50:27 +05301448 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1449 pCapStr += strlen("DYNAMIC_WMM_PS");
1450 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301451 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1452 pCapStr += strlen("FW_STATS");
1453 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301454 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1455 pCapStr += strlen("MAC_SPOOFED_SCAN");
1456 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301457 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1458 pCapStr += strlen("WPS_PRBRSP_TMPL");
1459 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301460 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1461 pCapStr += strlen("BCN_IE_FLT_DELTA");
1462 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301463 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1464 pCapStr += strlen("MGMT_FRAME_LOGGING");
1465 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301466 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1467 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1468 break;
1469
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301470 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1471 pCapStr += strlen("DISA");
1472 break;
1473
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301474 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1475 pCapStr += strlen("TDLS_OFF_CHANNEL");
1476 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301477 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1478 pCapStr += strlen("LOGGING_ENHANCEMENT");
1479 break;
1480
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301481
Abhishek Singh08b60122014-02-04 18:05:23 +05301482 }
1483 *pCapStr++ = ',';
1484 *pCapStr++ = ' ';
1485 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301486 }
1487 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301488 pCapStr -= 2;
1489 *pCapStr = '\0';
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pTempCapStr);
1491 if (pTempCapStr)
1492 {
1493 vos_mem_free(pTempCapStr);
1494 pTempCapStr = NULL;
1495 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301496}
1497
1498/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001499 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001500
1501 @param halStatusId: HAL status Id
1502
1503 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001504 @return Result of the function call
1505*/
1506static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1507{
1508 switch (halStatusId)
1509 {
1510 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1511 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1512 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1513 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1514 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1515 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1516 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1517 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1518 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1519 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1520 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1521 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1522 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1523 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1524 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1525 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1526 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1527 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1528 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1529 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1530 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1531 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1532 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1533 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1534 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1535 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1536 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1537 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1538 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1539 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1540 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1541 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1542 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1543 default:
1544 return "Unknown HAL status";
1545 }
1546}
1547
Jeff Johnsone7245742012-09-05 17:12:55 -07001548/*========================================================================
1549
Jeff Johnson295189b2012-06-20 16:38:30 -07001550 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001551
Jeff Johnson295189b2012-06-20 16:38:30 -07001552==========================================================================*/
1553
1554/**
1555 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001556
Jeff Johnson295189b2012-06-20 16:38:30 -07001557 DAL will allocate all the resources it needs. It will open PAL, it will also
1558 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001559 DXE/SMD or any other drivers that they need.
1560
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301561 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001562 ppWDIGlobalCtx: output pointer of Global Context
1563 pWdiDevCapability: output pointer of device capability
1564
1565 @return Result of the function call
1566*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001567WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001568WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001569(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301570 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001571 void** ppWDIGlobalCtx,
1572 WDI_DeviceCapabilityType* pWdiDevCapability,
1573 unsigned int driverType
1574)
1575{
1576 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001577 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001578 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001579 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1581
1582 /*---------------------------------------------------------------------
1583 Sanity check
1584 ---------------------------------------------------------------------*/
1585 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1586 {
1587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1588 "Invalid input parameters in WDI_Init");
1589
Jeff Johnsone7245742012-09-05 17:12:55 -07001590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001591 }
1592
1593 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001594 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001595 ---------------------------------------------------------------------*/
1596 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1597 {
1598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1599 "WDI module already initialized - return");
1600
Jeff Johnsone7245742012-09-05 17:12:55 -07001601 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001602 }
1603
1604 /*Module is now initialized - this flag is to ensure the fact that multiple
1605 init will not happen on WDI
1606 !! - potential race does exist because read and set are not atomic,
1607 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001608 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001609
1610 /*Setup the control block */
1611 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301612 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001613
1614 /*Setup the STA Table*/
1615 wdiStatus = WDI_STATableInit(&gWDICb);
1616 if ( WDI_STATUS_SUCCESS != wdiStatus )
1617 {
1618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1619 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001620 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001621 goto fail_STATableInit;
1622 }
1623
1624 /*------------------------------------------------------------------------
1625 Open the PAL
1626 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301627 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001628 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1629 {
1630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1631 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001632 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001633 goto fail_wpalOpen;
1634 }
1635
1636 /*Initialize main synchro mutex - it will be used to ensure integrity of
1637 the main WDI Control Block*/
1638 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1639 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1640 {
1641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1642 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001643 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001644 goto fail_mutex;
1645 }
1646
1647 /*Initialize the response timer - it will be used to time all messages
1648 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001649 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1650 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001651 &gWDICb);
1652 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1653 {
1654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1655 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001656 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001657 goto fail_timer;
1658 }
1659
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001660 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1661 WDI_SsrTimerCB,
1662 &gWDICb);
1663 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1664 {
1665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1666 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001667 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001668 goto fail_timer2;
1669 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001670 /* Initialize the WDI Pending Request Queue*/
1671 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1672 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1673 {
1674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1675 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001676 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001677 goto fail_pend_queue;
1678 }
1679
1680 /*Init WDI Pending Assoc Id Queue */
1681 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1682 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1683 {
1684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1685 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001686 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001687 goto fail_assoc_queue;
1688 }
1689
1690 /*Initialize the BSS sessions pending Queue */
1691 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1692 {
1693 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1694 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1695 {
1696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1697 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001698 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001699 goto fail_bss_queue;
1700 }
1701 }
1702
1703 /*Indicate the control block is sufficiently initialized for callbacks*/
1704 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1705
1706 /*------------------------------------------------------------------------
1707 Initialize the Data Path Utility Module
1708 ------------------------------------------------------------------------*/
1709 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1710 if ( WDI_STATUS_SUCCESS != wdiStatus )
1711 {
1712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1713 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001714 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001715 goto fail_dp_util_init;
1716 }
1717
1718 /* Init Set power state event */
1719 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001720 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001721 {
1722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1723 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001724 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001725 goto fail_power_event;
1726 }
1727
1728 /* Init WCTS action event */
1729 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001730 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001731 {
1732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1733 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001734 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001735 goto fail_wcts_event;
1736 }
1737
1738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001739 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001740 ------------------------------------------------------------------------*/
1741 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1742 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001743 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001744 wctsCBs.wctsRxMsgCBData = &gWDICb;
1745
Jeff Johnsone7245742012-09-05 17:12:55 -07001746 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001748 WDI_CT_CHANNEL_SIZE,
1749 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001750
1751 if ( NULL == gWDICb.wctsHandle )
1752 {
1753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001754 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001755 goto fail_wcts_open;
1756 }
1757
1758 gWDICb.driverMode = (tDriverType)driverType;
1759 /* FTM mode not need to open Transport Driver */
1760 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001761 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 /*------------------------------------------------------------------------
1763 Open the Data Transport
1764 ------------------------------------------------------------------------*/
1765 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1766 {
1767 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001768 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 goto fail_wdts_open;
1770 }
1771 }
1772
1773 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001774 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301775 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001776 /*Send the context as a ptr to the global WDI Control Block*/
1777 *ppWDIGlobalCtx = &gWDICb;
1778
1779 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001780 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001781 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1782 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1783 return WDI_STATUS_SUCCESS;
1784
1785 /* ERROR handlers
1786 Undo everything that completed successfully */
1787
1788 fail_wdts_open:
1789 {
1790 wpt_status eventStatus;
1791
1792 /* Closing WCTS in this scenario is tricky since it has to close
1793 the SMD channel and then we get notified asynchronously when
1794 the channel has been closed. So we take some of the logic from
1795 the "normal" close procedure in WDI_Close()
1796 */
1797
1798 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001799 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001800 {
1801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001802 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001803 }
1804
1805 WCTS_CloseTransport(gWDICb.wctsHandle);
1806
1807 /* Wait for WCTS to close the control transport. If we were able
1808 to reset the event flag, then we'll wait for the event,
1809 otherwise we'll wait for a maximum amount of time required for
1810 the channel to be closed */
1811 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1812 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001813 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001814 WDI_WCTS_ACTION_TIMEOUT);
1815 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1816 {
1817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001818 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001819 }
1820 }
1821 else
1822 {
1823 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1824 }
1825 }
1826 fail_wcts_open:
1827 wpalEventDelete(&gWDICb.wctsActionEvent);
1828 fail_wcts_event:
1829 wpalEventDelete(&gWDICb.setPowerStateEvent);
1830 fail_power_event:
1831 WDI_DP_UtilsExit(&gWDICb);
1832 fail_dp_util_init:
1833 gWDICb.magic = 0;
1834 fail_bss_queue:
1835 /* entries 0 thru i-1 were successfully initialized */
1836 while (0 < i)
1837 {
1838 i--;
1839 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1840 }
1841 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1842 fail_assoc_queue:
1843 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1844 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001845 wpalTimerDelete(&gWDICb.ssrTimer);
1846 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001847 wpalTimerDelete(&gWDICb.wptResponseTimer);
1848 fail_timer:
1849 wpalMutexDelete(&gWDICb.wptMutex);
1850 fail_mutex:
1851 wpalClose(gWDICb.pPALContext);
1852 fail_wpalOpen:
1853 WDI_STATableClose(&gWDICb);
1854 fail_STATableInit:
1855 gWDIInitialized = eWLAN_PAL_FALSE;
1856
1857 return WDI_STATUS_E_FAILURE;
1858
1859}/*WDI_Init*/;
1860
1861/**
1862 @brief WDI_Start will be called when the upper MAC is ready to
1863 commence operation with the WLAN Device. Upon the call
1864 of this API the WLAN DAL will pack and send a HAL Start
1865 message to the lower RIVA sub-system if the SMD channel
1866 has been fully opened and the RIVA subsystem is up.
1867
1868 If the RIVA sub-system is not yet up and running DAL
1869 will queue the request for Open and will wait for the
1870 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001871 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001872
1873 WDI_Init must have been called.
1874
Jeff Johnsone7245742012-09-05 17:12:55 -07001875 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001876 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001877
Jeff Johnson295189b2012-06-20 16:38:30 -07001878 wdiStartRspCb: callback for passing back the response of
1879 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001880
Jeff Johnson295189b2012-06-20 16:38:30 -07001881 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001882 callback
1883
Jeff Johnson295189b2012-06-20 16:38:30 -07001884 @see WDI_Start
1885 @return Result of the function call
1886*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001887WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001888WDI_Start
1889(
1890 WDI_StartReqParamsType* pwdiStartParams,
1891 WDI_StartRspCb wdiStartRspCb,
1892 void* pUserData
1893)
1894{
1895 WDI_EventInfoType wdiEventData;
1896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1897
1898 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001899 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001900 ------------------------------------------------------------------------*/
1901 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1902 {
1903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1904 "WDI API call before module is initialized - Fail request");
1905
Jeff Johnsone7245742012-09-05 17:12:55 -07001906 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001907 }
1908
1909 /*------------------------------------------------------------------------
1910 Fill in Event data and post to the Main FSM
1911 ------------------------------------------------------------------------*/
1912 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001913 wdiEventData.pEventData = pwdiStartParams;
1914 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1915 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001916 wdiEventData.pUserData = pUserData;
1917
1918 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1919
1920}/*WDI_Start*/
1921
1922/**
1923 @brief WDI_Stop will be called when the upper MAC is ready to
1924 stop any operation with the WLAN Device. Upon the call
1925 of this API the WLAN DAL will pack and send a HAL Stop
1926 message to the lower RIVA sub-system if the DAL Core is
1927 in started state.
1928
1929 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001930
1931 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001932
1933 WDI_Start must have been called.
1934
Jeff Johnsone7245742012-09-05 17:12:55 -07001935 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001936 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001937
Jeff Johnson295189b2012-06-20 16:38:30 -07001938 wdiStopRspCb: callback for passing back the response of
1939 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001940
Jeff Johnson295189b2012-06-20 16:38:30 -07001941 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001942 callback
1943
Jeff Johnson295189b2012-06-20 16:38:30 -07001944 @see WDI_Start
1945 @return Result of the function call
1946*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001947WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001948WDI_Stop
1949(
1950 WDI_StopReqParamsType* pwdiStopParams,
1951 WDI_StopRspCb wdiStopRspCb,
1952 void* pUserData
1953)
1954{
1955 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001956 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1958
1959 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001960 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 ------------------------------------------------------------------------*/
1962 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1963 {
1964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1965 "WDI API call before module is initialized - Fail request");
1966
Jeff Johnsone7245742012-09-05 17:12:55 -07001967 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001968 }
1969
Jeff Johnson43971f52012-07-17 12:26:56 -07001970 /*Access to the global state must be locked before cleaning */
1971 wpalMutexAcquire(&pWDICtx->wptMutex);
1972
1973 /*Clear all pending request*/
1974 WDI_ClearPendingRequests(pWDICtx);
1975
1976 /*We have completed cleaning unlock now*/
1977 wpalMutexRelease(&pWDICtx->wptMutex);
1978
Jeff Johnson295189b2012-06-20 16:38:30 -07001979 /* Free the global variables */
1980 wpalMemoryFree(gpHostWlanFeatCaps);
1981 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001982 gpHostWlanFeatCaps = NULL;
1983 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001984
1985 /*------------------------------------------------------------------------
1986 Fill in Event data and post to the Main FSM
1987 ------------------------------------------------------------------------*/
1988 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001989 wdiEventData.pEventData = pwdiStopParams;
1990 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1991 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001992 wdiEventData.pUserData = pUserData;
1993
1994 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1995
1996}/*WDI_Stop*/
1997
1998
1999
2000/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002001 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002002 needs to interact with DAL. DAL will free its control
2003 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002004
2005 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002006
2007 WDI_Stop must have been called.
2008
2009 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002010
Jeff Johnson295189b2012-06-20 16:38:30 -07002011 @see WDI_Stop
2012 @return Result of the function call
2013*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002014WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002015WDI_Close
2016(
2017 void
2018)
2019{
2020 wpt_uint8 i;
2021 WDI_EventInfoType wdiEventData;
2022 wpt_status wptStatus;
2023 wpt_status eventStatus;
2024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2025
2026 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002027 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002028 ------------------------------------------------------------------------*/
2029 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2030 {
2031 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2032 "WDI API call before module is initialized - Fail request");
2033
Jeff Johnsone7245742012-09-05 17:12:55 -07002034 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002035 }
2036
2037 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2038 (the control transport will be closed by the FSM and we'll want
2039 to wait until that completes)*/
2040 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002042 {
2043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002044 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002045 /* fall through and try to finish closing via the FSM */
2046 }
2047
2048 /*------------------------------------------------------------------------
2049 Fill in Event data and post to the Main FSM
2050 ------------------------------------------------------------------------*/
2051 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002052 wdiEventData.pEventData = NULL;
2053 wdiEventData.uEventDataSize = 0;
2054 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002055 wdiEventData.pUserData = NULL;
2056
2057 gWDIInitialized = eWLAN_PAL_FALSE;
2058
2059 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2060
2061 /*Wait for WCTS to close the control transport
2062 (but only if we were able to reset the event flag*/
2063 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2064 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002065 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002066 WDI_WCTS_ACTION_TIMEOUT);
2067 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2068 {
2069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002070 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002071 }
2072 }
2073
2074 /* Destroy the WCTS action event */
2075 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2076 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2077 {
2078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2079 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002080 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002081 }
2082
2083 /* Destroy the Set Power State event */
2084 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2085 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2086 {
2087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2088 "WDI Close failed to destroy an event");
2089
Jeff Johnsone7245742012-09-05 17:12:55 -07002090 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002091 }
2092
2093 /*------------------------------------------------------------------------
2094 Closes the Data Path Utility Module
2095 ------------------------------------------------------------------------*/
2096 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2097 {
2098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2099 "WDI Init failed to close the DP Util Module");
2100
Jeff Johnsone7245742012-09-05 17:12:55 -07002101 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002102 }
2103
2104 /*destroy the BSS sessions pending Queue */
2105 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2106 {
2107 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2108 }
2109
2110 /* destroy the WDI Pending Assoc Id Request Queue*/
2111 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2112
2113 /* destroy the WDI Pending Request Queue*/
2114 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002115
Jeff Johnson295189b2012-06-20 16:38:30 -07002116 /*destroy the response timer */
2117 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2118
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002119 /*destroy the SSR timer */
2120 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2121
Jeff Johnson295189b2012-06-20 16:38:30 -07002122 /*invalidate the main synchro mutex */
2123 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2124 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2125 {
2126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2127 "Failed to delete mutex %d", wptStatus);
2128 WDI_ASSERT(0);
2129 }
2130
2131 /*Clear control block. note that this will clear the "magic"
2132 which will inhibit all asynchronous callbacks*/
2133 WDI_CleanCB(&gWDICb);
2134
2135 return wptStatus;
2136
2137}/*WDI_Close*/
2138
2139/**
2140 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2141 This will do most of the WDI stop & close
2142 operations without doing any handshake with Riva
2143
2144 This will also make sure that the control transport
2145 will NOT be closed.
2146
2147 This request will not be queued.
2148
2149
2150 WDI_Start must have been called.
2151
2152 @param closeTransport: Close control channel if this is set
2153
2154 @return Result of the function call
2155*/
2156WDI_Status
2157WDI_Shutdown
2158(
2159 wpt_boolean closeTransport
2160)
2161{
2162 WDI_EventInfoType wdiEventData;
2163 wpt_status wptStatus;
2164 int i = 0;
2165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2166
2167 /*------------------------------------------------------------------------
2168 Sanity Check
2169 ------------------------------------------------------------------------*/
2170 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2171 {
2172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2173 "WDI API call before module is initialized - Fail request");
2174
2175 return WDI_STATUS_E_NOT_ALLOWED;
2176 }
2177
2178 /*------------------------------------------------------------------------
2179 Fill in Event data and post to the Main FSM
2180 ------------------------------------------------------------------------*/
2181 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2182 wdiEventData.pEventData = NULL;
2183 wdiEventData.uEventDataSize = 0;
2184
2185 /* Shutdown will not be queued, if the state is busy timer will be
2186 * stopped & this message will be processed.*/
2187 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2188 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2189 {
2190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002191 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002192 }
2193 /* Destroy the Set Power State event */
2194 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2195 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2196 {
2197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2198 "WDI Close failed to destroy an event");
2199
2200 WDI_ASSERT(0);
2201 }
2202 /*------------------------------------------------------------------------
2203 Closes the Data Path Utility Module
2204 ------------------------------------------------------------------------*/
2205 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2206 {
2207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2208 "WDI Init failed to close the DP Util Module");
2209
2210 WDI_ASSERT(0);
2211 }
2212 if ( closeTransport )
2213 {
2214 /* Close control transport, called from module unload */
2215 WCTS_CloseTransport(gWDICb.wctsHandle);
2216 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002217 else
2218 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002219 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002220 the pending messages in the transport queue */
2221 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2222 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002223 /*destroy the BSS sessions pending Queue */
2224 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2225 {
2226 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2227 }
2228
2229 /* destroy the WDI Pending Assoc Id Request Queue*/
2230 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2231 /* destroy the WDI Pending Request Queue*/
2232 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2233 /*destroy the response timer */
2234 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002235 /*destroy the SSR timer */
2236 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002237
2238 /*invalidate the main synchro mutex */
2239 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2240 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2241 {
2242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002243 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002244 WDI_ASSERT(0);
2245 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002246 /* Free the global variables */
2247 wpalMemoryFree(gpHostWlanFeatCaps);
2248 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002249 gpHostWlanFeatCaps = NULL;
2250 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002251 /*Clear control block. note that this will clear the "magic"
2252 which will inhibit all asynchronous callbacks*/
2253 WDI_CleanCB(&gWDICb);
2254 return wptStatus;
2255
2256}/*WDI_Shutdown*/
2257
2258
Jeff Johnsone7245742012-09-05 17:12:55 -07002259/*========================================================================
2260
Jeff Johnson295189b2012-06-20 16:38:30 -07002261 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002262
Jeff Johnson295189b2012-06-20 16:38:30 -07002263==========================================================================*/
2264
2265/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002266 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002267 the WLAN Device to get ready for a scan procedure. Upon
2268 the call of this API the WLAN DAL will pack and send a
2269 HAL Init Scan request message to the lower RIVA
2270 sub-system if DAL is in state STARTED.
2271
2272 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002273 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002274
2275 WDI_Start must have been called.
2276
2277 @param wdiInitScanParams: the init scan parameters as specified
2278 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002279
Jeff Johnson295189b2012-06-20 16:38:30 -07002280 wdiInitScanRspCb: callback for passing back the response
2281 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002282
Jeff Johnson295189b2012-06-20 16:38:30 -07002283 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002284 callback
2285
Jeff Johnson295189b2012-06-20 16:38:30 -07002286 @see WDI_Start
2287 @return Result of the function call
2288*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002289WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002290WDI_InitScanReq
2291(
2292 WDI_InitScanReqParamsType* pwdiInitScanParams,
2293 WDI_InitScanRspCb wdiInitScanRspCb,
2294 void* pUserData
2295)
2296{
2297 WDI_EventInfoType wdiEventData;
2298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2299
2300 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002301 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002302 ------------------------------------------------------------------------*/
2303 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2304 {
2305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2306 "WDI API call before module is initialized - Fail request");
2307
Jeff Johnsone7245742012-09-05 17:12:55 -07002308 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002309 }
2310
2311 /*------------------------------------------------------------------------
2312 Fill in Event data and post to the Main FSM
2313 ------------------------------------------------------------------------*/
2314 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002315 wdiEventData.pEventData = pwdiInitScanParams;
2316 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2317 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002318 wdiEventData.pUserData = pUserData;
2319
2320 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2321
2322}/*WDI_InitScanReq*/
2323
2324/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002325 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002326 wishes to change the Scan channel on the WLAN Device.
2327 Upon the call of this API the WLAN DAL will pack and
2328 send a HAL Start Scan request message to the lower RIVA
2329 sub-system if DAL is in state STARTED.
2330
2331 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002332 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002333
2334 WDI_InitScanReq must have been called.
2335
Jeff Johnsone7245742012-09-05 17:12:55 -07002336 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002337 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002338
Jeff Johnson295189b2012-06-20 16:38:30 -07002339 wdiStartScanRspCb: callback for passing back the
2340 response of the start scan operation received from the
2341 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002342
Jeff Johnson295189b2012-06-20 16:38:30 -07002343 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002344 callback
2345
Jeff Johnson295189b2012-06-20 16:38:30 -07002346 @see WDI_InitScanReq
2347 @return Result of the function call
2348*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002349WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002350WDI_StartScanReq
2351(
2352 WDI_StartScanReqParamsType* pwdiStartScanParams,
2353 WDI_StartScanRspCb wdiStartScanRspCb,
2354 void* pUserData
2355)
2356{
2357 WDI_EventInfoType wdiEventData;
2358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2359
2360 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002361 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002362 ------------------------------------------------------------------------*/
2363 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2364 {
2365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2366 "WDI API call before module is initialized - Fail request");
2367
Jeff Johnsone7245742012-09-05 17:12:55 -07002368 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002369 }
2370
2371 /*------------------------------------------------------------------------
2372 Fill in Event data and post to the Main FSM
2373 ------------------------------------------------------------------------*/
2374 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002375 wdiEventData.pEventData = pwdiStartScanParams;
2376 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2377 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002378 wdiEventData.pUserData = pUserData;
2379
2380 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2381
2382}/*WDI_StartScanReq*/
2383
2384
2385/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002386 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002387 wants to end scanning for a particular channel that it
2388 had set before by calling Scan Start on the WLAN Device.
2389 Upon the call of this API the WLAN DAL will pack and
2390 send a HAL End Scan request message to the lower RIVA
2391 sub-system if DAL is in state STARTED.
2392
2393 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002394 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002395
2396 WDI_StartScanReq must have been called.
2397
Jeff Johnsone7245742012-09-05 17:12:55 -07002398 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002399 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002400
Jeff Johnson295189b2012-06-20 16:38:30 -07002401 wdiEndScanRspCb: callback for passing back the response
2402 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002403
Jeff Johnson295189b2012-06-20 16:38:30 -07002404 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002405 callback
2406
Jeff Johnson295189b2012-06-20 16:38:30 -07002407 @see WDI_StartScanReq
2408 @return Result of the function call
2409*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002410WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002411WDI_EndScanReq
2412(
2413 WDI_EndScanReqParamsType* pwdiEndScanParams,
2414 WDI_EndScanRspCb wdiEndScanRspCb,
2415 void* pUserData
2416)
2417{
2418 WDI_EventInfoType wdiEventData;
2419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2420
2421 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002422 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002423 ------------------------------------------------------------------------*/
2424 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2425 {
2426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2427 "WDI API call before module is initialized - Fail request");
2428
Jeff Johnsone7245742012-09-05 17:12:55 -07002429 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 }
2431
2432 /*------------------------------------------------------------------------
2433 Fill in Event data and post to the Main FSM
2434 ------------------------------------------------------------------------*/
2435 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002436 wdiEventData.pEventData = pwdiEndScanParams;
2437 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2438 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002439 wdiEventData.pUserData = pUserData;
2440
2441 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2442
2443}/*WDI_EndScanReq*/
2444
2445
2446/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002447 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002448 completed the scan process on the WLAN Device. Upon the
2449 call of this API the WLAN DAL will pack and send a HAL
2450 Finish Scan Request request message to the lower RIVA
2451 sub-system if DAL is in state STARTED.
2452
2453 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002454 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002455
2456 WDI_InitScanReq must have been called.
2457
Jeff Johnsone7245742012-09-05 17:12:55 -07002458 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002459 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002460
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 wdiFinishScanRspCb: callback for passing back the
2462 response of the finish scan operation received from the
2463 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002464
Jeff Johnson295189b2012-06-20 16:38:30 -07002465 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002466 callback
2467
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 @see WDI_InitScanReq
2469 @return Result of the function call
2470*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002471WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002472WDI_FinishScanReq
2473(
2474 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2475 WDI_FinishScanRspCb wdiFinishScanRspCb,
2476 void* pUserData
2477)
2478{
2479 WDI_EventInfoType wdiEventData;
2480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2481
2482 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002483 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002484 ------------------------------------------------------------------------*/
2485 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2486 {
2487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2488 "WDI API call before module is initialized - Fail request");
2489
Jeff Johnsone7245742012-09-05 17:12:55 -07002490 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002491 }
2492
2493 /*------------------------------------------------------------------------
2494 Fill in Event data and post to the Main FSM
2495 ------------------------------------------------------------------------*/
2496 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 wdiEventData.pEventData = pwdiFinishScanParams;
2498 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2499 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002500 wdiEventData.pUserData = pUserData;
2501
2502 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2503
2504}/*WDI_FinishScanReq*/
2505
Jeff Johnsone7245742012-09-05 17:12:55 -07002506/*========================================================================
2507
Jeff Johnson295189b2012-06-20 16:38:30 -07002508 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002509
Jeff Johnson295189b2012-06-20 16:38:30 -07002510==========================================================================*/
2511
2512/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002513 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002514 to start an association procedure to a BSS. Upon the
2515 call of this API the WLAN DAL will pack and send a HAL
2516 Join request message to the lower RIVA sub-system if
2517 DAL is in state STARTED.
2518
2519 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002520 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002521
2522 WDI_Start must have been called.
2523
Jeff Johnsone7245742012-09-05 17:12:55 -07002524 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002525 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002526
Jeff Johnson295189b2012-06-20 16:38:30 -07002527 wdiJoinRspCb: callback for passing back the response of
2528 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002529
Jeff Johnson295189b2012-06-20 16:38:30 -07002530 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002531 callback
2532
Jeff Johnson295189b2012-06-20 16:38:30 -07002533 @see WDI_Start
2534 @return Result of the function call
2535*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002536WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002537WDI_JoinReq
2538(
2539 WDI_JoinReqParamsType* pwdiJoinParams,
2540 WDI_JoinRspCb wdiJoinRspCb,
2541 void* pUserData
2542)
2543{
2544 WDI_EventInfoType wdiEventData;
2545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2546
2547 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002548 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002549 ------------------------------------------------------------------------*/
2550 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2551 {
2552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2553 "WDI API call before module is initialized - Fail request");
2554
Jeff Johnsone7245742012-09-05 17:12:55 -07002555 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002556 }
2557
2558 /*------------------------------------------------------------------------
2559 Fill in Event data and post to the Main FSM
2560 ------------------------------------------------------------------------*/
2561 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002562 wdiEventData.pEventData = pwdiJoinParams;
2563 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2564 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002565 wdiEventData.pUserData = pUserData;
2566
2567 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2568
2569}/*WDI_JoinReq*/
2570
2571/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002572 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002573 wishes to configure the newly acquired or in process of
2574 being acquired BSS to the HW . Upon the call of this API
2575 the WLAN DAL will pack and send a HAL Config BSS request
2576 message to the lower RIVA sub-system if DAL is in state
2577 STARTED.
2578
2579 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002580 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002581
2582 WDI_JoinReq must have been called.
2583
Jeff Johnsone7245742012-09-05 17:12:55 -07002584 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002585 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002586
Jeff Johnson295189b2012-06-20 16:38:30 -07002587 wdiConfigBSSRspCb: callback for passing back the
2588 response of the config BSS operation received from the
2589 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002590
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002592 callback
2593
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 @see WDI_JoinReq
2595 @return Result of the function call
2596*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002597WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002598WDI_ConfigBSSReq
2599(
2600 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2601 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2602 void* pUserData
2603)
2604{
2605 WDI_EventInfoType wdiEventData;
2606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2607
2608 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002609 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002610 ------------------------------------------------------------------------*/
2611 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2612 {
2613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2614 "WDI API call before module is initialized - Fail request");
2615
Jeff Johnsone7245742012-09-05 17:12:55 -07002616 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002617 }
2618
2619 /*------------------------------------------------------------------------
2620 Fill in Event data and post to the Main FSM
2621 ------------------------------------------------------------------------*/
2622 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 wdiEventData.pEventData = pwdiConfigBSSParams;
2624 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2625 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002626 wdiEventData.pUserData = pUserData;
2627
2628 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2629
2630}/*WDI_ConfigBSSReq*/
2631
2632/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002633 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002634 disassociating from the BSS and wishes to notify HW.
2635 Upon the call of this API the WLAN DAL will pack and
2636 send a HAL Del BSS request message to the lower RIVA
2637 sub-system if DAL is in state STARTED.
2638
2639 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002640 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002641
2642 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2643
Jeff Johnsone7245742012-09-05 17:12:55 -07002644 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002646
Jeff Johnson295189b2012-06-20 16:38:30 -07002647 wdiDelBSSRspCb: callback for passing back the response
2648 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002649
Jeff Johnson295189b2012-06-20 16:38:30 -07002650 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002651 callback
2652
2653 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 @return Result of the function call
2655*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002656WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002657WDI_DelBSSReq
2658(
2659 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2660 WDI_DelBSSRspCb wdiDelBSSRspCb,
2661 void* pUserData
2662)
2663{
2664 WDI_EventInfoType wdiEventData;
2665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2666
2667 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002668 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002669 ------------------------------------------------------------------------*/
2670 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2671 {
2672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2673 "WDI API call before module is initialized - Fail request");
2674
Jeff Johnsone7245742012-09-05 17:12:55 -07002675 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002676 }
2677
2678 /*------------------------------------------------------------------------
2679 Fill in Event data and post to the Main FSM
2680 ------------------------------------------------------------------------*/
2681 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002682 wdiEventData.pEventData = pwdiDelBSSParams;
2683 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2684 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002685 wdiEventData.pUserData = pUserData;
2686
2687 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2688
2689}/*WDI_DelBSSReq*/
2690
2691/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002692 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002693 associated to a BSS and wishes to configure HW for
2694 associated state. Upon the call of this API the WLAN DAL
2695 will pack and send a HAL Post Assoc request message to
2696 the lower RIVA sub-system if DAL is in state STARTED.
2697
2698 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002699 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002700
2701 WDI_JoinReq must have been called.
2702
2703 @param wdiPostAssocReqParams: the assoc parameters as specified
2704 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002705
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 wdiPostAssocRspCb: callback for passing back the
2707 response of the post assoc operation received from the
2708 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002709
Jeff Johnson295189b2012-06-20 16:38:30 -07002710 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002711 callback
2712
Jeff Johnson295189b2012-06-20 16:38:30 -07002713 @see WDI_JoinReq
2714 @return Result of the function call
2715*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002716WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002717WDI_PostAssocReq
2718(
2719 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2720 WDI_PostAssocRspCb wdiPostAssocRspCb,
2721 void* pUserData
2722)
2723{
2724 WDI_EventInfoType wdiEventData;
2725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2726
2727 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002728 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002729 ------------------------------------------------------------------------*/
2730 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2731 {
2732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2733 "WDI API call before module is initialized - Fail request");
2734
Jeff Johnsone7245742012-09-05 17:12:55 -07002735 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002736 }
2737
2738 /*------------------------------------------------------------------------
2739 Fill in Event data and post to the Main FSM
2740 ------------------------------------------------------------------------*/
2741 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002742 wdiEventData.pEventData = pwdiPostAssocReqParams;
2743 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2744 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002745 wdiEventData.pUserData = pUserData;
2746
2747 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2748
2749}/*WDI_PostAssocReq*/
2750
2751/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002752 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002753 association with another STA has ended and the station
2754 must be deleted from HW. Upon the call of this API the
2755 WLAN DAL will pack and send a HAL Del STA request
2756 message to the lower RIVA sub-system if DAL is in state
2757 STARTED.
2758
2759 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002760 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002761
2762 WDI_PostAssocReq must have been called.
2763
Jeff Johnsone7245742012-09-05 17:12:55 -07002764 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002765 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002766
Jeff Johnson295189b2012-06-20 16:38:30 -07002767 wdiDelSTARspCb: callback for passing back the response
2768 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002769
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002771 callback
2772
Jeff Johnson295189b2012-06-20 16:38:30 -07002773 @see WDI_PostAssocReq
2774 @return Result of the function call
2775*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002776WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002777WDI_DelSTAReq
2778(
2779 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2780 WDI_DelSTARspCb wdiDelSTARspCb,
2781 void* pUserData
2782)
2783{
2784 WDI_EventInfoType wdiEventData;
2785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2786
2787 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002789 ------------------------------------------------------------------------*/
2790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2791 {
2792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2793 "WDI API call before module is initialized - Fail request");
2794
Jeff Johnsone7245742012-09-05 17:12:55 -07002795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002796 }
2797
2798 /*------------------------------------------------------------------------
2799 Fill in Event data and post to the Main FSM
2800 ------------------------------------------------------------------------*/
2801 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002802 wdiEventData.pEventData = pwdiDelSTAParams;
2803 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2804 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002805 wdiEventData.pUserData = pUserData;
2806
2807 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2808
2809}/*WDI_DelSTAReq*/
2810
Jeff Johnsone7245742012-09-05 17:12:55 -07002811/*========================================================================
2812
Jeff Johnson295189b2012-06-20 16:38:30 -07002813 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002814
Jeff Johnson295189b2012-06-20 16:38:30 -07002815==========================================================================*/
2816
2817/**
2818 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2819 install a BSS encryption key on the HW. Upon the call of this
2820 API the WLAN DAL will pack and send a Set BSS Key request
2821 message to the lower RIVA sub-system if DAL is in state
2822 STARTED.
2823
2824 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002825 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002826
2827 WDI_PostAssocReq must have been called.
2828
Jeff Johnsone7245742012-09-05 17:12:55 -07002829 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002830 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002831
Jeff Johnson295189b2012-06-20 16:38:30 -07002832 wdiSetBSSKeyRspCb: callback for passing back the
2833 response of the set BSS Key operation received from the
2834 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002835
Jeff Johnson295189b2012-06-20 16:38:30 -07002836 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002837 callback
2838
Jeff Johnson295189b2012-06-20 16:38:30 -07002839 @see WDI_PostAssocReq
2840 @return Result of the function call
2841*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002842WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002843WDI_SetBSSKeyReq
2844(
2845 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2846 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2847 void* pUserData
2848)
2849{
2850 WDI_EventInfoType wdiEventData;
2851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2852
2853 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002854 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002855 ------------------------------------------------------------------------*/
2856 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2857 {
2858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2859 "WDI API call before module is initialized - Fail request");
2860
Jeff Johnsone7245742012-09-05 17:12:55 -07002861 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002862 }
2863
2864 /*------------------------------------------------------------------------
2865 Fill in Event data and post to the Main FSM
2866 ------------------------------------------------------------------------*/
2867 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002868 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2869 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2870 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002871 wdiEventData.pUserData = pUserData;
2872
2873 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2874
2875}/*WDI_SetBSSKeyReq*/
2876
2877/**
2878 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2879 uninstall a BSS key from HW. Upon the call of this API the
2880 WLAN DAL will pack and send a HAL Remove BSS Key request
2881 message to the lower RIVA sub-system if DAL is in state
2882 STARTED.
2883
2884 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002885 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002886
2887 WDI_SetBSSKeyReq must have been called.
2888
Jeff Johnsone7245742012-09-05 17:12:55 -07002889 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002890 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002891
Jeff Johnson295189b2012-06-20 16:38:30 -07002892 wdiRemoveBSSKeyRspCb: callback for passing back the
2893 response of the remove BSS key operation received from
2894 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002895
Jeff Johnson295189b2012-06-20 16:38:30 -07002896 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002897 callback
2898
Jeff Johnson295189b2012-06-20 16:38:30 -07002899 @see WDI_SetBSSKeyReq
2900 @return Result of the function call
2901*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002902WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002903WDI_RemoveBSSKeyReq
2904(
2905 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2906 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2907 void* pUserData
2908)
2909{
2910 WDI_EventInfoType wdiEventData;
2911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2912
2913 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002914 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002915 ------------------------------------------------------------------------*/
2916 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2917 {
2918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2919 "WDI API call before module is initialized - Fail request");
2920
Jeff Johnsone7245742012-09-05 17:12:55 -07002921 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002922 }
2923
2924 /*------------------------------------------------------------------------
2925 Fill in Event data and post to the Main FSM
2926 ------------------------------------------------------------------------*/
2927 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002928 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2929 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2930 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002931 wdiEventData.pUserData = pUserData;
2932
2933 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2934
2935}/*WDI_RemoveBSSKeyReq*/
2936
2937
2938/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002939 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002940 ready to install a STA(ast) encryption key in HW. Upon
2941 the call of this API the WLAN DAL will pack and send a
2942 HAL Set STA Key request message to the lower RIVA
2943 sub-system if DAL is in state STARTED.
2944
2945 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002946 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002947
2948 WDI_PostAssocReq must have been called.
2949
Jeff Johnsone7245742012-09-05 17:12:55 -07002950 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002951 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002952
Jeff Johnson295189b2012-06-20 16:38:30 -07002953 wdiSetSTAKeyRspCb: callback for passing back the
2954 response of the set STA key operation received from the
2955 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002956
Jeff Johnson295189b2012-06-20 16:38:30 -07002957 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002958 callback
2959
Jeff Johnson295189b2012-06-20 16:38:30 -07002960 @see WDI_PostAssocReq
2961 @return Result of the function call
2962*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002963WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002964WDI_SetSTAKeyReq
2965(
2966 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2967 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2968 void* pUserData
2969)
2970{
2971 WDI_EventInfoType wdiEventData;
2972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2973
2974 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002975 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002976 ------------------------------------------------------------------------*/
2977 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2978 {
2979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2980 "WDI API call before module is initialized - Fail request");
2981
Jeff Johnsone7245742012-09-05 17:12:55 -07002982 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002983 }
2984
2985 /*------------------------------------------------------------------------
2986 Fill in Event data and post to the Main FSM
2987 ------------------------------------------------------------------------*/
2988 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002989 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2990 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2991 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002992 wdiEventData.pUserData = pUserData;
2993
2994 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2995
2996}/*WDI_SetSTAKeyReq*/
2997
2998
2999/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003000 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003001 wants to uninstall a previously set STA key in HW. Upon
3002 the call of this API the WLAN DAL will pack and send a
3003 HAL Remove STA Key request message to the lower RIVA
3004 sub-system if DAL is in state STARTED.
3005
3006 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003007 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003008
3009 WDI_SetSTAKeyReq must have been called.
3010
Jeff Johnsone7245742012-09-05 17:12:55 -07003011 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003012 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003013
Jeff Johnson295189b2012-06-20 16:38:30 -07003014 wdiRemoveSTAKeyRspCb: callback for passing back the
3015 response of the remove STA key operation received from
3016 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003017
Jeff Johnson295189b2012-06-20 16:38:30 -07003018 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003019 callback
3020
Jeff Johnson295189b2012-06-20 16:38:30 -07003021 @see WDI_SetSTAKeyReq
3022 @return Result of the function call
3023*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003024WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003025WDI_RemoveSTAKeyReq
3026(
3027 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3028 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3029 void* pUserData
3030)
3031{
3032 WDI_EventInfoType wdiEventData;
3033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3034
3035 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003036 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003037 ------------------------------------------------------------------------*/
3038 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3039 {
3040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3041 "WDI API call before module is initialized - Fail request");
3042
Jeff Johnsone7245742012-09-05 17:12:55 -07003043 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003044 }
3045
3046 /*------------------------------------------------------------------------
3047 Fill in Event data and post to the Main FSM
3048 ------------------------------------------------------------------------*/
3049 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003050 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3051 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3052 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003053 wdiEventData.pUserData = pUserData;
3054
3055 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3056
3057}/*WDI_RemoveSTAKeyReq*/
3058
3059
3060/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003061 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003062 wants to install a STA Bcast encryption key on the HW.
3063 Upon the call of this API the WLAN DAL will pack and
3064 send a HAL Start request message to the lower RIVA
3065 sub-system if DAL is in state STARTED.
3066
3067 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003068 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003069
3070 WDI_PostAssocReq must have been called.
3071
Jeff Johnsone7245742012-09-05 17:12:55 -07003072 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003073 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003074
Jeff Johnson295189b2012-06-20 16:38:30 -07003075 wdiSetSTABcastKeyRspCb: callback for passing back the
3076 response of the set BSS Key operation received from the
3077 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003078
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003080 callback
3081
Jeff Johnson295189b2012-06-20 16:38:30 -07003082 @see WDI_PostAssocReq
3083 @return Result of the function call
3084*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003085WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003086WDI_SetSTABcastKeyReq
3087(
3088 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3089 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3090 void* pUserData
3091)
3092
3093{
3094 WDI_EventInfoType wdiEventData;
3095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3096
3097 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003098 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003099 ------------------------------------------------------------------------*/
3100 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3101 {
3102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3103 "WDI API call before module is initialized - Fail request");
3104
Jeff Johnsone7245742012-09-05 17:12:55 -07003105 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003106 }
3107
3108 /*------------------------------------------------------------------------
3109 Fill in Event data and post to the Main FSM
3110 ------------------------------------------------------------------------*/
3111 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003112 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3113 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3114 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003115 wdiEventData.pUserData = pUserData;
3116
3117 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3118
3119}/*WDI_SetSTABcastKeyReq*/
3120
3121/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003122 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003123 MAC wants to uninstall a STA Bcast key from HW. Upon the
3124 call of this API the WLAN DAL will pack and send a HAL
3125 Remove STA Bcast Key request message to the lower RIVA
3126 sub-system if DAL is in state STARTED.
3127
3128 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003129 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003130
3131 WDI_SetSTABcastKeyReq must have been called.
3132
Jeff Johnsone7245742012-09-05 17:12:55 -07003133 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003134 parameters as specified by the Device
3135 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003136
Jeff Johnson295189b2012-06-20 16:38:30 -07003137 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3138 response of the remove STA Bcast key operation received
3139 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003140
Jeff Johnson295189b2012-06-20 16:38:30 -07003141 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003142 callback
3143
Jeff Johnson295189b2012-06-20 16:38:30 -07003144 @see WDI_SetSTABcastKeyReq
3145 @return Result of the function call
3146*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003147WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003148WDI_RemoveSTABcastKeyReq
3149(
3150 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3151 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3152 void* pUserData
3153)
3154{
3155 WDI_EventInfoType wdiEventData;
3156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3157
3158 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003159 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003160 ------------------------------------------------------------------------*/
3161 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3162 {
3163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3164 "WDI API call before module is initialized - Fail request");
3165
Jeff Johnsone7245742012-09-05 17:12:55 -07003166 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003167 }
3168
3169 /*------------------------------------------------------------------------
3170 Fill in Event data and post to the Main FSM
3171 ------------------------------------------------------------------------*/
3172 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003173 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3174 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3175 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003176 wdiEventData.pUserData = pUserData;
3177
3178 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3179
3180}/*WDI_RemoveSTABcastKeyReq*/
3181
3182/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003183 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003184 MAC wants to set Max Tx Power to HW. Upon the
3185 call of this API the WLAN DAL will pack and send a HAL
3186 Remove STA Bcast Key request message to the lower RIVA
3187 sub-system if DAL is in state STARTED.
3188
3189 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003190 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003191
3192 WDI_SetSTABcastKeyReq must have been called.
3193
Jeff Johnsone7245742012-09-05 17:12:55 -07003194 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003195 parameters as specified by the Device
3196 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003197
Jeff Johnson295189b2012-06-20 16:38:30 -07003198 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3199 response of the remove STA Bcast key operation received
3200 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003201
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003203 callback
3204
Jeff Johnson295189b2012-06-20 16:38:30 -07003205 @see WDI_SetMaxTxPowerReq
3206 @return Result of the function call
3207*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003208WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003209WDI_SetMaxTxPowerReq
3210(
3211 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3212 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3213 void* pUserData
3214)
3215{
3216 WDI_EventInfoType wdiEventData;
3217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3218
3219 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003220 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003221 ------------------------------------------------------------------------*/
3222 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3223 {
3224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3225 "WDI API call before module is initialized - Fail request");
3226
Jeff Johnsone7245742012-09-05 17:12:55 -07003227 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003228 }
3229
3230 /*------------------------------------------------------------------------
3231 Fill in Event data and post to the Main FSM
3232 ------------------------------------------------------------------------*/
3233 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003234 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3235 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3236 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003237 wdiEventData.pUserData = pUserData;
3238
3239 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3240}
3241
schang86c22c42013-03-13 18:41:24 -07003242/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003243 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3244 MAC wants to set Max Tx Power to HW for specific band.
3245
3246 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3247
3248 wdiReqStatusCb: callback for passing back the
3249 response msg from the device
3250
3251 pUserData: user data will be passed back with the
3252 callback
3253
3254 @see WDI_SetMaxTxPowerPerBandReq
3255 @return Result of the function call
3256*/
3257WDI_Status
3258WDI_SetMaxTxPowerPerBandReq
3259(
3260 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3261 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3262 void* pUserData
3263)
3264{
3265 WDI_EventInfoType wdiEventData;
3266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3267
3268 /*------------------------------------------------------------------------
3269 Sanity Check
3270 ------------------------------------------------------------------------*/
3271 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3272 {
3273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3274 "WDI API call before module is initialized - Fail request");
3275
3276 return WDI_STATUS_E_NOT_ALLOWED;
3277 }
3278
3279 /*------------------------------------------------------------------------
3280 Fill in Event data and post to the Main FSM
3281 ------------------------------------------------------------------------*/
3282 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3283 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3284 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3285 wdiEventData.pCBfnc = wdiReqStatusCb;
3286 wdiEventData.pUserData = pUserData;
3287
3288 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3289}
3290
3291/**
schang86c22c42013-03-13 18:41:24 -07003292 @brief WDI_SetTxPowerReq will be called when the upper
3293 MAC wants to set Tx Power to HW.
3294 In state BUSY this request will be queued. Request won't
3295 be allowed in any other state.
3296
3297
3298 @param pwdiSetTxPowerParams: set TS Power parameters
3299 BSSID and target TX Power with dbm included
3300
3301 wdiReqStatusCb: callback for passing back the response
3302
3303 pUserData: user data will be passed back with the
3304 callback
3305
3306 @return Result of the function call
3307*/
3308WDI_Status
3309WDI_SetTxPowerReq
3310(
3311 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3312 WDA_SetTxPowerRspCb wdiReqStatusCb,
3313 void* pUserData
3314)
3315{
3316 WDI_EventInfoType wdiEventData;
3317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3318
3319 /*------------------------------------------------------------------------
3320 Sanity Check
3321 ------------------------------------------------------------------------*/
3322 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3323 {
3324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3325 "WDI API call before module is initialized - Fail request");
3326
3327 return WDI_STATUS_E_NOT_ALLOWED;
3328 }
3329
3330 /*------------------------------------------------------------------------
3331 Fill in Event data and post to the Main FSM
3332 ------------------------------------------------------------------------*/
3333 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3334 wdiEventData.pEventData = pwdiSetTxPowerParams;
3335 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3336 wdiEventData.pCBfnc = wdiReqStatusCb;
3337 wdiEventData.pUserData = pUserData;
3338
3339 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3340}
3341
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003342#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003343WDI_Status
3344WDI_TSMStatsReq
3345(
3346 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3347 WDI_TsmRspCb wdiReqStatusCb,
3348 void* pUserData
3349)
3350{
3351 WDI_EventInfoType wdiEventData;
3352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003353 /*------------------------------------------------------------------------
3354 Sanity Check
3355 ------------------------------------------------------------------------*/
3356 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3357 {
3358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3359 "WDI API call before module is initialized - Fail request");
3360
3361 return WDI_STATUS_E_NOT_ALLOWED;
3362 }
3363
3364 /*------------------------------------------------------------------------
3365 Fill in Event data and post to the Main FSM
3366 ------------------------------------------------------------------------*/
3367 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3368 wdiEventData.pEventData = pwdiTsmReqParams;
3369 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3370 wdiEventData.pCBfnc = wdiReqStatusCb;
3371 wdiEventData.pUserData = pUserData;
3372
3373 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3374
3375}
3376#endif
3377
3378/*========================================================================
3379
3380 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003381
Jeff Johnson295189b2012-06-20 16:38:30 -07003382==========================================================================*/
3383
3384/**
3385 @brief WDI_AddTSReq will be called when the upper MAC to inform
3386 the device of a successful add TSpec negotiation. HW
3387 needs to receive the TSpec Info from the UMAC in order
3388 to configure properly the QoS data traffic. Upon the
3389 call of this API the WLAN DAL will pack and send a HAL
3390 Add TS request message to the lower RIVA sub-system if
3391 DAL is in state STARTED.
3392
3393 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003394 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003395
3396 WDI_PostAssocReq must have been called.
3397
3398 @param wdiAddTsReqParams: the add TS parameters as specified by
3399 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003400
Jeff Johnson295189b2012-06-20 16:38:30 -07003401 wdiAddTsRspCb: callback for passing back the response of
3402 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003403
Jeff Johnson295189b2012-06-20 16:38:30 -07003404 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003405 callback
3406
Jeff Johnson295189b2012-06-20 16:38:30 -07003407 @see WDI_PostAssocReq
3408 @return Result of the function call
3409*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003410WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003411WDI_AddTSReq
3412(
3413 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3414 WDI_AddTsRspCb wdiAddTsRspCb,
3415 void* pUserData
3416)
3417{
3418 WDI_EventInfoType wdiEventData;
3419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3420
3421 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003422 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003423 ------------------------------------------------------------------------*/
3424 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3425 {
3426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3427 "WDI API call before module is initialized - Fail request");
3428
Jeff Johnsone7245742012-09-05 17:12:55 -07003429 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003430 }
3431
3432 /*------------------------------------------------------------------------
3433 Fill in Event data and post to the Main FSM
3434 ------------------------------------------------------------------------*/
3435 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003436 wdiEventData.pEventData = pwdiAddTsReqParams;
3437 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3438 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003439 wdiEventData.pUserData = pUserData;
3440
3441 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3442
3443}/*WDI_AddTSReq*/
3444
3445
3446
3447/**
3448 @brief WDI_DelTSReq will be called when the upper MAC has ended
3449 admission on a specific AC. This is to inform HW that
3450 QoS traffic parameters must be rest. Upon the call of
3451 this API the WLAN DAL will pack and send a HAL Del TS
3452 request message to the lower RIVA sub-system if DAL is
3453 in state STARTED.
3454
3455 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003456 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003457
3458 WDI_AddTSReq must have been called.
3459
3460 @param wdiDelTsReqParams: the del TS parameters as specified by
3461 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003462
Jeff Johnson295189b2012-06-20 16:38:30 -07003463 wdiDelTsRspCb: callback for passing back the response of
3464 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003465
Jeff Johnson295189b2012-06-20 16:38:30 -07003466 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003467 callback
3468
Jeff Johnson295189b2012-06-20 16:38:30 -07003469 @see WDI_AddTSReq
3470 @return Result of the function call
3471*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003472WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003473WDI_DelTSReq
3474(
3475 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3476 WDI_DelTsRspCb wdiDelTsRspCb,
3477 void* pUserData
3478)
3479{
3480 WDI_EventInfoType wdiEventData;
3481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3482
3483 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003484 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003485 ------------------------------------------------------------------------*/
3486 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3487 {
3488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3489 "WDI API call before module is initialized - Fail request");
3490
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003492 }
3493
3494 /*------------------------------------------------------------------------
3495 Fill in Event data and post to the Main FSM
3496 ------------------------------------------------------------------------*/
3497 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003498 wdiEventData.pEventData = pwdiDelTsReqParams;
3499 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3500 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 wdiEventData.pUserData = pUserData;
3502
3503 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3504
3505}/*WDI_DelTSReq*/
3506
3507
3508
3509/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003510 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003511 wishes to update the EDCA parameters used by HW for QoS
3512 data traffic. Upon the call of this API the WLAN DAL
3513 will pack and send a HAL Update EDCA Params request
3514 message to the lower RIVA sub-system if DAL is in state
3515 STARTED.
3516
3517 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003518 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003519
3520 WDI_PostAssocReq must have been called.
3521
Jeff Johnsone7245742012-09-05 17:12:55 -07003522 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003523 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003524
Jeff Johnson295189b2012-06-20 16:38:30 -07003525 wdiUpdateEDCAParamsRspCb: callback for passing back the
3526 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003527
Jeff Johnson295189b2012-06-20 16:38:30 -07003528 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003529 callback
3530
Jeff Johnson295189b2012-06-20 16:38:30 -07003531 @see WDI_PostAssocReq
3532 @return Result of the function call
3533*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003534WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003535WDI_UpdateEDCAParams
3536(
3537 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3538 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3539 void* pUserData
3540)
3541{
3542 WDI_EventInfoType wdiEventData;
3543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3544
3545 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003546 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003547 ------------------------------------------------------------------------*/
3548 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3549 {
3550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3551 "WDI API call before module is initialized - Fail request");
3552
Jeff Johnsone7245742012-09-05 17:12:55 -07003553 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003554 }
3555
3556 /*------------------------------------------------------------------------
3557 Fill in Event data and post to the Main FSM
3558 ------------------------------------------------------------------------*/
3559 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003560 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3561 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3562 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003563 wdiEventData.pUserData = pUserData;
3564
3565 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3566
3567}/*WDI_UpdateEDCAParams*/
3568
3569
3570/**
3571 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3572 successfully a BA session and needs to notify the HW for
3573 the appropriate settings to take place. Upon the call of
3574 this API the WLAN DAL will pack and send a HAL Add BA
3575 request message to the lower RIVA sub-system if DAL is
3576 in state STARTED.
3577
3578 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003580
3581 WDI_PostAssocReq must have been called.
3582
3583 @param wdiAddBAReqParams: the add BA parameters as specified by
3584 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003585
Jeff Johnson295189b2012-06-20 16:38:30 -07003586 wdiAddBARspCb: callback for passing back the response of
3587 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003588
Jeff Johnson295189b2012-06-20 16:38:30 -07003589 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003590 callback
3591
Jeff Johnson295189b2012-06-20 16:38:30 -07003592 @see WDI_PostAssocReq
3593 @return Result of the function call
3594*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003595WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003596WDI_AddBASessionReq
3597(
3598 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3599 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3600 void* pUserData
3601)
3602{
3603 WDI_EventInfoType wdiEventData;
3604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3605
3606 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003607 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003608 ------------------------------------------------------------------------*/
3609 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3610 {
3611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3612 "WDI API call before module is initialized - Fail request");
3613
Jeff Johnsone7245742012-09-05 17:12:55 -07003614 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003615 }
3616
3617 /*------------------------------------------------------------------------
3618 Fill in Event data and post to the Main FSM
3619 ------------------------------------------------------------------------*/
3620 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003621 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3622 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3623 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003624 wdiEventData.pUserData = pUserData;
3625
3626 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3627
3628}/*WDI_AddBASessionReq*/
3629
3630/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003631 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003632 inform HW that it has deleted a previously created BA
3633 session. Upon the call of this API the WLAN DAL will
3634 pack and send a HAL Del BA request message to the lower
3635 RIVA sub-system if DAL is in state STARTED.
3636
3637 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003638 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003639
3640 WDI_AddBAReq must have been called.
3641
3642 @param wdiDelBAReqParams: the del BA parameters as specified by
3643 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003644
Jeff Johnson295189b2012-06-20 16:38:30 -07003645 wdiDelBARspCb: callback for passing back the response of
3646 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003647
Jeff Johnson295189b2012-06-20 16:38:30 -07003648 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003649 callback
3650
Jeff Johnson295189b2012-06-20 16:38:30 -07003651 @see WDI_AddBAReq
3652 @return Result of the function call
3653*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003654WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003655WDI_DelBAReq
3656(
3657 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3658 WDI_DelBARspCb wdiDelBARspCb,
3659 void* pUserData
3660)
3661{
3662 WDI_EventInfoType wdiEventData;
3663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3664
3665 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003666 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003667 ------------------------------------------------------------------------*/
3668 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3669 {
3670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3671 "WDI API call before module is initialized - Fail request");
3672
Jeff Johnsone7245742012-09-05 17:12:55 -07003673 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003674 }
3675
3676 /*------------------------------------------------------------------------
3677 Fill in Event data and post to the Main FSM
3678 ------------------------------------------------------------------------*/
3679 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003680 wdiEventData.pEventData = pwdiDelBAReqParams;
3681 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3682 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003683 wdiEventData.pUserData = pUserData;
3684
3685 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3686
3687}/*WDI_DelBAReq*/
3688
Jeff Johnsone7245742012-09-05 17:12:55 -07003689/*========================================================================
3690
Jeff Johnson295189b2012-06-20 16:38:30 -07003691 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003692
Jeff Johnson295189b2012-06-20 16:38:30 -07003693==========================================================================*/
3694
3695/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003696 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003697 wants to set the power save related configurations of
3698 the WLAN Device. Upon the call of this API the WLAN DAL
3699 will pack and send a HAL Update CFG request message to
3700 the lower RIVA sub-system if DAL is in state STARTED.
3701
3702 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003703 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003704
3705 WDI_Start must have been called.
3706
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003708 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003709
Jeff Johnson295189b2012-06-20 16:38:30 -07003710 wdiSetPwrSaveCfgCb: callback for passing back the
3711 response of the set power save cfg operation received
3712 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003713
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003715 callback
3716
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003718 @return Result of the function call
3719*/
3720WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003721WDI_SetPwrSaveCfgReq
3722(
3723 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3724 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3725 void* pUserData
3726)
3727{
3728 WDI_EventInfoType wdiEventData;
3729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3730
3731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003733 ------------------------------------------------------------------------*/
3734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3735 {
3736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3737 "WDI API call before module is initialized - Fail request");
3738
Jeff Johnsone7245742012-09-05 17:12:55 -07003739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003740 }
3741
3742 /*------------------------------------------------------------------------
3743 Fill in Event data and post to the Main FSM
3744 ------------------------------------------------------------------------*/
3745 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003746 wdiEventData.pEventData = pwdiPowerSaveCfg;
3747 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3748 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003749 wdiEventData.pUserData = pUserData;
3750
3751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3752
3753}/*WDI_SetPwrSaveCfgReq*/
3754
3755/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003756 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003757 request the device to get into IMPS power state. Upon
3758 the call of this API the WLAN DAL will send a HAL Enter
3759 IMPS request message to the lower RIVA sub-system if DAL
3760 is in state STARTED.
3761
3762 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003763 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003764
Jeff Johnsone7245742012-09-05 17:12:55 -07003765
3766 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003767 response of the Enter IMPS operation received from the
3768 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003769
Jeff Johnson295189b2012-06-20 16:38:30 -07003770 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003771 callback
3772
Jeff Johnson295189b2012-06-20 16:38:30 -07003773 @see WDI_Start
3774 @return Result of the function call
3775*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003776WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003777WDI_EnterImpsReq
3778(
Mihir Shetea4306052014-03-25 00:02:54 +05303779 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003780 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3781 void* pUserData
3782)
3783{
3784 WDI_EventInfoType wdiEventData;
3785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3786
3787 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003789 ------------------------------------------------------------------------*/
3790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3791 {
3792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3793 "WDI API call before module is initialized - Fail request");
3794
Jeff Johnsone7245742012-09-05 17:12:55 -07003795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003796 }
3797
3798 /*------------------------------------------------------------------------
3799 Fill in Event data and post to the Main FSM
3800 ------------------------------------------------------------------------*/
3801 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303802 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3803 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003804 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003805 wdiEventData.pUserData = pUserData;
3806
3807 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3808
3809}/*WDI_EnterImpsReq*/
3810
3811/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003812 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003813 request the device to get out of IMPS power state. Upon
3814 the call of this API the WLAN DAL will send a HAL Exit
3815 IMPS request message to the lower RIVA sub-system if DAL
3816 is in state STARTED.
3817
3818 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003820
Jeff Johnson295189b2012-06-20 16:38:30 -07003821
Jeff Johnsone7245742012-09-05 17:12:55 -07003822
3823 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003825
Jeff Johnson295189b2012-06-20 16:38:30 -07003826 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003827 callback
3828
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 @see WDI_Start
3830 @return Result of the function call
3831*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003832WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003833WDI_ExitImpsReq
3834(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303835 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003836 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3837 void* pUserData
3838)
3839{
3840 WDI_EventInfoType wdiEventData;
3841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3842
3843 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003844 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003845 ------------------------------------------------------------------------*/
3846 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3847 {
3848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3849 "WDI API call before module is initialized - Fail request");
3850
Jeff Johnsone7245742012-09-05 17:12:55 -07003851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 }
3853
3854 /*------------------------------------------------------------------------
3855 Fill in Event data and post to the Main FSM
3856 ------------------------------------------------------------------------*/
3857 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303858 wdiEventData.pEventData = pwdiExitImpsReqParams;
3859 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003860 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003861 wdiEventData.pUserData = pUserData;
3862
3863 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3864
3865}/*WDI_ExitImpsReq*/
3866
3867/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003868 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003869 request the device to get into BMPS power state. Upon
3870 the call of this API the WLAN DAL will pack and send a
3871 HAL Enter BMPS request message to the lower RIVA
3872 sub-system if DAL is in state STARTED.
3873
3874 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003876
3877 WDI_PostAssocReq must have been called.
3878
Jeff Johnsone7245742012-09-05 17:12:55 -07003879 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003880 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003881
Jeff Johnson295189b2012-06-20 16:38:30 -07003882 wdiEnterBmpsRspCb: callback for passing back the
3883 response of the Enter BMPS operation received from the
3884 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003885
Jeff Johnson295189b2012-06-20 16:38:30 -07003886 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003887 callback
3888
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 @see WDI_PostAssocReq
3890 @return Result of the function call
3891*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003892WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003893WDI_EnterBmpsReq
3894(
3895 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3896 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3897 void* pUserData
3898)
3899{
3900 WDI_EventInfoType wdiEventData;
3901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3902
3903 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003904 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003905 ------------------------------------------------------------------------*/
3906 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3907 {
3908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3909 "WDI API call before module is initialized - Fail request");
3910
Jeff Johnsone7245742012-09-05 17:12:55 -07003911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003912 }
3913
3914 /*------------------------------------------------------------------------
3915 Fill in Event data and post to the Main FSM
3916 ------------------------------------------------------------------------*/
3917 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003918 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3919 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3920 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003921 wdiEventData.pUserData = pUserData;
3922
3923 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3924
3925}/*WDI_EnterBmpsReq*/
3926
3927/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003928 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003929 request the device to get out of BMPS power state. Upon
3930 the call of this API the WLAN DAL will pack and send a
3931 HAL Exit BMPS request message to the lower RIVA
3932 sub-system if DAL is in state STARTED.
3933
3934 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003935 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003936
3937 WDI_PostAssocReq must have been called.
3938
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003940 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003941
Jeff Johnson295189b2012-06-20 16:38:30 -07003942 wdiExitBmpsRspCb: callback for passing back the response
3943 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003944
Jeff Johnson295189b2012-06-20 16:38:30 -07003945 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003946 callback
3947
Jeff Johnson295189b2012-06-20 16:38:30 -07003948 @see WDI_PostAssocReq
3949 @return Result of the function call
3950*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003951WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003952WDI_ExitBmpsReq
3953(
3954 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3955 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3956 void* pUserData
3957)
3958{
3959 WDI_EventInfoType wdiEventData;
3960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3961
3962 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003963 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003964 ------------------------------------------------------------------------*/
3965 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3966 {
3967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3968 "WDI API call before module is initialized - Fail request");
3969
Jeff Johnsone7245742012-09-05 17:12:55 -07003970 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003971 }
3972
3973 /*------------------------------------------------------------------------
3974 Fill in Event data and post to the Main FSM
3975 ------------------------------------------------------------------------*/
3976 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003977 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3978 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3979 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003980 wdiEventData.pUserData = pUserData;
3981
3982 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3983
3984}/*WDI_ExitBmpsReq*/
3985
3986/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003987 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003988 request the device to get into UAPSD power state. Upon
3989 the call of this API the WLAN DAL will pack and send a
3990 HAL Enter UAPSD request message to the lower RIVA
3991 sub-system if DAL is in state STARTED.
3992
3993 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003994 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003995
3996 WDI_PostAssocReq must have been called.
3997 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003998
3999 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004000 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004001
Jeff Johnson295189b2012-06-20 16:38:30 -07004002 wdiEnterUapsdRspCb: callback for passing back the
4003 response of the Enter UAPSD operation received from the
4004 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004005
Jeff Johnson295189b2012-06-20 16:38:30 -07004006 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004007 callback
4008
Jeff Johnson295189b2012-06-20 16:38:30 -07004009 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4010 @return Result of the function call
4011*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004012WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004013WDI_EnterUapsdReq
4014(
4015 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4016 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4017 void* pUserData
4018)
4019{
4020 WDI_EventInfoType wdiEventData;
4021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4022
4023 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004024 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004025 ------------------------------------------------------------------------*/
4026 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4027 {
4028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4029 "WDI API call before module is initialized - Fail request");
4030
Jeff Johnsone7245742012-09-05 17:12:55 -07004031 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004032 }
4033
4034 /*------------------------------------------------------------------------
4035 Fill in Event data and post to the Main FSM
4036 ------------------------------------------------------------------------*/
4037 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004038 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4039 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4040 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004041 wdiEventData.pUserData = pUserData;
4042
4043 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4044
4045}/*WDI_EnterUapsdReq*/
4046
4047/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004048 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004049 request the device to get out of UAPSD power state. Upon
4050 the call of this API the WLAN DAL will send a HAL Exit
4051 UAPSD request message to the lower RIVA sub-system if
4052 DAL is in state STARTED.
4053
4054 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004055 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004056
4057 WDI_PostAssocReq must have been called.
4058
Jeff Johnsone7245742012-09-05 17:12:55 -07004059 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004060 response of the Exit UAPSD operation received from the
4061 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004062
Jeff Johnson295189b2012-06-20 16:38:30 -07004063 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004064 callback
4065
Jeff Johnson295189b2012-06-20 16:38:30 -07004066 @see WDI_PostAssocReq
4067 @return Result of the function call
4068*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004069WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004070WDI_ExitUapsdReq
4071(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004072 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004073 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4074 void* pUserData
4075)
4076{
4077 WDI_EventInfoType wdiEventData;
4078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4079
4080 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004081 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004082 ------------------------------------------------------------------------*/
4083 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4084 {
4085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4086 "WDI API call before module is initialized - Fail request");
4087
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 }
4090
4091 /*------------------------------------------------------------------------
4092 Fill in Event data and post to the Main FSM
4093 ------------------------------------------------------------------------*/
4094 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004095 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4096 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004097 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004098 wdiEventData.pUserData = pUserData;
4099
4100 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4101
4102}/*WDI_ExitUapsdReq*/
4103
4104/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004105 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004106 MAC wants to set the UAPSD related configurations
4107 of an associated STA (while acting as an AP) to the WLAN
4108 Device. Upon the call of this API the WLAN DAL will pack
4109 and send a HAL Update UAPSD params request message to
4110 the lower RIVA sub-system if DAL is in state STARTED.
4111
4112 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004113 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004114
4115 WDI_ConfigBSSReq must have been called.
4116
Jeff Johnsone7245742012-09-05 17:12:55 -07004117 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004118 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004119
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 wdiUpdateUapsdParamsCb: callback for passing back the
4121 response of the update UAPSD params operation received
4122 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004123
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004125 callback
4126
Jeff Johnson295189b2012-06-20 16:38:30 -07004127 @see WDI_ConfigBSSReq
4128 @return Result of the function call
4129*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004130WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004131WDI_UpdateUapsdParamsReq
4132(
4133 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4134 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4135 void* pUserData
4136)
4137{
4138 WDI_EventInfoType wdiEventData;
4139 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4140
4141 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004142 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004143 ------------------------------------------------------------------------*/
4144 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4145 {
4146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4147 "WDI API call before module is initialized - Fail request");
4148
Jeff Johnsone7245742012-09-05 17:12:55 -07004149 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004150 }
4151
4152 /*------------------------------------------------------------------------
4153 Fill in Event data and post to the Main FSM
4154 ------------------------------------------------------------------------*/
4155 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004156 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004157 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004158 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004159 wdiEventData.pUserData = pUserData;
4160
4161 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4162
4163}/*WDI_UpdateUapsdParamsReq*/
4164
4165/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004166 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004167 MAC wants to set the UAPSD related configurations before
4168 requesting for enter UAPSD power state to the WLAN
4169 Device. Upon the call of this API the WLAN DAL will pack
4170 and send a HAL Set UAPSD params request message to
4171 the lower RIVA sub-system if DAL is in state STARTED.
4172
4173 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004174 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004175
4176 WDI_PostAssocReq must have been called.
4177
4178 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4179 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004180
Jeff Johnson295189b2012-06-20 16:38:30 -07004181 wdiSetUapsdAcParamsCb: callback for passing back the
4182 response of the set UAPSD params operation received from
4183 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004184
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004186 callback
4187
Jeff Johnson295189b2012-06-20 16:38:30 -07004188 @see WDI_PostAssocReq
4189 @return Result of the function call
4190*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004191WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004192WDI_SetUapsdAcParamsReq
4193(
4194 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4195 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4196 void* pUserData
4197)
4198{
4199 WDI_EventInfoType wdiEventData;
4200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4201
4202 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004203 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004204 ------------------------------------------------------------------------*/
4205 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4206 {
4207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4208 "WDI API call before module is initialized - Fail request");
4209
Jeff Johnsone7245742012-09-05 17:12:55 -07004210 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004211 }
4212
4213 /*------------------------------------------------------------------------
4214 Fill in Event data and post to the Main FSM
4215 ------------------------------------------------------------------------*/
4216 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004217 wdiEventData.pEventData = pwdiUapsdInfo;
4218 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4219 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004220 wdiEventData.pUserData = pUserData;
4221
4222 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4223
4224}/*WDI_SetUapsdAcParamsReq*/
4225
4226/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304227 @brief WDI_FWLoggingDXEdoneInd
4228
4229 FW Logging DXE done Indication from the upper layer will be sent
4230 down to HAL
4231
4232 @param WDI_FWLoggingDXEdoneIndInfoType
4233
4234 @see
4235
4236 @return Status of the request
4237*/
4238WDI_Status
4239WDI_FWLoggingDXEdoneInd
4240(
4241 WDI_FWLoggingDXEdoneIndInfoType* pwdiFWLoggingDXEdoneInd
4242)
4243{
4244
4245 WDI_EventInfoType wdiEventData;
4246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4247
4248 /*------------------------------------------------------------------------
4249 Sanity Check
4250 ------------------------------------------------------------------------*/
4251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4252 {
4253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4254 "WDI API call before module is initialized - Fail request");
4255
4256 return WDI_STATUS_E_NOT_ALLOWED;
4257 }
4258
4259 /*------------------------------------------------------------------------
4260 Fill in Event data and post to the Main FSM
4261 ------------------------------------------------------------------------*/
4262 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
4263 wdiEventData.pEventData = pwdiFWLoggingDXEdoneInd;
4264 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingDXEdoneInd);
4265 wdiEventData.pCBfnc = NULL;
4266 wdiEventData.pUserData = NULL;
4267
4268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4269
4270}/*WDI_FWLoggingDXEdoneInd*/
4271
4272/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304273 @brief WDI_GetFrameLogReq will be called when the upper
4274 MAC wants to initialize frame logging. Upon the call of
4275 this API the WLAN DAL will pack and send a HAL
4276 Frame logging init request message to
4277 the lower RIVA sub-system.
4278
4279 In state BUSY this request will be queued. Request won't
4280 be allowed in any other state.
4281
4282
4283 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4284 as specified by the Device Interface
4285
4286 wdiGetFrameLogRspCb: callback for passing back the
4287 response of the frame logging init operation received
4288 from the device
4289
4290 pUserData: user data will be passed back with the
4291 callback
4292
4293 @return Result of the function call
4294*/
4295WDI_Status
4296WDI_GetFrameLogReq
4297(
4298 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4299 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4300 void* pUserData
4301)
4302{
4303 WDI_EventInfoType wdiEventData;
4304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4305
4306 /*------------------------------------------------------------------------
4307 Sanity Check
4308 ------------------------------------------------------------------------*/
4309 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4310 {
4311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4312 "WDI API call before module is initialized - Fail request");
4313
4314 return WDI_STATUS_E_NOT_ALLOWED;
4315 }
4316
4317 /*------------------------------------------------------------------------
4318 Fill in Event data and post to the Main FSM
4319 ------------------------------------------------------------------------*/
4320 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4321 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4322 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4323 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4324 wdiEventData.pUserData = pUserData;
4325
4326 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4327}
4328/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304329 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304330 MAC wants to initialize frame logging. Upon the call of
4331 this API the WLAN DAL will pack and send a HAL
4332 Frame logging init request message to
4333 the lower RIVA sub-system.
4334
4335 In state BUSY this request will be queued. Request won't
4336 be allowed in any other state.
4337
4338
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304339 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304340 as specified by the Device Interface
4341
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304342 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304343 response of the frame logging init operation received
4344 from the device
4345
4346 pUserData: user data will be passed back with the
4347 callback
4348
4349 @return Result of the function call
4350*/
4351WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304352WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304353(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304354 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4355 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304356 void* pUserData
4357)
4358{
4359 WDI_EventInfoType wdiEventData;
4360
4361 /*------------------------------------------------------------------------
4362 Sanity Check
4363 ------------------------------------------------------------------------*/
4364 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4365 {
4366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4367 "WDI API call before module is initialized - Fail request");
4368
4369 return WDI_STATUS_E_NOT_ALLOWED;
4370 }
4371
4372 /*------------------------------------------------------------------------
4373 Fill in Event data and post to the Main FSM
4374 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304375 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4376 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4377 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4378 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304379 wdiEventData.pUserData = pUserData;
4380
4381 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4382}
4383
4384/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004385 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004386 MAC wants to set/reset the RXP filters for received pkts
4387 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4388 and send a HAL configure RXP filter request message to
4389 the lower RIVA sub-system.
4390
4391 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004392 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004393
Jeff Johnsone7245742012-09-05 17:12:55 -07004394
4395 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004396 filter as specified by the Device
4397 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004398
Jeff Johnson295189b2012-06-20 16:38:30 -07004399 wdiConfigureRxpFilterCb: callback for passing back the
4400 response of the configure RXP filter operation received
4401 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004402
Jeff Johnson295189b2012-06-20 16:38:30 -07004403 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004404 callback
4405
Jeff Johnson295189b2012-06-20 16:38:30 -07004406 @return Result of the function call
4407*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004408WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004409WDI_ConfigureRxpFilterReq
4410(
4411 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4412 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4413 void* pUserData
4414)
4415{
4416 WDI_EventInfoType wdiEventData;
4417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4418
4419 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004420 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004421 ------------------------------------------------------------------------*/
4422 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4423 {
4424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4425 "WDI API call before module is initialized - Fail request");
4426
Jeff Johnsone7245742012-09-05 17:12:55 -07004427 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004428 }
4429
4430 /*------------------------------------------------------------------------
4431 Fill in Event data and post to the Main FSM
4432 ------------------------------------------------------------------------*/
4433 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004434 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4435 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4436 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004437 wdiEventData.pUserData = pUserData;
4438
4439 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4440}/*WDI_ConfigureRxpFilterReq*/
4441
4442/**
4443 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4444 wants to set the beacon filters while in power save.
4445 Upon the call of this API the WLAN DAL will pack and
4446 send a Beacon filter request message to the
4447 lower RIVA sub-system.
4448
4449 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004450 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004451
Jeff Johnsone7245742012-09-05 17:12:55 -07004452
4453 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004454 filter as specified by the Device
4455 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004456
Jeff Johnson295189b2012-06-20 16:38:30 -07004457 wdiBeaconFilterCb: callback for passing back the
4458 response of the set beacon filter operation received
4459 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004460
Jeff Johnson295189b2012-06-20 16:38:30 -07004461 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004462 callback
4463
Jeff Johnson295189b2012-06-20 16:38:30 -07004464 @return Result of the function call
4465*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004466WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004467WDI_SetBeaconFilterReq
4468(
4469 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4470 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4471 void* pUserData
4472)
4473{
4474 WDI_EventInfoType wdiEventData;
4475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4476
4477 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004478 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004479 ------------------------------------------------------------------------*/
4480 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4481 {
4482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4483 "WDI API call before module is initialized - Fail request");
4484
Jeff Johnsone7245742012-09-05 17:12:55 -07004485 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004486 }
4487
4488 /*------------------------------------------------------------------------
4489 Fill in Event data and post to the Main FSM
4490 ------------------------------------------------------------------------*/
4491 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004492 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004493 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004494 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004495 wdiEventData.pUserData = pUserData;
4496
4497 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4498}/*WDI_SetBeaconFilterReq*/
4499
4500/**
4501 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4502 wants to remove the beacon filter for particular IE
4503 while in power save. Upon the call of this API the WLAN
4504 DAL will pack and send a remove Beacon filter request
4505 message to the lower RIVA sub-system.
4506
4507 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004508 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004509
Jeff Johnsone7245742012-09-05 17:12:55 -07004510
4511 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004512 filter as specified by the Device
4513 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004514
Jeff Johnson295189b2012-06-20 16:38:30 -07004515 wdiBeaconFilterCb: callback for passing back the
4516 response of the remove beacon filter operation received
4517 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004518
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004520 callback
4521
Jeff Johnson295189b2012-06-20 16:38:30 -07004522 @return Result of the function call
4523*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004524WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004525WDI_RemBeaconFilterReq
4526(
4527 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4528 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4529 void* pUserData
4530)
4531{
4532 WDI_EventInfoType wdiEventData;
4533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4534
4535 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004536 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004537 ------------------------------------------------------------------------*/
4538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4539 {
4540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4541 "WDI API call before module is initialized - Fail request");
4542
Jeff Johnsone7245742012-09-05 17:12:55 -07004543 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004544 }
4545
4546 /*------------------------------------------------------------------------
4547 Fill in Event data and post to the Main FSM
4548 ------------------------------------------------------------------------*/
4549 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004550 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004551 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004552 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004553 wdiEventData.pUserData = pUserData;
4554
4555 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4556}/*WDI_RemBeaconFilterReq*/
4557
4558/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004559 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004560 MAC wants to set the RSSI thresholds related
4561 configurations while in power save. Upon the call of
4562 this API the WLAN DAL will pack and send a HAL Set RSSI
4563 thresholds request message to the lower RIVA
4564 sub-system if DAL is in state STARTED.
4565
4566 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004567 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004568
4569 WDI_PostAssocReq must have been called.
4570
4571 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4572 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004573
Jeff Johnson295189b2012-06-20 16:38:30 -07004574 wdiSetUapsdAcParamsCb: callback for passing back the
4575 response of the set UAPSD params operation received from
4576 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004577
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004579 callback
4580
Jeff Johnson295189b2012-06-20 16:38:30 -07004581 @see WDI_PostAssocReq
4582 @return Result of the function call
4583*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004584WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004585WDI_SetRSSIThresholdsReq
4586(
4587 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4588 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4589 void* pUserData
4590)
4591{
4592 WDI_EventInfoType wdiEventData;
4593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4594
4595 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004596 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004597 ------------------------------------------------------------------------*/
4598 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4599 {
4600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4601 "WDI API call before module is initialized - Fail request");
4602
Jeff Johnsone7245742012-09-05 17:12:55 -07004603 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004604 }
4605
4606 /*------------------------------------------------------------------------
4607 Fill in Event data and post to the Main FSM
4608 ------------------------------------------------------------------------*/
4609 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004610 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004611 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004612 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004613 wdiEventData.pUserData = pUserData;
4614
4615 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4616}/* WDI_SetRSSIThresholdsReq*/
4617
4618/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004619 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004620 wants to set the filter to minimize unnecessary host
4621 wakeup due to broadcast traffic while in power save.
4622 Upon the call of this API the WLAN DAL will pack and
4623 send a HAL host offload request message to the
4624 lower RIVA sub-system if DAL is in state STARTED.
4625
4626 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004627 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004628
4629 WDI_PostAssocReq must have been called.
4630
Jeff Johnsone7245742012-09-05 17:12:55 -07004631 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004632 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004633
Jeff Johnson295189b2012-06-20 16:38:30 -07004634 wdiHostOffloadCb: callback for passing back the response
4635 of the host offload operation received from the
4636 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004637
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004639 callback
4640
Jeff Johnson295189b2012-06-20 16:38:30 -07004641 @see WDI_PostAssocReq
4642 @return Result of the function call
4643*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004644WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004645WDI_HostOffloadReq
4646(
4647 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4648 WDI_HostOffloadCb wdiHostOffloadCb,
4649 void* pUserData
4650)
4651{
4652 WDI_EventInfoType wdiEventData;
4653 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4654
4655 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004656 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004657 ------------------------------------------------------------------------*/
4658 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4659 {
4660 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4661 "WDI API call before module is initialized - Fail request");
4662
Jeff Johnsone7245742012-09-05 17:12:55 -07004663 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004664 }
4665
4666 /*------------------------------------------------------------------------
4667 Fill in Event data and post to the Main FSM
4668 ------------------------------------------------------------------------*/
4669 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004670 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004671 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004672 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004673 wdiEventData.pUserData = pUserData;
4674
4675 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4676}/*WDI_HostOffloadReq*/
4677
4678/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004679 @brief WDI_KeepAliveReq will be called when the upper MAC
4680 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004681 and minimize unnecessary host wakeups due to while in power save.
4682 Upon the call of this API the WLAN DAL will pack and
4683 send a HAL Keep Alive request message to the
4684 lower RIVA sub-system if DAL is in state STARTED.
4685
4686 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004687 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004688
4689 WDI_PostAssocReq must have been called.
4690
Jeff Johnsone7245742012-09-05 17:12:55 -07004691 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004692 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004693
Jeff Johnson295189b2012-06-20 16:38:30 -07004694 wdiKeepAliveCb: callback for passing back the response
4695 of the Keep Alive operation received from the
4696 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004697
Jeff Johnson295189b2012-06-20 16:38:30 -07004698 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004699 callback
4700
Jeff Johnson295189b2012-06-20 16:38:30 -07004701 @see WDI_PostAssocReq
4702 @return Result of the function call
4703*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004704WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004705WDI_KeepAliveReq
4706(
4707 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4708 WDI_KeepAliveCb wdiKeepAliveCb,
4709 void* pUserData
4710)
4711{
4712 WDI_EventInfoType wdiEventData;
4713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4714
4715 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004716 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004717 ------------------------------------------------------------------------*/
4718 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4719 {
4720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4721 "WDI_KeepAliveReq: WDI API call before module "
4722 "is initialized - Fail request");
4723
Jeff Johnsone7245742012-09-05 17:12:55 -07004724 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004725 }
4726
4727 /*------------------------------------------------------------------------
4728 Fill in Event data and post to the Main FSM
4729 ------------------------------------------------------------------------*/
4730 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004731 wdiEventData.pEventData = pwdiKeepAliveParams;
4732 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4733 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004734 wdiEventData.pUserData = pUserData;
4735
4736 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4737}/*WDI_KeepAliveReq*/
4738
4739/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004740 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004741 wants to set the Wowl Bcast ptrn to minimize unnecessary
4742 host wakeup due to broadcast traffic while in power
4743 save. Upon the call of this API the WLAN DAL will pack
4744 and send a HAL Wowl Bcast ptrn request message to the
4745 lower RIVA sub-system if DAL is in state STARTED.
4746
4747 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004748 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004749
4750 WDI_PostAssocReq must have been called.
4751
Jeff Johnsone7245742012-09-05 17:12:55 -07004752 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004753 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004754
Jeff Johnson295189b2012-06-20 16:38:30 -07004755 wdiWowlAddBcPtrnCb: callback for passing back the
4756 response of the add Wowl bcast ptrn operation received
4757 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004758
Jeff Johnson295189b2012-06-20 16:38:30 -07004759 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004760 callback
4761
Jeff Johnson295189b2012-06-20 16:38:30 -07004762 @see WDI_PostAssocReq
4763 @return Result of the function call
4764*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004765WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004766WDI_WowlAddBcPtrnReq
4767(
4768 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4769 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4770 void* pUserData
4771)
4772{
4773 WDI_EventInfoType wdiEventData;
4774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4775
4776 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004777 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004778 ------------------------------------------------------------------------*/
4779 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4780 {
4781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4782 "WDI API call before module is initialized - Fail request");
4783
Jeff Johnsone7245742012-09-05 17:12:55 -07004784 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004785 }
4786
4787 /*------------------------------------------------------------------------
4788 Fill in Event data and post to the Main FSM
4789 ------------------------------------------------------------------------*/
4790 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004791 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004792 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004793 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004794 wdiEventData.pUserData = pUserData;
4795
4796 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4797}/*WDI_WowlAddBcPtrnReq*/
4798
4799/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004800 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004801 wants to clear the Wowl Bcast ptrn. Upon the call of
4802 this API the WLAN DAL will pack and send a HAL delete
4803 Wowl Bcast ptrn request message to the lower RIVA
4804 sub-system if DAL is in state STARTED.
4805
4806 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004807 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004808
4809 WDI_WowlAddBcPtrnReq must have been called.
4810
Jeff Johnsone7245742012-09-05 17:12:55 -07004811 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004812 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004813
Jeff Johnson295189b2012-06-20 16:38:30 -07004814 wdiWowlDelBcPtrnCb: callback for passing back the
4815 response of the del Wowl bcast ptrn operation received
4816 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004817
Jeff Johnson295189b2012-06-20 16:38:30 -07004818 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004819 callback
4820
Jeff Johnson295189b2012-06-20 16:38:30 -07004821 @see WDI_WowlAddBcPtrnReq
4822 @return Result of the function call
4823*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004824WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004825WDI_WowlDelBcPtrnReq
4826(
4827 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4828 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4829 void* pUserData
4830)
4831{
4832 WDI_EventInfoType wdiEventData;
4833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4834
4835 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004836 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004837 ------------------------------------------------------------------------*/
4838 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4839 {
4840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4841 "WDI API call before module is initialized - Fail request");
4842
Jeff Johnsone7245742012-09-05 17:12:55 -07004843 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004844 }
4845
4846 /*------------------------------------------------------------------------
4847 Fill in Event data and post to the Main FSM
4848 ------------------------------------------------------------------------*/
4849 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004850 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004851 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004852 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004853 wdiEventData.pUserData = pUserData;
4854
4855 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4856}/*WDI_WowlDelBcPtrnReq*/
4857
4858/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004859 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004860 wants to enter the Wowl state to minimize unnecessary
4861 host wakeup while in power save. Upon the call of this
4862 API the WLAN DAL will pack and send a HAL Wowl enter
4863 request message to the lower RIVA sub-system if DAL is
4864 in state STARTED.
4865
4866 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004867 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004868
4869 WDI_PostAssocReq must have been called.
4870
Jeff Johnsone7245742012-09-05 17:12:55 -07004871 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004872 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004873
Jeff Johnson295189b2012-06-20 16:38:30 -07004874 wdiWowlEnterReqCb: callback for passing back the
4875 response of the enter Wowl operation received from the
4876 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004877
Jeff Johnson295189b2012-06-20 16:38:30 -07004878 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004879 callback
4880
Jeff Johnson295189b2012-06-20 16:38:30 -07004881 @see WDI_PostAssocReq
4882 @return Result of the function call
4883*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004884WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004885WDI_WowlEnterReq
4886(
4887 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4888 WDI_WowlEnterReqCb wdiWowlEnterCb,
4889 void* pUserData
4890)
4891{
4892 WDI_EventInfoType wdiEventData;
4893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4894
4895 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004896 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004897 ------------------------------------------------------------------------*/
4898 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4899 {
4900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4901 "WDI API call before module is initialized - Fail request");
4902
Jeff Johnsone7245742012-09-05 17:12:55 -07004903 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004904 }
4905
4906 /*------------------------------------------------------------------------
4907 Fill in Event data and post to the Main FSM
4908 ------------------------------------------------------------------------*/
4909 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004910 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004911 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004912 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004913 wdiEventData.pUserData = pUserData;
4914
4915 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4916}/*WDI_WowlEnterReq*/
4917
4918/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004919 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004920 wants to exit the Wowl state. Upon the call of this API
4921 the WLAN DAL will pack and send a HAL Wowl exit request
4922 message to the lower RIVA sub-system if DAL is in state
4923 STARTED.
4924
4925 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004926 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004927
4928 WDI_WowlEnterReq must have been called.
4929
Jeff Johnsone7245742012-09-05 17:12:55 -07004930 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004931 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004932
Jeff Johnson295189b2012-06-20 16:38:30 -07004933 wdiWowlExitReqCb: callback for passing back the response
4934 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004935
Jeff Johnson295189b2012-06-20 16:38:30 -07004936 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004937 callback
4938
Jeff Johnson295189b2012-06-20 16:38:30 -07004939 @see WDI_WowlEnterReq
4940 @return Result of the function call
4941*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004942WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004943WDI_WowlExitReq
4944(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004945 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004946 WDI_WowlExitReqCb wdiWowlExitCb,
4947 void* pUserData
4948)
4949{
4950 WDI_EventInfoType wdiEventData;
4951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4952
4953 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004954 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004955 ------------------------------------------------------------------------*/
4956 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4957 {
4958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4959 "WDI API call before module is initialized - Fail request");
4960
Jeff Johnsone7245742012-09-05 17:12:55 -07004961 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004962 }
4963
4964 /*------------------------------------------------------------------------
4965 Fill in Event data and post to the Main FSM
4966 ------------------------------------------------------------------------*/
4967 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004968 wdiEventData.pEventData = pwdiWowlExitParams;
4969 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004970 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004971 wdiEventData.pUserData = pUserData;
4972
4973 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4974}/*WDI_WowlExitReq*/
4975
4976/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004977 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004978 the upper MAC wants to dynamically adjusts the listen
4979 interval based on the WLAN/MSM activity. Upon the call
4980 of this API the WLAN DAL will pack and send a HAL
4981 configure Apps Cpu Wakeup State request message to the
4982 lower RIVA sub-system.
4983
4984 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004985 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004986
Jeff Johnsone7245742012-09-05 17:12:55 -07004987
4988 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004989 Apps Cpu Wakeup State as specified by the
4990 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004991
Jeff Johnson295189b2012-06-20 16:38:30 -07004992 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4993 back the response of the configure Apps Cpu Wakeup State
4994 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004995
Jeff Johnson295189b2012-06-20 16:38:30 -07004996 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004997 callback
4998
Jeff Johnson295189b2012-06-20 16:38:30 -07004999 @return Result of the function call
5000*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005001WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005002WDI_ConfigureAppsCpuWakeupStateReq
5003(
5004 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5005 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5006 void* pUserData
5007)
5008{
5009 WDI_EventInfoType wdiEventData;
5010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5011
5012 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005013 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005014 ------------------------------------------------------------------------*/
5015 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5016 {
5017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5018 "WDI API call before module is initialized - Fail request");
5019
Jeff Johnsone7245742012-09-05 17:12:55 -07005020 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005021 }
5022
5023 /*------------------------------------------------------------------------
5024 Fill in Event data and post to the Main FSM
5025 ------------------------------------------------------------------------*/
5026 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005027 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5028 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5029 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005030 wdiEventData.pUserData = pUserData;
5031
5032 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5033}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5034/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005035 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005036 to to perform a flush operation on a given AC. Upon the
5037 call of this API the WLAN DAL will pack and send a HAL
5038 Flush AC request message to the lower RIVA sub-system if
5039 DAL is in state STARTED.
5040
5041 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005042 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005043
5044 WDI_AddBAReq must have been called.
5045
Jeff Johnsone7245742012-09-05 17:12:55 -07005046 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005047 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005048
Jeff Johnson295189b2012-06-20 16:38:30 -07005049 wdiFlushAcRspCb: callback for passing back the response
5050 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005051
Jeff Johnson295189b2012-06-20 16:38:30 -07005052 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005053 callback
5054
Jeff Johnson295189b2012-06-20 16:38:30 -07005055 @see WDI_AddBAReq
5056 @return Result of the function call
5057*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005058WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005059WDI_FlushAcReq
5060(
5061 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5062 WDI_FlushAcRspCb wdiFlushAcRspCb,
5063 void* pUserData
5064)
5065{
5066 WDI_EventInfoType wdiEventData;
5067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5068
5069 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005070 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005071 ------------------------------------------------------------------------*/
5072 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5073 {
5074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5075 "WDI API call before module is initialized - Fail request");
5076
Jeff Johnsone7245742012-09-05 17:12:55 -07005077 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005078 }
5079
5080 /*------------------------------------------------------------------------
5081 Fill in Event data and post to the Main FSM
5082 ------------------------------------------------------------------------*/
5083 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005084 wdiEventData.pEventData = pwdiFlushAcReqParams;
5085 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5086 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 wdiEventData.pUserData = pUserData;
5088
5089 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5090
5091}/*WDI_FlushAcReq*/
5092
5093/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005094 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005095 wants to notify the lower mac on a BT AMP event. This is
5096 to inform BTC-SLM that some BT AMP event occurred. Upon
5097 the call of this API the WLAN DAL will pack and send a
5098 HAL BT AMP event request message to the lower RIVA
5099 sub-system if DAL is in state STARTED.
5100
5101 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005102 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005103
Jeff Johnsone7245742012-09-05 17:12:55 -07005104
5105 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005106 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005107
Jeff Johnson295189b2012-06-20 16:38:30 -07005108 wdiBtAmpEventRspCb: callback for passing back the
5109 response of the BT AMP event operation received from the
5110 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005111
Jeff Johnson295189b2012-06-20 16:38:30 -07005112 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005113 callback
5114
Jeff Johnson295189b2012-06-20 16:38:30 -07005115 @return Result of the function call
5116*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005117WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005118WDI_BtAmpEventReq
5119(
5120 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5121 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5122 void* pUserData
5123)
5124{
5125 WDI_EventInfoType wdiEventData;
5126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5127
5128 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005129 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005130 ------------------------------------------------------------------------*/
5131 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5132 {
5133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5134 "WDI API call before module is initialized - Fail request");
5135
Jeff Johnsone7245742012-09-05 17:12:55 -07005136 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005137 }
5138
5139 /*------------------------------------------------------------------------
5140 Fill in Event data and post to the Main FSM
5141 ------------------------------------------------------------------------*/
5142 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005143 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5144 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5145 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005146 wdiEventData.pUserData = pUserData;
5147
5148 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5149
5150}/*WDI_BtAmpEventReq*/
5151
Jeff Johnsone7245742012-09-05 17:12:55 -07005152#ifdef FEATURE_OEM_DATA_SUPPORT
5153/**
5154 @brief WDI_Start Oem Data Req will be called when the upper MAC
5155 wants to notify the lower mac on a oem data Req event.Upon
5156 the call of this API the WLAN DAL will pack and send a
5157 HAL OEM Data Req event request message to the lower RIVA
5158 sub-system if DAL is in state STARTED.
5159
5160 In state BUSY this request will be queued. Request won't
5161 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005162
5163
Jeff Johnsone7245742012-09-05 17:12:55 -07005164
5165 @param pwdiOemDataReqParams: the Oem Data Req as
5166 specified by the Device Interface
5167
5168 wdiStartOemDataRspCb: callback for passing back the
5169 response of the Oem Data Req received from the
5170 device
5171
5172 pUserData: user data will be passed back with the
5173 callback
5174
5175 @return Result of the function call
5176*/
5177WDI_Status
5178WDI_StartOemDataReq
5179(
5180 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5181 WDI_oemDataRspCb wdiOemDataRspCb,
5182 void* pUserData
5183)
5184{
5185 WDI_EventInfoType wdiEventData;
5186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5187
5188 /*------------------------------------------------------------------------
5189 Sanity Check
5190 ------------------------------------------------------------------------*/
5191 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5192 {
5193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5194 "WDI API call before module is initialized - Fail request");
5195
5196 return WDI_STATUS_E_NOT_ALLOWED;
5197 }
5198
5199 /*------------------------------------------------------------------------
5200 Fill in Event data and post to the Main FSM
5201 ------------------------------------------------------------------------*/
5202 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5203 wdiEventData.pEventData = pwdiOemDataReqParams;
5204 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5205 wdiEventData.pCBfnc = wdiOemDataRspCb;
5206 wdiEventData.pUserData = pUserData;
5207
5208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5209
5210
5211}
5212
5213#endif
5214
5215
5216/*========================================================================
5217
Jeff Johnson295189b2012-06-20 16:38:30 -07005218 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005219
Jeff Johnson295189b2012-06-20 16:38:30 -07005220==========================================================================*/
5221/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005222 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005223 the WLAN HW to change the current channel of operation.
5224 Upon the call of this API the WLAN DAL will pack and
5225 send a HAL Start request message to the lower RIVA
5226 sub-system if DAL is in state STARTED.
5227
5228 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005229 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005230
5231 WDI_Start must have been called.
5232
Jeff Johnsone7245742012-09-05 17:12:55 -07005233 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005234 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005235
Jeff Johnson295189b2012-06-20 16:38:30 -07005236 wdiSwitchChRspCb: callback for passing back the response
5237 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005238
Jeff Johnson295189b2012-06-20 16:38:30 -07005239 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005240 callback
5241
Jeff Johnson295189b2012-06-20 16:38:30 -07005242 @see WDI_Start
5243 @return Result of the function call
5244*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005245WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005246WDI_SwitchChReq
5247(
5248 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5249 WDI_SwitchChRspCb wdiSwitchChRspCb,
5250 void* pUserData
5251)
5252{
5253 WDI_EventInfoType wdiEventData;
5254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5255
5256 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005257 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005258 ------------------------------------------------------------------------*/
5259 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5260 {
5261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5262 "WDI API call before module is initialized - Fail request");
5263
Jeff Johnsone7245742012-09-05 17:12:55 -07005264 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005265 }
5266
5267 /*------------------------------------------------------------------------
5268 Fill in Event data and post to the Main FSM
5269 ------------------------------------------------------------------------*/
5270 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005271 wdiEventData.pEventData = pwdiSwitchChReqParams;
5272 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5273 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005274 wdiEventData.pUserData = pUserData;
5275
5276 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5277
5278}/*WDI_SwitchChReq*/
5279
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005280/**
5281 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5282 the WLAN HW to change the current channel of operation.
5283 Upon the call of this API the WLAN DAL will pack and
5284 send a HAL Start request message to the lower RIVA
5285 sub-system if DAL is in state STARTED.
5286 This request message also includes source of channel switch,
5287 like CSA,
5288
5289 In state BUSY this request will be queued. Request won't
5290 be allowed in any other state.
5291
5292 WDI_Start must have been called.
5293
5294 @param wdiSwitchChReqParams: the switch ch parameters as
5295 specified by the Device Interface
5296
5297 wdiSwitchChRspCb: callback for passing back the response
5298 of the switch ch operation received from the device
5299
5300 pUserData: user data will be passed back with the
5301 callback
5302
5303 @see WDI_Start
5304 @return Result of the function call
5305*/
5306WDI_Status
5307WDI_SwitchChReq_V1
5308(
5309 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5310 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5311 void* pUserData
5312)
5313{
5314 WDI_EventInfoType wdiEventData;
5315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5317 "WDI API call WDI_SwitchChReq_V1");
5318 /*------------------------------------------------------------------------
5319 Sanity Check
5320 ------------------------------------------------------------------------*/
5321 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5322 {
5323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5324 "WDI API call before module is initialized - Fail request");
5325
5326 return WDI_STATUS_E_NOT_ALLOWED;
5327 }
5328
5329 /*------------------------------------------------------------------------
5330 Fill in Event data and post to the Main FSM
5331 ------------------------------------------------------------------------*/
5332 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5333 wdiEventData.pEventData = pwdiSwitchChReqParams;
5334 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5335 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5336 wdiEventData.pUserData = pUserData;
5337
5338 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5339
5340}/*WDI_SwitchChReq_V1*/
5341
Jeff Johnson295189b2012-06-20 16:38:30 -07005342
5343/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005344 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 wishes to add or update a STA in HW. Upon the call of
5346 this API the WLAN DAL will pack and send a HAL Start
5347 message request message to the lower RIVA sub-system if
5348 DAL is in state STARTED.
5349
5350 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005351 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005352
5353 WDI_Start must have been called.
5354
Jeff Johnsone7245742012-09-05 17:12:55 -07005355 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005356 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005357
Jeff Johnson295189b2012-06-20 16:38:30 -07005358 wdiConfigSTARspCb: callback for passing back the
5359 response of the config STA operation received from the
5360 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005361
Jeff Johnson295189b2012-06-20 16:38:30 -07005362 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005363 callback
5364
Jeff Johnson295189b2012-06-20 16:38:30 -07005365 @see WDI_Start
5366 @return Result of the function call
5367*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005368WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005369WDI_ConfigSTAReq
5370(
5371 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5372 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5373 void* pUserData
5374)
5375{
5376 WDI_EventInfoType wdiEventData;
5377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5378
5379 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005380 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005381 ------------------------------------------------------------------------*/
5382 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5383 {
5384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5385 "WDI API call before module is initialized - Fail request");
5386
Jeff Johnsone7245742012-09-05 17:12:55 -07005387 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005388 }
5389
5390 /*------------------------------------------------------------------------
5391 Fill in Event data and post to the Main FSM
5392 ------------------------------------------------------------------------*/
5393 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005394 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5395 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5396 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005397 wdiEventData.pUserData = pUserData;
5398
5399 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5400
5401}/*WDI_ConfigSTAReq*/
5402
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005403 /**
5404 @brief WDI_UpdateChannelReq will be called when the upper MAC
5405 wants to update the channel list on change in country code.
5406
5407 In state BUSY this request will be queued. Request won't
5408 be allowed in any other state.
5409
5410 WDI_UpdateChannelReq must have been called.
5411
5412 @param wdiUpdateChannelReqParams: the updated channel parameters
5413 as specified by the Device Interface
5414
5415 wdiUpdateChannelRspCb: callback for passing back the
5416 response of the update channel operation received from
5417 the device
5418
5419 pUserData: user data will be passed back with the
5420 callback
5421
5422 @return Result of the function call
5423*/
5424WDI_Status
5425WDI_UpdateChannelReq
5426(
5427 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5428 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5429 void* pUserData
5430)
5431{
5432 WDI_EventInfoType wdiEventData = {{0}};
5433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5434
5435 /*------------------------------------------------------------------------
5436 Sanity Check
5437 ------------------------------------------------------------------------*/
5438 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5439 {
5440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5441 "WDI API call before module is initialized - Fail request");
5442
5443 return WDI_STATUS_E_NOT_ALLOWED;
5444 }
5445
5446 /*------------------------------------------------------------------------
5447 Fill in Event data and post to the Main FSM
5448 ------------------------------------------------------------------------*/
5449 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5450 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5451 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5452 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5453 wdiEventData.pUserData = pUserData;
5454
5455 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5456
5457}/*WDI_UpdateChannelReq*/
5458
Jeff Johnson295189b2012-06-20 16:38:30 -07005459/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005460 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005461 wants to change the state of an ongoing link. Upon the
5462 call of this API the WLAN DAL will pack and send a HAL
5463 Start message request message to the lower RIVA
5464 sub-system if DAL is in state STARTED.
5465
5466 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005467 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005468
5469 WDI_JoinStartReq must have been called.
5470
Jeff Johnsone7245742012-09-05 17:12:55 -07005471 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005472 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005473
Jeff Johnson295189b2012-06-20 16:38:30 -07005474 wdiSetLinkStateRspCb: callback for passing back the
5475 response of the set link state operation received from
5476 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005477
Jeff Johnson295189b2012-06-20 16:38:30 -07005478 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005479 callback
5480
Jeff Johnson295189b2012-06-20 16:38:30 -07005481 @see WDI_JoinStartReq
5482 @return Result of the function call
5483*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005484WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005485WDI_SetLinkStateReq
5486(
5487 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5488 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5489 void* pUserData
5490)
5491{
5492 WDI_EventInfoType wdiEventData;
5493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5494
5495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005496 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005497 ------------------------------------------------------------------------*/
5498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5499 {
5500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5501 "WDI API call before module is initialized - Fail request");
5502
Jeff Johnsone7245742012-09-05 17:12:55 -07005503 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 }
5505
5506 /*------------------------------------------------------------------------
5507 Fill in Event data and post to the Main FSM
5508 ------------------------------------------------------------------------*/
5509 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005510 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5511 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5512 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005513 wdiEventData.pUserData = pUserData;
5514
5515 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5516
5517}/*WDI_SetLinkStateReq*/
5518
5519
5520/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005521 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005522 to get statistics (MIB counters) from the device. Upon
5523 the call of this API the WLAN DAL will pack and send a
5524 HAL Start request message to the lower RIVA sub-system
5525 if DAL is in state STARTED.
5526
5527 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005528 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005529
5530 WDI_Start must have been called.
5531
Jeff Johnsone7245742012-09-05 17:12:55 -07005532 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005533 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005534
Jeff Johnson295189b2012-06-20 16:38:30 -07005535 wdiGetStatsRspCb: callback for passing back the response
5536 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005537
Jeff Johnson295189b2012-06-20 16:38:30 -07005538 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005539 callback
5540
Jeff Johnson295189b2012-06-20 16:38:30 -07005541 @see WDI_Start
5542 @return Result of the function call
5543*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005544WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005545WDI_GetStatsReq
5546(
5547 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5548 WDI_GetStatsRspCb wdiGetStatsRspCb,
5549 void* pUserData
5550)
5551{
5552 WDI_EventInfoType wdiEventData;
5553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5554
5555 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005556 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005557 ------------------------------------------------------------------------*/
5558 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5559 {
5560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5561 "WDI API call before module is initialized - Fail request");
5562
Jeff Johnsone7245742012-09-05 17:12:55 -07005563 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005564 }
5565
5566 /*------------------------------------------------------------------------
5567 Fill in Event data and post to the Main FSM
5568 ------------------------------------------------------------------------*/
5569 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005570 wdiEventData.pEventData = pwdiGetStatsReqParams;
5571 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5572 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005573 wdiEventData.pUserData = pUserData;
5574
5575 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5576
5577}/*WDI_GetStatsReq*/
5578
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005579#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005580/**
5581 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5582 to get roam rssi from the device. Upon
5583 the call of this API the WLAN DAL will pack and send a
5584 HAL Start request message to the lower RIVA sub-system
5585 if DAL is in state STARTED.
5586
5587 In state BUSY this request will be queued. Request won't
5588 be allowed in any other state.
5589
5590 WDI_Start must have been called.
5591
5592 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5593 specified by the Device Interface
5594
5595 wdiGetRoamRssiRspCb: callback for passing back the response
5596 of the get stats operation received from the device
5597
5598 pUserData: user data will be passed back with the
5599 callback
5600
5601 @see WDI_Start
5602 @return Result of the function call
5603*/
5604WDI_Status
5605WDI_GetRoamRssiReq
5606(
5607 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5608 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5609 void* pUserData
5610)
5611{
5612 WDI_EventInfoType wdiEventData;
5613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5614
5615 /*------------------------------------------------------------------------
5616 Sanity Check
5617 ------------------------------------------------------------------------*/
5618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5619 {
5620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5621 "WDI API call before module is initialized - Fail request");
5622
5623 return WDI_STATUS_E_NOT_ALLOWED;
5624 }
5625 /*------------------------------------------------------------------------
5626 Fill in Event data and post to the Main FSM
5627 ------------------------------------------------------------------------*/
5628 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5629 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5630 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5631 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5632 wdiEventData.pUserData = pUserData;
5633
5634 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5635
5636}/*WDI_GetRoamRssiReq*/
5637#endif
5638
Jeff Johnson295189b2012-06-20 16:38:30 -07005639
5640/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005641 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005642 it wishes to change the configuration of the WLAN
5643 Device. Upon the call of this API the WLAN DAL will pack
5644 and send a HAL Update CFG request message to the lower
5645 RIVA sub-system if DAL is in state STARTED.
5646
5647 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005648 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005649
5650 WDI_Start must have been called.
5651
Jeff Johnsone7245742012-09-05 17:12:55 -07005652 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005653 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005654
Jeff Johnson295189b2012-06-20 16:38:30 -07005655 wdiUpdateCfgsRspCb: callback for passing back the
5656 response of the update cfg operation received from the
5657 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005658
Jeff Johnson295189b2012-06-20 16:38:30 -07005659 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005660 callback
5661
Jeff Johnson295189b2012-06-20 16:38:30 -07005662 @see WDI_Start
5663 @return Result of the function call
5664*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005665WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005666WDI_UpdateCfgReq
5667(
5668 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5669 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5670 void* pUserData
5671)
5672{
5673 WDI_EventInfoType wdiEventData;
5674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5675
5676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 ------------------------------------------------------------------------*/
5679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5680 {
5681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5682 "WDI API call before module is initialized - Fail request");
5683
Jeff Johnsone7245742012-09-05 17:12:55 -07005684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 }
5686
5687 /*------------------------------------------------------------------------
5688 Fill in Event data and post to the Main FSM
5689 ------------------------------------------------------------------------*/
5690 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005691 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5692 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5693 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005694 wdiEventData.pUserData = pUserData;
5695
5696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5697
5698}/*WDI_UpdateCfgReq*/
5699
5700
5701
5702/**
5703 @brief WDI_AddBAReq will be called when the upper MAC has setup
5704 successfully a BA session and needs to notify the HW for
5705 the appropriate settings to take place. Upon the call of
5706 this API the WLAN DAL will pack and send a HAL Add BA
5707 request message to the lower RIVA sub-system if DAL is
5708 in state STARTED.
5709
5710 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005711 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005712
5713 WDI_PostAssocReq must have been called.
5714
5715 @param wdiAddBAReqParams: the add BA parameters as specified by
5716 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005717
Jeff Johnson295189b2012-06-20 16:38:30 -07005718 wdiAddBARspCb: callback for passing back the response of
5719 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005720
Jeff Johnson295189b2012-06-20 16:38:30 -07005721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005722 callback
5723
Jeff Johnson295189b2012-06-20 16:38:30 -07005724 @see WDI_PostAssocReq
5725 @return Result of the function call
5726*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005727WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005728WDI_AddBAReq
5729(
5730 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5731 WDI_AddBARspCb wdiAddBARspCb,
5732 void* pUserData
5733)
5734{
5735 WDI_EventInfoType wdiEventData;
5736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5737
5738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005740 ------------------------------------------------------------------------*/
5741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5742 {
5743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5744 "WDI API call before module is initialized - Fail request");
5745
Jeff Johnsone7245742012-09-05 17:12:55 -07005746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005747 }
5748
5749 /*------------------------------------------------------------------------
5750 Fill in Event data and post to the Main FSM
5751 ------------------------------------------------------------------------*/
5752 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005753 wdiEventData.pEventData = pwdiAddBAReqParams;
5754 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5755 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005756 wdiEventData.pUserData = pUserData;
5757
5758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5759
5760}/*WDI_AddBAReq*/
5761
5762
5763/**
5764 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5765 successfully a BA session and needs to notify the HW for
5766 the appropriate settings to take place. Upon the call of
5767 this API the WLAN DAL will pack and send a HAL Add BA
5768 request message to the lower RIVA sub-system if DAL is
5769 in state STARTED.
5770
5771 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005772 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005773
5774 WDI_PostAssocReq must have been called.
5775
5776 @param wdiAddBAReqParams: the add BA parameters as specified by
5777 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005778
Jeff Johnson295189b2012-06-20 16:38:30 -07005779 wdiAddBARspCb: callback for passing back the response of
5780 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005781
Jeff Johnson295189b2012-06-20 16:38:30 -07005782 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005783 callback
5784
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 @see WDI_PostAssocReq
5786 @return Result of the function call
5787*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005788WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005789WDI_TriggerBAReq
5790(
5791 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5792 WDI_TriggerBARspCb wdiTriggerBARspCb,
5793 void* pUserData
5794)
5795{
5796 WDI_EventInfoType wdiEventData;
5797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5798
5799 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005800 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005801 ------------------------------------------------------------------------*/
5802 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5803 {
5804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5805 "WDI API call before module is initialized - Fail request");
5806
Jeff Johnsone7245742012-09-05 17:12:55 -07005807 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005808 }
5809
5810 /*------------------------------------------------------------------------
5811 Fill in Event data and post to the Main FSM
5812 ------------------------------------------------------------------------*/
5813 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005814 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5815 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5816 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005817 wdiEventData.pUserData = pUserData;
5818
5819 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5820
5821}/*WDI_AddBAReq*/
5822
5823/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005824 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005825 wishes to update any of the Beacon parameters used by HW.
5826 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5827 message to the lower RIVA sub-system if DAL is in state
5828 STARTED.
5829
5830 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005831 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005832
5833 WDI_PostAssocReq must have been called.
5834
Jeff Johnsone7245742012-09-05 17:12:55 -07005835 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005836 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005837
Jeff Johnson295189b2012-06-20 16:38:30 -07005838 wdiUpdateBeaconParamsRspCb: callback for passing back the
5839 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005840
Jeff Johnson295189b2012-06-20 16:38:30 -07005841 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005842 callback
5843
Jeff Johnson295189b2012-06-20 16:38:30 -07005844 @see WDI_PostAssocReq
5845 @return Result of the function call
5846*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005847WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005848WDI_UpdateBeaconParamsReq
5849(
5850 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5851 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5852 void* pUserData
5853)
5854{
5855 WDI_EventInfoType wdiEventData;
5856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5857
5858 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005859 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005860 ------------------------------------------------------------------------*/
5861 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5862 {
5863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5864 "WDI API call before module is initialized - Fail request");
5865
Jeff Johnsone7245742012-09-05 17:12:55 -07005866 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005867 }
5868
5869 /*------------------------------------------------------------------------
5870 Fill in Event data and post to the Main FSM
5871 ------------------------------------------------------------------------*/
5872 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005873 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5874 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5875 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005876 wdiEventData.pUserData = pUserData;
5877
5878 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5879
5880}/*WDI_UpdateBeaconParamsReq*/
5881
5882/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005883 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005884 wishes to update the Beacon template used by HW.
5885 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5886 message to the lower RIVA sub-system if DAL is in state
5887 STARTED.
5888
5889 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005890 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005891
5892 WDI_PostAssocReq must have been called.
5893
Jeff Johnsone7245742012-09-05 17:12:55 -07005894 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005895 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005896
Jeff Johnson295189b2012-06-20 16:38:30 -07005897 wdiSendBeaconParamsRspCb: callback for passing back the
5898 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005899
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005901 callback
5902
Jeff Johnson295189b2012-06-20 16:38:30 -07005903 @see WDI_PostAssocReq
5904 @return Result of the function call
5905*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005906WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005907WDI_SendBeaconParamsReq
5908(
5909 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5910 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5911 void* pUserData
5912)
5913{
5914 WDI_EventInfoType wdiEventData;
5915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5916
5917 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005918 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005919 ------------------------------------------------------------------------*/
5920 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5921 {
5922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5923 "WDI API call before module is initialized - Fail request");
5924
Jeff Johnsone7245742012-09-05 17:12:55 -07005925 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005926 }
5927
5928 /*------------------------------------------------------------------------
5929 Fill in Event data and post to the Main FSM
5930 ------------------------------------------------------------------------*/
5931 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005932 wdiEventData.pEventData = pwdiSendBeaconParams;
5933 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5934 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005935 wdiEventData.pUserData = pUserData;
5936
5937 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5938
5939}/*WDI_SendBeaconParamsReq*/
5940
5941/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005942 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005943 upper MAC wants to update the probe response template to
5944 be transmitted as Soft AP
5945 Upon the call of this API the WLAN DAL will
5946 pack and send the probe rsp template message to the
5947 lower RIVA sub-system if DAL is in state STARTED.
5948
5949 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005950 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005951
5952
Jeff Johnsone7245742012-09-05 17:12:55 -07005953 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005954 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005955
Jeff Johnson295189b2012-06-20 16:38:30 -07005956 wdiSendBeaconParamsRspCb: callback for passing back the
5957 response of the Send Beacon Params operation received
5958 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005959
Jeff Johnson295189b2012-06-20 16:38:30 -07005960 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005961 callback
5962
Jeff Johnson295189b2012-06-20 16:38:30 -07005963 @see WDI_AddBAReq
5964 @return Result of the function call
5965*/
5966
Jeff Johnsone7245742012-09-05 17:12:55 -07005967WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005968WDI_UpdateProbeRspTemplateReq
5969(
5970 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5971 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5972 void* pUserData
5973)
5974{
5975 WDI_EventInfoType wdiEventData;
5976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5977
5978 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005979 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005980 ------------------------------------------------------------------------*/
5981 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5982 {
5983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5984 "WDI API call before module is initialized - Fail request");
5985
Jeff Johnsone7245742012-09-05 17:12:55 -07005986 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005987 }
5988
5989 /*------------------------------------------------------------------------
5990 Fill in Event data and post to the Main FSM
5991 ------------------------------------------------------------------------*/
5992 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005993 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5994 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5995 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005996 wdiEventData.pUserData = pUserData;
5997
5998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5999
6000}/*WDI_UpdateProbeRspTemplateReq*/
6001
6002/**
6003 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6004 to the NV memory.
6005
6006
6007 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6008 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006009
Jeff Johnson295189b2012-06-20 16:38:30 -07006010 wdiNvDownloadRspCb: callback for passing back the response of
6011 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006012
Jeff Johnson295189b2012-06-20 16:38:30 -07006013 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006014 callback
6015
Jeff Johnson295189b2012-06-20 16:38:30 -07006016 @see WDI_PostAssocReq
6017 @return Result of the function call
6018*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006019WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006020WDI_NvDownloadReq
6021(
6022 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6023 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6024 void* pUserData
6025)
6026{
6027 WDI_EventInfoType wdiEventData;
6028
6029 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006030 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006031 ------------------------------------------------------------------------*/
6032 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6033 {
6034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6035 "WDI API call before module is initialized - Fail request");
6036
Jeff Johnsone7245742012-09-05 17:12:55 -07006037 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006038 }
6039
6040 /*------------------------------------------------------------------------
6041 Fill in Event data and post to the Main FSM
6042 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006043 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6044 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6045 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6046 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006047 wdiEventData.pUserData = pUserData;
6048
6049 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6050
6051}/*WDI_NVDownloadReq*/
6052
Jeff Johnson295189b2012-06-20 16:38:30 -07006053/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006054 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006055 upper MAC wants to send Notice of Absence
6056 Upon the call of this API the WLAN DAL will
6057 pack and send the probe rsp template message to the
6058 lower RIVA sub-system if DAL is in state STARTED.
6059
6060 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006061 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006062
6063
Jeff Johnsone7245742012-09-05 17:12:55 -07006064 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006065 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006066
Jeff Johnson295189b2012-06-20 16:38:30 -07006067 wdiSendBeaconParamsRspCb: callback for passing back the
6068 response of the Send Beacon Params operation received
6069 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006070
Jeff Johnson295189b2012-06-20 16:38:30 -07006071 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006072 callback
6073
Jeff Johnson295189b2012-06-20 16:38:30 -07006074 @see WDI_AddBAReq
6075 @return Result of the function call
6076*/
6077WDI_Status
6078WDI_SetP2PGONOAReq
6079(
6080 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6081 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6082 void* pUserData
6083)
6084{
6085 WDI_EventInfoType wdiEventData;
6086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6087
6088 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006089 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006090 ------------------------------------------------------------------------*/
6091 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6092 {
6093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6094 "WDI API call before module is initialized - Fail request");
6095
Jeff Johnsone7245742012-09-05 17:12:55 -07006096 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006097 }
6098
6099 /*------------------------------------------------------------------------
6100 Fill in Event data and post to the Main FSM
6101 ------------------------------------------------------------------------*/
6102 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006103 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6104 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6105 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006106 wdiEventData.pUserData = pUserData;
6107
6108 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6109
6110}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006111
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306112#ifdef FEATURE_WLAN_TDLS
6113/**
6114 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6115 upper MAC wants to send TDLS Link Establish Request Parameters
6116 Upon the call of this API the WLAN DAL will
6117 pack and send the TDLS Link Establish Request message to the
6118 lower RIVA sub-system if DAL is in state STARTED.
6119
6120 In state BUSY this request will be queued. Request won't
6121 be allowed in any other state.
6122
6123
6124 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6125 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6126
6127 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6128 response of the TDLS Link Establish request received
6129 from the device
6130
6131 pUserData: user data will be passed back with the
6132 callback
6133
6134 @see
6135 @return Result of the function call
6136*/
6137WDI_Status
6138WDI_SetTDLSLinkEstablishReq
6139(
6140 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6141 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6142 void* pUserData
6143)
6144{
6145 WDI_EventInfoType wdiEventData;
6146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6147
6148 /*------------------------------------------------------------------------
6149 Sanity Check
6150 ------------------------------------------------------------------------*/
6151 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6152 {
6153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6154 "WDI API call before module is initialized - Fail request");
6155
6156 return WDI_STATUS_E_NOT_ALLOWED;
6157 }
6158
6159 /*------------------------------------------------------------------------
6160 Fill in Event data and post to the Main FSM
6161 ------------------------------------------------------------------------*/
6162 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6163 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6164 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6165 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6166 wdiEventData.pUserData = pUserData;
6167
6168 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6169
6170}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306171
6172//tdlsoffchan
6173/**
6174 @brief WDI_SetTDLSChanSwitchReq will be called when the
6175 upper MAC wants to send TDLS Chan Switch Request Parameters
6176 Upon the call of this API the WLAN DAL will
6177 pack and send the TDLS Link Establish Request message to the
6178 lower RIVA sub-system if DAL is in state STARTED.
6179
6180 In state BUSY this request will be queued. Request won't
6181 be allowed in any other state.
6182
6183
6184 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6185 for Link Establishment (Used for TDLS Off Channel ...)
6186
6187 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6188 response of the TDLS Chan Switch request received
6189 from the device
6190
6191 pUserData: user data will be passed back with the
6192 callback
6193
6194 @see
6195 @return Result of the function call
6196*/
6197WDI_Status
6198WDI_SetTDLSChanSwitchReq
6199(
6200 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6201 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6202 void* pUserData
6203)
6204{
6205 WDI_EventInfoType wdiEventData;
6206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6207
6208 /*------------------------------------------------------------------------
6209 Sanity Check
6210 ------------------------------------------------------------------------*/
6211 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6212 {
6213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6214 "WDI API call before module is initialized - Fail request");
6215
6216 return WDI_STATUS_E_NOT_ALLOWED;
6217 }
6218
6219 /*------------------------------------------------------------------------
6220 Fill in Event data and post to the Main FSM
6221 ------------------------------------------------------------------------*/
6222 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6223 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6224 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6225 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6226 wdiEventData.pUserData = pUserData;
6227
6228 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6229
6230}/*WDI_SetTDLSChanSwitchReq*/
6231
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306232#endif
6233
Jeff Johnson295189b2012-06-20 16:38:30 -07006234/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006235 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006236 UMAC wanted to add STA self while opening any new session
6237 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006238 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006239
6240
Jeff Johnsone7245742012-09-05 17:12:55 -07006241 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006242 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006243
Jeff Johnson295189b2012-06-20 16:38:30 -07006244 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006245 callback
6246
6247 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006248 @return Result of the function call
6249*/
6250WDI_Status
6251WDI_AddSTASelfReq
6252(
6253 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6254 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6255 void* pUserData
6256)
6257{
6258 WDI_EventInfoType wdiEventData;
6259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6260
6261 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006262 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006263 ------------------------------------------------------------------------*/
6264 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6265 {
6266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6267 "WDI API call before module is initialized - Fail request");
6268
Jeff Johnsone7245742012-09-05 17:12:55 -07006269 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006270 }
6271
6272 /*------------------------------------------------------------------------
6273 Fill in Event data and post to the Main FSM
6274 ------------------------------------------------------------------------*/
6275 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006276 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6277 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6278 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006279 wdiEventData.pUserData = pUserData;
6280
6281 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6282
6283}/*WDI_AddSTASelfReq*/
6284
6285
Jeff Johnsone7245742012-09-05 17:12:55 -07006286#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006287/**
6288 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6289 the device of a successful add TSpec negotiation. HW
6290 needs to receive the TSpec Info from the UMAC in order
6291 to configure properly the QoS data traffic. Upon the
6292 call of this API the WLAN DAL will pack and send a HAL
6293 Add TS request message to the lower RIVA sub-system if
6294 DAL is in state STARTED.
6295
6296 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006297 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006298
6299 WDI_PostAssocReq must have been called.
6300
6301 @param wdiAddTsReqParams: the add TS parameters as specified by
6302 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006303
Jeff Johnson295189b2012-06-20 16:38:30 -07006304 wdiAddTsRspCb: callback for passing back the response of
6305 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006306
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006308 callback
6309
Jeff Johnson295189b2012-06-20 16:38:30 -07006310 @see WDI_PostAssocReq
6311 @return Result of the function call
6312*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006313WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006314WDI_AggrAddTSReq
6315(
6316 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6317 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6318 void* pUserData
6319)
6320{
6321 WDI_EventInfoType wdiEventData;
6322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6323
6324 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006325 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006326 ------------------------------------------------------------------------*/
6327 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6328 {
6329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6330 "WDI API call before module is initialized - Fail request");
6331
Jeff Johnsone7245742012-09-05 17:12:55 -07006332 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006333 }
6334
6335 /*------------------------------------------------------------------------
6336 Fill in Event data and post to the Main FSM
6337 ------------------------------------------------------------------------*/
6338 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006339 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6340 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6341 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006342 wdiEventData.pUserData = pUserData;
6343
6344 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6345
6346}/*WDI_AggrAddTSReq*/
6347
6348#endif /* WLAN_FEATURE_VOWIFI_11R */
6349
Jeff Johnson295189b2012-06-20 16:38:30 -07006350/**
6351 @brief WDI_FTMCommandReq
6352 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006353
6354 @param ftmCommandReq: FTM Command Body
6355 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006356 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006357
Jeff Johnson295189b2012-06-20 16:38:30 -07006358 @see
6359 @return Result of the function call
6360*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006361WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006362WDI_FTMCommandReq
6363(
6364 WDI_FTMCommandReqType *ftmCommandReq,
6365 WDI_FTMCommandRspCb ftmCommandRspCb,
6366 void *pUserData
6367)
6368{
6369 WDI_EventInfoType wdiEventData;
6370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6371
6372 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006373 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006374 ------------------------------------------------------------------------*/
6375 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6376 {
6377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6378 "WDI API call before module is initialized - Fail request");
6379
Jeff Johnsone7245742012-09-05 17:12:55 -07006380 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006381 }
6382
6383 /*------------------------------------------------------------------------
6384 Fill in Event data and post to the Main FSM
6385 ------------------------------------------------------------------------*/
6386 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6387 wdiEventData.pEventData = (void *)ftmCommandReq;
6388 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6389 wdiEventData.pCBfnc = ftmCommandRspCb;
6390 wdiEventData.pUserData = pUserData;
6391
6392 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6393}
Jeff Johnson295189b2012-06-20 16:38:30 -07006394/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006395 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006396
6397 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006398 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006399
6400
6401 @param pwdiResumeReqParams: as specified by
6402 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006403
Jeff Johnson295189b2012-06-20 16:38:30 -07006404 wdiResumeReqRspCb: callback for passing back the response of
6405 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006406
Jeff Johnson295189b2012-06-20 16:38:30 -07006407 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006408 callback
6409
6410 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006411 @return Result of the function call
6412*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006413WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006414WDI_HostResumeReq
6415(
6416 WDI_ResumeParamsType* pwdiResumeReqParams,
6417 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6418 void* pUserData
6419)
6420{
6421 WDI_EventInfoType wdiEventData;
6422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6423
6424 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006425 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006426 ------------------------------------------------------------------------*/
6427 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6428 {
6429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6430 "WDI API call before module is initialized - Fail request");
6431
Jeff Johnsone7245742012-09-05 17:12:55 -07006432 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006433 }
6434
6435 /*------------------------------------------------------------------------
6436 Fill in Event data and post to the Main FSM
6437 ------------------------------------------------------------------------*/
6438 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006439 wdiEventData.pEventData = pwdiResumeReqParams;
6440 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6441 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006442 wdiEventData.pUserData = pUserData;
6443
6444 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6445
6446}/*WDI_HostResumeReq*/
6447
6448/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006449 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006450
6451 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006452 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006453
6454
6455 @param pwdiDelStaSelfReqParams: as specified by
6456 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006457
Jeff Johnson295189b2012-06-20 16:38:30 -07006458 wdiDelStaSelfRspCb: callback for passing back the response of
6459 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006460
Jeff Johnson295189b2012-06-20 16:38:30 -07006461 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006462 callback
6463
Jeff Johnson295189b2012-06-20 16:38:30 -07006464 @see WDI_PostAssocReq
6465 @return Result of the function call
6466*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006467WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006468WDI_DelSTASelfReq
6469(
6470 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6471 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6472 void* pUserData
6473)
6474{
6475 WDI_EventInfoType wdiEventData;
6476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6477
6478 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006479 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006480 ------------------------------------------------------------------------*/
6481 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6482 {
6483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6484 "WDI API call before module is initialized - Fail request");
6485
Jeff Johnsone7245742012-09-05 17:12:55 -07006486 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006487 }
6488
6489 /*------------------------------------------------------------------------
6490 Fill in Event data and post to the Main FSM
6491 ------------------------------------------------------------------------*/
6492 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006493 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6494 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6495 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006496 wdiEventData.pUserData = pUserData;
6497
6498 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6499
6500}/*WDI_AggrAddTSReq*/
6501
6502/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006503 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6504 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006505 Upon the call of this API the WLAN DAL will pack
6506 and send a HAL Set Tx Per Tracking request message to the
6507 lower RIVA sub-system if DAL is in state STARTED.
6508
6509 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006510 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006511
Jeff Johnsone7245742012-09-05 17:12:55 -07006512 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006513 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006514
Jeff Johnson295189b2012-06-20 16:38:30 -07006515 pwdiSetTxPerTrackingRspCb: callback for passing back the
6516 response of the set Tx PER Tracking configurations operation received
6517 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006518
Jeff Johnson295189b2012-06-20 16:38:30 -07006519 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006520 callback
6521
Jeff Johnson295189b2012-06-20 16:38:30 -07006522 @return Result of the function call
6523*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006524WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006525WDI_SetTxPerTrackingReq
6526(
6527 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6528 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6529 void* pUserData
6530)
6531{
6532 WDI_EventInfoType wdiEventData;
6533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6534
6535 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006536 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006537 ------------------------------------------------------------------------*/
6538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6539 {
6540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6541 "WDI API call before module is initialized - Fail request");
6542
Jeff Johnsone7245742012-09-05 17:12:55 -07006543 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006544 }
6545
6546 /*------------------------------------------------------------------------
6547 Fill in Event data and post to the Main FSM
6548 ------------------------------------------------------------------------*/
6549 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006550 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006551 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006552 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006553 wdiEventData.pUserData = pUserData;
6554
6555 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6556
6557}/*WDI_SetTxPerTrackingReq*/
6558
6559/**
6560 @brief WDI_SetTmLevelReq
6561 If HW Thermal condition changed, driver should react based on new
6562 HW thermal condition.
6563
6564 @param pwdiSetTmLevelReq: New thermal condition information
6565
6566 pwdiSetTmLevelRspCb: callback
6567
6568 usrData: user data will be passed back with the
6569 callback
6570
6571 @return Result of the function call
6572*/
6573WDI_Status
6574WDI_SetTmLevelReq
6575(
6576 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6577 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6578 void *usrData
6579)
6580{
6581 WDI_EventInfoType wdiEventData;
6582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6583
6584 /*------------------------------------------------------------------------
6585 Sanity Check
6586 ------------------------------------------------------------------------*/
6587 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6588 {
6589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6590 "WDI API call before module is initialized - Fail request");
6591
6592 return WDI_STATUS_E_NOT_ALLOWED;
6593 }
6594
6595 /*------------------------------------------------------------------------
6596 Fill in Event data and post to the Main FSM
6597 ------------------------------------------------------------------------*/
6598 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6599 wdiEventData.pEventData = pwdiSetTmLevelReq;
6600 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6601 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6602 wdiEventData.pUserData = usrData;
6603
6604 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6605}
6606
6607/**
6608 @brief WDI_HostSuspendInd
6609
6610 Suspend Indication from the upper layer will be sent
6611 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006612
Jeff Johnson295189b2012-06-20 16:38:30 -07006613 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006614
6615 @see
6616
Jeff Johnson295189b2012-06-20 16:38:30 -07006617 @return Status of the request
6618*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006619WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006620WDI_HostSuspendInd
6621(
6622 WDI_SuspendParamsType* pwdiSuspendIndParams
6623)
6624{
6625
6626 WDI_EventInfoType wdiEventData;
6627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6628
6629 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006630 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006631 ------------------------------------------------------------------------*/
6632 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6633 {
6634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6635 "WDI API call before module is initialized - Fail request");
6636
Jeff Johnsone7245742012-09-05 17:12:55 -07006637 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006638 }
6639
6640 /*------------------------------------------------------------------------
6641 Fill in Event data and post to the Main FSM
6642 ------------------------------------------------------------------------*/
6643 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006644 wdiEventData.pEventData = pwdiSuspendIndParams;
6645 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6646 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006647 wdiEventData.pUserData = NULL;
6648
6649 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6650
6651}/*WDI_HostSuspendInd*/
6652
6653/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006654 @brief WDI_TrafficStatsInd
6655 Traffic Stats from the upper layer will be sent
6656 down to HAL
6657
6658 @param WDI_TrafficStatsIndType
6659
6660 @see
6661
6662 @return Status of the request
6663*/
6664WDI_Status
6665WDI_TrafficStatsInd
6666(
6667 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6668)
6669{
6670
6671 WDI_EventInfoType wdiEventData;
6672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6673
6674 /*------------------------------------------------------------------------
6675 Sanity Check
6676 ------------------------------------------------------------------------*/
6677 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6678 {
6679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6680 "WDI API call before module is initialized - Fail request");
6681
6682 return WDI_STATUS_E_NOT_ALLOWED;
6683 }
6684
6685 /*------------------------------------------------------------------------
6686 Fill in Event data and post to the Main FSM
6687 ------------------------------------------------------------------------*/
6688 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6689 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6690 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6691 wdiEventData.pCBfnc = NULL;
6692 wdiEventData.pUserData = NULL;
6693
6694 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6695
6696}/*WDI_TrafficStatsInd*/
6697
Chet Lanctot186b5732013-03-18 10:26:30 -07006698#ifdef WLAN_FEATURE_11W
6699/**
6700 @brief WDI_ExcludeUnencryptedInd
6701 Register with HAL to receive/drop unencrypted frames
6702
6703 @param WDI_ExcludeUnencryptIndType
6704
6705 @see
6706
6707 @return Status of the request
6708*/
6709WDI_Status
6710WDI_ExcludeUnencryptedInd
6711(
6712 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6713)
6714{
6715
6716 WDI_EventInfoType wdiEventData;
6717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6718
6719 /*------------------------------------------------------------------------
6720 Sanity Check
6721 ------------------------------------------------------------------------*/
6722 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6723 {
6724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6725 "WDI API call before module is initialized - Fail request");
6726
6727 return WDI_STATUS_E_NOT_ALLOWED;
6728 }
6729
6730 /*------------------------------------------------------------------------
6731 Fill in Event data and post to the Main FSM
6732 ------------------------------------------------------------------------*/
6733 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6734 wdiEventData.pEventData = pWdiExcUnencParams;
6735 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6736 wdiEventData.pCBfnc = NULL;
6737 wdiEventData.pUserData = NULL;
6738
6739 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6740
6741}/*WDI_TrafficStatsInd*/
6742#endif
6743
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006744/**
Yue Mab9c86f42013-08-14 15:59:08 -07006745 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6746
6747 @param addPeriodicTxPtrnParams: Add Pattern parameters
6748
6749 @see
6750
6751 @return Status of the request
6752*/
6753WDI_Status
6754WDI_AddPeriodicTxPtrnInd
6755(
6756 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6757)
6758{
6759 WDI_EventInfoType wdiEventData;
6760
6761 /*-------------------------------------------------------------------------
6762 Sanity Check
6763 ------------------------------------------------------------------------*/
6764 if (eWLAN_PAL_FALSE == gWDIInitialized)
6765 {
6766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6767 "WDI API call before module is initialized - Fail request!");
6768
6769 return WDI_STATUS_E_NOT_ALLOWED;
6770 }
6771
6772 /*-------------------------------------------------------------------------
6773 Fill in Event data and post to the Main FSM
6774 ------------------------------------------------------------------------*/
6775 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6776 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6777 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6778 wdiEventData.pCBfnc = NULL;
6779 wdiEventData.pUserData = NULL;
6780
6781 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6782}
6783
6784/**
6785 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6786
6787 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6788
6789 @see
6790
6791 @return Status of the request
6792*/
6793WDI_Status
6794WDI_DelPeriodicTxPtrnInd
6795(
6796 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6797)
6798{
6799 WDI_EventInfoType wdiEventData;
6800
6801 /*-------------------------------------------------------------------------
6802 Sanity Check
6803 ------------------------------------------------------------------------*/
6804 if (eWLAN_PAL_FALSE == gWDIInitialized)
6805 {
6806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6807 "WDI API call before module is initialized - Fail request!");
6808
6809 return WDI_STATUS_E_NOT_ALLOWED;
6810 }
6811
6812 /*-------------------------------------------------------------------------
6813 Fill in Event data and post to the Main FSM
6814 ------------------------------------------------------------------------*/
6815 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6816 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6817 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6818 wdiEventData.pCBfnc = NULL;
6819 wdiEventData.pUserData = NULL;
6820
6821 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6822}
6823
6824/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006825 @brief WDI_HALDumpCmdReq
6826 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006827
6828 @param halDumpCmdReqParams: Hal Dump Command Body
6829 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006830 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006831
Jeff Johnson295189b2012-06-20 16:38:30 -07006832 @see
6833 @return Result of the function call
6834*/
6835WDI_Status WDI_HALDumpCmdReq
6836(
6837 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6838 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6839 void *pUserData
6840)
6841{
6842 WDI_EventInfoType wdiEventData;
6843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6844
6845 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006846 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006847 ------------------------------------------------------------------------*/
6848 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6849 {
6850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6851 "WDI API call before module is initialized - Fail request");
6852
Jeff Johnsone7245742012-09-05 17:12:55 -07006853 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006854 }
6855
6856 /*------------------------------------------------------------------------
6857 Fill in Event data and post to the Main FSM
6858 ------------------------------------------------------------------------*/
6859 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6860 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6861 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6862 wdiEventData.pCBfnc = halDumpCmdRspCb;
6863 wdiEventData.pUserData = pUserData;
6864
6865 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6866}
6867
Jeff Johnsone7245742012-09-05 17:12:55 -07006868/*============================================================================
6869
Jeff Johnson295189b2012-06-20 16:38:30 -07006870 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006871
Jeff Johnson295189b2012-06-20 16:38:30 -07006872 ============================================================================*/
6873
6874/**
6875 @brief Main FSM Start function for all states except BUSY
6876
Jeff Johnsone7245742012-09-05 17:12:55 -07006877
6878 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 wdiEV: event posted to the main DAL FSM
6880 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006881 structure
6882
Jeff Johnson295189b2012-06-20 16:38:30 -07006883 @see
6884 @return Result of the function call
6885*/
6886WDI_Status
6887WDI_PostMainEvent
6888(
Jeff Johnsone7245742012-09-05 17:12:55 -07006889 WDI_ControlBlockType* pWDICtx,
6890 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006891 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006892)
6893{
Jeff Johnsone7245742012-09-05 17:12:55 -07006894 WDI_Status wdiStatus;
6895 WDI_MainFuncType pfnWDIMainEvHdlr;
6896 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05306897 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6899
6900 /*-------------------------------------------------------------------------
6901 Sanity check
6902 -------------------------------------------------------------------------*/
6903 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6904 ( wdiEV >= WDI_MAX_EVENT ))
6905 {
6906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6907 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6908 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006909 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006910 }
6911
6912 /*Access to the global state must be locked */
6913 wpalMutexAcquire(&pWDICtx->wptMutex);
6914
6915 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006916 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006917
6918 wdiOldState = pWDICtx->uGlobalState;
6919
6920 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006921 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6922 response comes from CCPU for the request sent by host:
6923 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 -07006924 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 -07006925 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006926 CCPU:
6927 don't change the state */
6928 if ( WDI_RESPONSE_EVENT != wdiEV)
6929 {
6930 /*Transition to BUSY State - the request is now being processed by the FSM,
6931 if the request fails we shall transition back to the old state, if not
6932 the request will manage its own state transition*/
6933 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6934 }
6935 /* If the state function associated with the EV is NULL it means that this
6936 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006937 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006938 {
6939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006940 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006941 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006942 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006943 }
6944 else
6945 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05306946 if (!(failCnt & 0xF))
6947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006948 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006949 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05306950 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07006951 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006952 }
6953
6954 /* If a request handles itself well it will end up in a success or in a
6955 pending
6956 Success - means that the request was processed and the proper state
6957 transition already occurred or will occur when the resp is received
6958 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006959
Jeff Johnson295189b2012-06-20 16:38:30 -07006960 Pending - means the request could not be processed at this moment in time
6961 because the FSM was already busy so no state transition or dequeueing
6962 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006963
Jeff Johnson295189b2012-06-20 16:38:30 -07006964 Success for synchronous case means that the transition may occur and
6965 processing of pending requests may continue - so it should go through
6966 and restores the state and continue processing queued requests*/
6967 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6968 ( WDI_STATUS_PENDING != wdiStatus ))
6969 {
6970 if ( WDI_RESPONSE_EVENT != wdiEV)
6971 {
6972 /*The request has failed or could not be processed - transition back to
6973 the old state - check to see if anything was queued and try to execute
6974 The dequeue logic should post a message to a thread and return - no
6975 actual processing can occur */
6976 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6977 }
6978 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006979
Jeff Johnson295189b2012-06-20 16:38:30 -07006980 }
6981
6982 /* we have completed processing the event */
6983 wpalMutexRelease(&pWDICtx->wptMutex);
6984
Jeff Johnsone7245742012-09-05 17:12:55 -07006985 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006986
6987}/*WDI_PostMainEvent*/
6988
6989
6990/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006991 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006992--------------------------------------------------------------------------*/
6993/**
6994 @brief Main FSM Start function for all states except BUSY
6995
Jeff Johnsone7245742012-09-05 17:12:55 -07006996
6997 @param pWDICtx: pointer to the WLAN DAL context
6998 pEventData: pointer to the event information structure
6999
Jeff Johnson295189b2012-06-20 16:38:30 -07007000 @see
7001 @return Result of the function call
7002*/
7003WDI_Status
7004WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007005(
Jeff Johnson295189b2012-06-20 16:38:30 -07007006 WDI_ControlBlockType* pWDICtx,
7007 WDI_EventInfoType* pEventData
7008)
7009{
7010
7011 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007012 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007013 ----------------------------------------------------------------------*/
7014 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7015 {
7016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007017 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007018 pWDICtx, pEventData);
7019 return WDI_STATUS_E_FAILURE;
7020 }
7021
7022 wpalMutexAcquire(&pWDICtx->wptMutex);
7023
7024 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007025 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007026 ----------------------------------------------------------------------*/
7027 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7028 {
7029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7030 "Control Transport not yet Open - queueing the request");
7031
7032 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007033 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007034
7035 wpalMutexRelease(&pWDICtx->wptMutex);
7036 return WDI_STATUS_PENDING;
7037 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007038
Jeff Johnson295189b2012-06-20 16:38:30 -07007039 wpalMutexRelease(&pWDICtx->wptMutex);
7040
7041 /*Return Success*/
7042 return WDI_ProcessRequest( pWDICtx, pEventData );
7043
7044}/*WDI_MainStart*/
7045
7046/**
7047 @brief Main FSM Response function for state INIT
7048
Jeff Johnsone7245742012-09-05 17:12:55 -07007049
7050 @param pWDICtx: pointer to the WLAN DAL context
7051 pEventData: pointer to the event information structure
7052
Jeff Johnson295189b2012-06-20 16:38:30 -07007053 @see
7054 @return Result of the function call
7055*/
7056WDI_Status
7057WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007058(
Jeff Johnson295189b2012-06-20 16:38:30 -07007059 WDI_ControlBlockType* pWDICtx,
7060 WDI_EventInfoType* pEventData
7061)
7062{
7063 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007064 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007065 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007066 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007067
7068 /*Return Success*/
7069 return WDI_STATUS_E_NOT_ALLOWED;
7070}/* WDI_MainRspInit */
7071
7072/**
7073 @brief Main FSM Close function for all states except BUSY
7074
Jeff Johnsone7245742012-09-05 17:12:55 -07007075
7076 @param pWDICtx: pointer to the WLAN DAL context
7077 pEventData: pointer to the event information structure
7078
Jeff Johnson295189b2012-06-20 16:38:30 -07007079 @see
7080 @return Result of the function call
7081*/
7082WDI_Status
7083WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007084(
Jeff Johnson295189b2012-06-20 16:38:30 -07007085 WDI_ControlBlockType* pWDICtx,
7086 WDI_EventInfoType* pEventData
7087)
7088{
7089
7090 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007091 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007092 ----------------------------------------------------------------------*/
7093 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7094 {
7095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007096 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 pWDICtx, pEventData);
7098 return WDI_STATUS_E_FAILURE;
7099 }
7100
7101 /*Return Success*/
7102 return WDI_ProcessRequest( pWDICtx, pEventData );
7103
7104}/*WDI_MainClose*/
7105/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007106 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007107--------------------------------------------------------------------------*/
7108/**
7109 @brief Main FSM Start function for state STARTED
7110
Jeff Johnsone7245742012-09-05 17:12:55 -07007111
7112 @param pWDICtx: pointer to the WLAN DAL context
7113 pEventData: pointer to the event information structure
7114
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 @see
7116 @return Result of the function call
7117*/
7118WDI_Status
7119WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007120(
Jeff Johnson295189b2012-06-20 16:38:30 -07007121 WDI_ControlBlockType* pWDICtx,
7122 WDI_EventInfoType* pEventData
7123)
7124{
7125 WDI_StartRspCb wdiStartRspCb = NULL;
7126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7127
7128 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007129 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007130 ----------------------------------------------------------------------*/
7131 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7132 {
7133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007134 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007135 pWDICtx, pEventData);
7136 return WDI_STATUS_E_FAILURE;
7137 }
7138
7139 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007140 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007141 ----------------------------------------------------------------------*/
7142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007143 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007144
7145 wpalMutexAcquire(&pWDICtx->wptMutex);
7146
7147 /*Transition back to started because the post function transitioned us to
7148 busy*/
7149 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7150
7151 /*Check to see if any request is pending*/
7152 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007153
Jeff Johnson295189b2012-06-20 16:38:30 -07007154 wpalMutexRelease(&pWDICtx->wptMutex);
7155
7156 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007157 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7158
Jeff Johnson295189b2012-06-20 16:38:30 -07007159 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307160 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007161
7162 /*Return Success*/
7163 return WDI_STATUS_SUCCESS;
7164
7165}/*WDI_MainStartStarted*/
7166
7167/**
7168 @brief Main FSM Stop function for state STARTED
7169
Jeff Johnsone7245742012-09-05 17:12:55 -07007170
7171 @param pWDICtx: pointer to the WLAN DAL context
7172 pEventData: pointer to the event information structure
7173
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 @see
7175 @return Result of the function call
7176*/
7177WDI_Status
7178WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007179(
Jeff Johnson295189b2012-06-20 16:38:30 -07007180 WDI_ControlBlockType* pWDICtx,
7181 WDI_EventInfoType* pEventData
7182)
7183{
7184 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007185 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007186 ----------------------------------------------------------------------*/
7187 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7188 {
7189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007190 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007191 pWDICtx, pEventData);
7192 return WDI_STATUS_E_FAILURE;
7193 }
7194
7195 /*State at this point is BUSY - because we enter this state before posting
7196 an event to the FSM in order to prevent potential race conditions*/
7197
7198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7199 "Processing stop request in FSM");
7200
7201 /*Return Success*/
7202 return WDI_ProcessRequest( pWDICtx, pEventData );
7203
7204}/*WDI_MainStopStarted*/
7205/**
7206 @brief Main FSM Request function for state started
7207
Jeff Johnsone7245742012-09-05 17:12:55 -07007208
7209 @param pWDICtx: pointer to the WLAN DAL context
7210 pEventData: pointer to the event information structure
7211
Jeff Johnson295189b2012-06-20 16:38:30 -07007212 @see
7213 @return Result of the function call
7214*/
7215WDI_Status
7216WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007217(
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 WDI_ControlBlockType* pWDICtx,
7219 WDI_EventInfoType* pEventData
7220)
7221{
7222
7223 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007224 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007225 ----------------------------------------------------------------------*/
7226 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7227 {
7228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007229 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007230 pWDICtx, pEventData);
7231 return WDI_STATUS_E_FAILURE;
7232 }
7233
7234 /*State at this point is BUSY - because we enter this state before posting
7235 an event to the FSM in order to prevent potential race conditions*/
7236
7237 /*Return Success*/
7238 return WDI_ProcessRequest( pWDICtx, pEventData );
7239
7240}/*WDI_MainReqStarted*/
7241
7242/**
7243 @brief Main FSM Response function for all states except INIT
7244
Jeff Johnsone7245742012-09-05 17:12:55 -07007245
7246 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007247 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007248
Jeff Johnson295189b2012-06-20 16:38:30 -07007249 @see
7250 @return Result of the function call
7251*/
7252WDI_Status
7253WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007254(
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 WDI_ControlBlockType* pWDICtx,
7256 WDI_EventInfoType* pEventData
7257)
7258{
Jeff Johnsone7245742012-09-05 17:12:55 -07007259 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007260 wpt_boolean expectedResponse;
7261
7262 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007263 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007264 ----------------------------------------------------------------------*/
7265 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7266 {
7267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007268 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007269 pWDICtx, pEventData);
7270 return WDI_STATUS_E_FAILURE;
7271 }
7272
7273 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7274 {
7275 /* we received an expected response */
7276 expectedResponse = eWLAN_PAL_TRUE;
7277
7278 /*We expect that we will transition to started after this processing*/
7279 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7280
7281 /* we are no longer expecting a response */
7282 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7283 }
7284 else
7285 {
7286 /* we received an indication or unexpected response */
7287 expectedResponse = eWLAN_PAL_FALSE;
7288 /* for indications no need to update state from what it is right
7289 now, unless it explicitly does it in the indication handler (say
7290 for device failure ind) */
7291 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7292 }
7293
7294 /*Process the response and indication */
7295 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7296
7297 /*Lock the CB as we are about to do a state transition*/
7298 wpalMutexAcquire(&pWDICtx->wptMutex);
7299
7300 /*Transition to the expected state after the response processing
7301 - this should always be started state with the following exceptions:
7302 1. processing of a failed start response
7303 2. device failure detected while processing response
7304 3. stop response received*/
7305 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007306
Jeff Johnson295189b2012-06-20 16:38:30 -07007307 /*Dequeue request that may have been queued while we were waiting for the
7308 response */
7309 if ( expectedResponse )
7310 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007311 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007312 }
7313
7314 wpalMutexRelease(&pWDICtx->wptMutex);
7315
7316 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007317 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007318
7319}/*WDI_MainRsp*/
7320
7321/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007322 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007323--------------------------------------------------------------------------*/
7324/**
7325 @brief Main FSM Stop function for state STOPPED
7326
Jeff Johnsone7245742012-09-05 17:12:55 -07007327
7328 @param pWDICtx: pointer to the WLAN DAL context
7329 pEventData: pointer to the event information structure
7330
Jeff Johnson295189b2012-06-20 16:38:30 -07007331 @see
7332 @return Result of the function call
7333*/
7334WDI_Status
7335WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007336(
Jeff Johnson295189b2012-06-20 16:38:30 -07007337 WDI_ControlBlockType* pWDICtx,
7338 WDI_EventInfoType* pEventData
7339)
7340{
7341 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007342 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007343 ----------------------------------------------------------------------*/
7344 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7345 {
7346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007347 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 pWDICtx, pEventData);
7349 return WDI_STATUS_E_FAILURE;
7350 }
7351
7352 /*We should normally not get a STOP request if we are already stopped
7353 since we should normally be stopped by the UMAC. However in some
7354 error situations we put ourselves in the stopped state without the
7355 UMAC knowing, so when we get a STOP request in this state we still
7356 process it since we need to clean up the underlying state */
7357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7358 "Processing stop request while stopped in FSM");
7359
7360 /*Return Success*/
7361 return WDI_ProcessRequest( pWDICtx, pEventData );
7362
7363}/*WDI_MainStopStopped*/
7364
7365/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007366 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007367--------------------------------------------------------------------------*/
7368/**
7369 @brief Main FSM Start function for state BUSY
7370
Jeff Johnsone7245742012-09-05 17:12:55 -07007371
7372 @param pWDICtx: pointer to the WLAN DAL context
7373 pEventData: pointer to the event information structure
7374
Jeff Johnson295189b2012-06-20 16:38:30 -07007375 @see
7376 @return Result of the function call
7377*/
7378WDI_Status
7379WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007380(
Jeff Johnson295189b2012-06-20 16:38:30 -07007381 WDI_ControlBlockType* pWDICtx,
7382 WDI_EventInfoType* pEventData
7383)
7384{
7385 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007386 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007387 ----------------------------------------------------------------------*/
7388 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7389 {
7390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007391 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007392 pWDICtx, pEventData);
7393 return WDI_STATUS_E_FAILURE;
7394 }
7395
7396 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007397 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007398 ----------------------------------------------------------------------*/
7399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7400 "WDI Busy state - queue start request");
7401
7402 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007403 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007404
7405 /*Return Success*/
7406 return WDI_STATUS_PENDING;
7407}/*WDI_MainStartBusy*/
7408
7409/**
7410 @brief Main FSM Stop function for state BUSY
7411
Jeff Johnsone7245742012-09-05 17:12:55 -07007412
7413 @param pWDICtx: pointer to the WLAN DAL context
7414 pEventData: pointer to the event information structure
7415
Jeff Johnson295189b2012-06-20 16:38:30 -07007416 @see
7417 @return Result of the function call
7418*/
7419WDI_Status
7420WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007421(
Jeff Johnson295189b2012-06-20 16:38:30 -07007422 WDI_ControlBlockType* pWDICtx,
7423 WDI_EventInfoType* pEventData
7424)
7425{
7426 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 ----------------------------------------------------------------------*/
7429 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7430 {
7431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007432 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007433 pWDICtx, pEventData);
7434 return WDI_STATUS_E_FAILURE;
7435 }
7436
7437 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007438 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007439 ----------------------------------------------------------------------*/
7440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7441 "WDI Busy state - queue stop request");
7442
Jeff Johnsone7245742012-09-05 17:12:55 -07007443 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007444 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007445
Jeff Johnson295189b2012-06-20 16:38:30 -07007446}/*WDI_MainStopBusy*/
7447
7448/**
7449 @brief Main FSM Request function for state BUSY
7450
Jeff Johnsone7245742012-09-05 17:12:55 -07007451
7452 @param pWDICtx: pointer to the WLAN DAL context
7453 pEventData: pointer to the event information structure
7454
Jeff Johnson295189b2012-06-20 16:38:30 -07007455 @see
7456 @return Result of the function call
7457*/
7458WDI_Status
7459WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007460(
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 WDI_ControlBlockType* pWDICtx,
7462 WDI_EventInfoType* pEventData
7463)
7464{
7465 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007466 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007467 ----------------------------------------------------------------------*/
7468 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7469 {
7470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007471 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 pWDICtx, pEventData);
7473 return WDI_STATUS_E_FAILURE;
7474 }
7475
7476 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 ----------------------------------------------------------------------*/
7479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7480 "WDI Busy state - queue request %d because waiting for response %d",
7481 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7482
Jeff Johnsone7245742012-09-05 17:12:55 -07007483 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007484 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007485
Jeff Johnson295189b2012-06-20 16:38:30 -07007486}/*WDI_MainReqBusy*/
7487/**
7488 @brief Main FSM Close function for state BUSY
7489
Jeff Johnsone7245742012-09-05 17:12:55 -07007490
7491 @param pWDICtx: pointer to the WLAN DAL context
7492 pEventData: pointer to the event information structure
7493
Jeff Johnson295189b2012-06-20 16:38:30 -07007494 @see
7495 @return Result of the function call
7496*/
7497WDI_Status
7498WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007499(
Jeff Johnson295189b2012-06-20 16:38:30 -07007500 WDI_ControlBlockType* pWDICtx,
7501 WDI_EventInfoType* pEventData
7502)
7503{
7504 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007505 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007506 ----------------------------------------------------------------------*/
7507 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7508 {
7509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007510 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 pWDICtx, pEventData);
7512 return WDI_STATUS_E_FAILURE;
7513 }
7514
7515 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007516 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 ----------------------------------------------------------------------*/
7518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7519 "WDI Busy state - queue close request");
7520
Jeff Johnsone7245742012-09-05 17:12:55 -07007521 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007522 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007523
Jeff Johnson295189b2012-06-20 16:38:30 -07007524}/*WDI_MainCloseBusy*/
7525
7526/**
7527 @brief Main FSM Shutdown function for INIT & STARTED states
7528
7529
7530 @param pWDICtx: pointer to the WLAN DAL context
7531 pEventData: pointer to the event information structure
7532
7533 @see
7534 @return Result of the function call
7535*/
7536WDI_Status
7537WDI_MainShutdown
7538(
7539 WDI_ControlBlockType* pWDICtx,
7540 WDI_EventInfoType* pEventData
7541)
7542{
7543 /*--------------------------------------------------------------------
7544 Sanity Check
7545 ----------------------------------------------------------------------*/
7546 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7547 {
7548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007549 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007550 pWDICtx, pEventData);
7551 return WDI_STATUS_E_FAILURE;
7552 }
7553
7554 /*State at this point is BUSY - because we enter this state before posting
7555 an event to the FSM in order to prevent potential race conditions*/
7556
7557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7558 "Processing shutdown request in FSM");
7559
7560 /*Return Success*/
7561 return WDI_ProcessRequest( pWDICtx, pEventData );
7562
7563}/*WDI_MainShutdown*/
7564
7565/**
7566 @brief Main FSM Shutdown function for BUSY state
7567
7568
7569 @param pWDICtx: pointer to the WLAN DAL context
7570 pEventData: pointer to the event information structure
7571
7572 @see
7573 @return Result of the function call
7574*/
7575WDI_Status
7576WDI_MainShutdownBusy
7577(
7578 WDI_ControlBlockType* pWDICtx,
7579 WDI_EventInfoType* pEventData
7580)
7581{
7582 /*--------------------------------------------------------------------
7583 Sanity Check
7584 ----------------------------------------------------------------------*/
7585 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7586 {
7587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007588 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007589 pWDICtx, pEventData);
7590 return WDI_STATUS_E_FAILURE;
7591 }
7592
7593 /* If you are waiting for a HAL response at this stage, you are not
7594 * going to get it. Riva is already shutdown/crashed.
7595 */
7596 wpalTimerStop(&gWDICb.wptResponseTimer);
7597
7598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7599 "Processing shutdown request in FSM: Busy state ");
7600
7601 return WDI_ProcessRequest( pWDICtx, pEventData );
7602
7603}/*WDI_MainShutdownBusy*/
7604
7605
Jeff Johnsone7245742012-09-05 17:12:55 -07007606/*=======================================================================
7607
Jeff Johnson295189b2012-06-20 16:38:30 -07007608 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007609
Jeff Johnson295189b2012-06-20 16:38:30 -07007610*=======================================================================*/
7611
7612/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007613 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007614========================================================================*/
7615/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007616 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007617 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007618
7619 @param pWDICtx: pointer to the WLAN DAL context
7620 pEventData: pointer to the event information structure
7621
Jeff Johnson295189b2012-06-20 16:38:30 -07007622 @see
7623 @return Result of the function call
7624*/
7625WDI_Status
7626WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007627(
Jeff Johnson295189b2012-06-20 16:38:30 -07007628 WDI_ControlBlockType* pWDICtx,
7629 WDI_EventInfoType* pEventData
7630)
7631{
7632 WDI_StartReqParamsType* pwdiStartParams = NULL;
7633 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007634 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007635 wpt_uint16 usDataOffset = 0;
7636 wpt_uint16 usSendSize = 0;
7637
Jeff Johnsone7245742012-09-05 17:12:55 -07007638 tHalMacStartReqMsg halStartReq;
7639 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7641
7642 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007643 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007644 -------------------------------------------------------------------------*/
7645 if (( NULL == pEventData ) ||
7646 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7647 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7648 {
7649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 }
7654
7655 /*-----------------------------------------------------------------------
7656 Get message buffer
7657 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007658 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007659 pwdiStartParams->usConfigBufferLen;
7660
Jeff Johnsone7245742012-09-05 17:12:55 -07007661 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007662 usLen,
7663 &pSendBuffer, &usDataOffset, &usSendSize))||
7664 ( usSendSize < (usDataOffset + usLen )))
7665 {
7666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007667 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 pEventData, pwdiStartParams, wdiStartRspCb);
7669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007671 }
7672
7673 /*-----------------------------------------------------------------------
7674 Fill in the message
7675 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007676 halStartReq.startReqParams.driverType =
7677 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007678
Jeff Johnsone7245742012-09-05 17:12:55 -07007679 halStartReq.startReqParams.uConfigBufferLen =
7680 pwdiStartParams->usConfigBufferLen;
7681 wpalMemoryCopy( pSendBuffer+usDataOffset,
7682 &halStartReq.startReqParams,
7683 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007684
Jeff Johnsone7245742012-09-05 17:12:55 -07007685 usDataOffset += sizeof(halStartReq.startReqParams);
7686 wpalMemoryCopy( pSendBuffer+usDataOffset,
7687 pwdiStartParams->pConfigBuffer,
7688 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007689
7690 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007691 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007692
7693 /*Save Low Level Ind CB and associated user data - it will be used further
7694 on when an indication is coming from the lower MAC*/
7695 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007696 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007697
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007700 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007701 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007702 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007703 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7704
Jeff Johnsone7245742012-09-05 17:12:55 -07007705
Jeff Johnson295189b2012-06-20 16:38:30 -07007706}/*WDI_ProcessStartReq*/
7707
7708/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007709 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007710 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007711
7712 @param pWDICtx: pointer to the WLAN DAL context
7713 pEventData: pointer to the event information structure
7714
Jeff Johnson295189b2012-06-20 16:38:30 -07007715 @see
7716 @return Result of the function call
7717*/
7718WDI_Status
7719WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007720(
Jeff Johnson295189b2012-06-20 16:38:30 -07007721 WDI_ControlBlockType* pWDICtx,
7722 WDI_EventInfoType* pEventData
7723)
7724{
7725 WDI_StopReqParamsType* pwdiStopParams = NULL;
7726 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007727 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007728 wpt_uint16 usDataOffset = 0;
7729 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007730 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007731 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7733
7734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007736 -------------------------------------------------------------------------*/
7737 if (( NULL == pEventData ) ||
7738 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7739 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7740 {
7741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007743 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007744 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007745 }
7746
7747 /*-----------------------------------------------------------------------
7748 Get message buffer
7749 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 sizeof(halStopReq.stopReqParams),
7752 &pSendBuffer, &usDataOffset, &usSendSize))||
7753 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7754 {
7755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007756 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 pEventData, pwdiStopParams, wdiStopRspCb);
7758 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007759 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007760 }
7761
7762 /*-----------------------------------------------------------------------
7763 Fill in the message
7764 -----------------------------------------------------------------------*/
7765 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7766 pwdiStopParams->wdiStopReason);
7767
Jeff Johnsone7245742012-09-05 17:12:55 -07007768 wpalMemoryCopy( pSendBuffer+usDataOffset,
7769 &halStopReq.stopReqParams,
7770 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007771
7772 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007774
7775 /*! TO DO: stop the data services */
7776 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7777 {
7778 /*Stop the STA Table !UT- check this logic again
7779 It is safer to do it here than on the response - because a stop is imminent*/
7780 WDI_STATableStop(pWDICtx);
7781
7782 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007783 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7784 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007785 {
7786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7787 "WDI Init failed to reset power state event");
7788
Jeff Johnsone7245742012-09-05 17:12:55 -07007789 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007790 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007791 }
7792 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007793 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7794 if( eWLAN_PAL_STATUS_SUCCESS != status )
7795 {
7796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007797 "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 -08007798 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007799 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007800 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007804 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7805 WDI_SET_POWER_STATE_TIMEOUT);
7806 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 {
7808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7809 "WDI Init failed to wait on an event");
7810
Jeff Johnsone7245742012-09-05 17:12:55 -07007811 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007812 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007813 }
7814 }
7815
7816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007819 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007820 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7821
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007822fail:
7823 // Release the message buffer so we don't leak
7824 wpalMemoryFree(pSendBuffer);
7825
7826failRequest:
7827 //WDA should have failure check to avoid the memory leak
7828 return WDI_STATUS_E_FAILURE;
7829
Jeff Johnson295189b2012-06-20 16:38:30 -07007830}/*WDI_ProcessStopReq*/
7831
7832/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007834 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007835
7836 @param pWDICtx: pointer to the WLAN DAL context
7837 pEventData: pointer to the event information structure
7838
Jeff Johnson295189b2012-06-20 16:38:30 -07007839 @see
7840 @return Result of the function call
7841*/
7842WDI_Status
7843WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007844(
Jeff Johnson295189b2012-06-20 16:38:30 -07007845 WDI_ControlBlockType* pWDICtx,
7846 WDI_EventInfoType* pEventData
7847)
7848{
Jeff Johnsone7245742012-09-05 17:12:55 -07007849 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7851
7852 /*Lock control block for cleanup*/
7853 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007854
Jeff Johnson295189b2012-06-20 16:38:30 -07007855 /*Clear all pending request*/
7856 WDI_ClearPendingRequests(pWDICtx);
7857
7858 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007859 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007860
7861 /* Close Data transport*/
7862 /* FTM mode does not open Data Path */
7863 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7864 {
7865 WDTS_Close(pWDICtx);
7866 }
7867
7868 /*Close the STA Table !UT- check this logic again*/
7869 WDI_STATableClose(pWDICtx);
7870
7871 /*close the PAL */
7872 wptStatus = wpalClose(pWDICtx->pPALContext);
7873 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7874 {
7875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7876 "Failed to wpal Close %d", wptStatus);
7877 WDI_ASSERT(0);
7878 }
7879
7880 /*Transition back to init state*/
7881 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7882
7883 wpalMutexRelease(&pWDICtx->wptMutex);
7884
7885 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007887
Jeff Johnsone7245742012-09-05 17:12:55 -07007888 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007889}/*WDI_ProcessCloseReq*/
7890
7891
7892/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007893 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007894===========================================================================*/
7895
7896/**
7897 @brief Process Init Scan Request function (called when Main FSM
7898 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007899
7900 @param pWDICtx: pointer to the WLAN DAL context
7901 pEventData: pointer to the event information structure
7902
Jeff Johnson295189b2012-06-20 16:38:30 -07007903 @see
7904 @return Result of the function call
7905*/
7906WDI_Status
7907WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007908(
Jeff Johnson295189b2012-06-20 16:38:30 -07007909 WDI_ControlBlockType* pWDICtx,
7910 WDI_EventInfoType* pEventData
7911)
7912{
7913 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7914 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007915 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007916 wpt_uint16 usDataOffset = 0;
7917 wpt_uint16 usSendSize = 0;
7918 wpt_uint8 i = 0;
7919
7920 tHalInitScanReqMsg halInitScanReqMsg;
7921
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007923 * It shold be removed once host and riva changes are in sync*/
7924 tHalInitScanConReqMsg halInitScanConReqMsg;
7925
7926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7927
7928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007930 -------------------------------------------------------------------------*/
7931 if (( NULL == pEventData ) ||
7932 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7933 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7934 {
7935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007936 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 }
7940
7941#if 0
7942 wpalMutexAcquire(&pWDICtx->wptMutex);
7943 /*-----------------------------------------------------------------------
7944 Check to see if SCAN is already in progress - if so reject the req
7945 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007946 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007947 -----------------------------------------------------------------------*/
7948 if ( pWDICtx->bScanInProgress )
7949 {
7950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7951 "Scan is already in progress - subsequent scan is not allowed"
7952 " until the first scan completes");
7953
7954 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007955 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007956 }
7957
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7959 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007960
7961 wpalMutexRelease(&pWDICtx->wptMutex);
7962#endif
Viral Modid86bde22012-12-10 13:09:21 -08007963 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007964 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007965 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 * It shold be removed once host and riva changes are in sync*/
7967 /*-----------------------------------------------------------------------
7968 Get message buffer
7969 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007970 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 sizeof(halInitScanConReqMsg.initScanParams),
7972 &pSendBuffer, &usDataOffset, &usSendSize))||
7973 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7974 {
7975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007976 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007977 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 }
7981
7982
7983 /*-----------------------------------------------------------------------
7984 Fill in the message
7985 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007986 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007987 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7988
7989 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7990 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7991
Jeff Johnsone7245742012-09-05 17:12:55 -07007992 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007993 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007994 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007995 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007996 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007997 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7998
7999 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8000 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8001
Jeff Johnson295189b2012-06-20 16:38:30 -07008002 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8003 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008004
Jeff Johnsone7245742012-09-05 17:12:55 -07008005 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8007
8008 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8009 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008010 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008011 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8012 }
8013
Jeff Johnsone7245742012-09-05 17:12:55 -07008014 wpalMemoryCopy( pSendBuffer+usDataOffset,
8015 &halInitScanConReqMsg.initScanParams,
8016 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 }
8018 else
8019 {
8020 /*-----------------------------------------------------------------------
8021 Get message buffer
8022 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008023 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 sizeof(halInitScanReqMsg.initScanParams),
8025 &pSendBuffer, &usDataOffset, &usSendSize))||
8026 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8027 {
8028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008029 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008030 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8031 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008033 }
8034
8035
8036 /*-----------------------------------------------------------------------
8037 Fill in the message
8038 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008039 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008040 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8041
8042 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8043 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8044
Jeff Johnsone7245742012-09-05 17:12:55 -07008045 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008046 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008047 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008048 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008049 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8051
8052 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8053 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8054
Jeff Johnsone7245742012-09-05 17:12:55 -07008055 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008056 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8057
8058 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8059 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008060 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8062 }
8063
Jeff Johnsone7245742012-09-05 17:12:55 -07008064 wpalMemoryCopy( pSendBuffer+usDataOffset,
8065 &halInitScanReqMsg.initScanParams,
8066 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 }
8068
8069 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008070 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008071
8072 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008073 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008074 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8077
8078}/*WDI_ProcessInitScanReq*/
8079
8080/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008083
8084 @param pWDICtx: pointer to the WLAN DAL context
8085 pEventData: pointer to the event information structure
8086
Jeff Johnson295189b2012-06-20 16:38:30 -07008087 @see
8088 @return Result of the function call
8089*/
8090WDI_Status
8091WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008092(
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 WDI_ControlBlockType* pWDICtx,
8094 WDI_EventInfoType* pEventData
8095)
8096{
8097 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8098 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008099 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008100 wpt_uint16 usDataOffset = 0;
8101 wpt_uint16 usSendSize = 0;
8102
Jeff Johnsone7245742012-09-05 17:12:55 -07008103 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8105
8106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008108 -------------------------------------------------------------------------*/
8109 if (( NULL == pEventData ) ||
8110 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8111 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8112 {
8113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008114 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008117 }
8118
8119#if 0
8120 wpalMutexAcquire(&pWDICtx->wptMutex);
8121 /*-----------------------------------------------------------------------
8122 Check to see if SCAN is already in progress - start scan is only
8123 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8128 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8129 {
8130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8131 "Scan start not allowed in this state %d %d",
8132 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008133
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008135 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008136 }
8137
Jeff Johnsone7245742012-09-05 17:12:55 -07008138 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008139
8140 wpalMutexRelease(&pWDICtx->wptMutex);
8141#endif
8142
8143 /*-----------------------------------------------------------------------
8144 Get message buffer
8145 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 sizeof(halStartScanReqMsg.startScanParams),
8148 &pSendBuffer, &usDataOffset, &usSendSize))||
8149 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8150 {
8151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008152 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008156 }
8157
Jeff Johnsone7245742012-09-05 17:12:55 -07008158 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008159 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008160 wpalMemoryCopy( pSendBuffer+usDataOffset,
8161 &halStartScanReqMsg.startScanParams,
8162 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008163
8164 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008165 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008166
8167 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008169 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8172}/*WDI_ProcessStartScanReq*/
8173
8174
8175/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008176 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008177 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008178
8179 @param pWDICtx: pointer to the WLAN DAL context
8180 pEventData: pointer to the event information structure
8181
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 @see
8183 @return Result of the function call
8184*/
8185WDI_Status
8186WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008187(
Jeff Johnson295189b2012-06-20 16:38:30 -07008188 WDI_ControlBlockType* pWDICtx,
8189 WDI_EventInfoType* pEventData
8190)
8191{
8192 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8193 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 wpt_uint16 usDataOffset = 0;
8196 wpt_uint16 usSendSize = 0;
8197
Jeff Johnsone7245742012-09-05 17:12:55 -07008198 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8200
8201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008203 -------------------------------------------------------------------------*/
8204 if (( NULL == pEventData ) ||
8205 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8206 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8207 {
8208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008209 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008210 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008211 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008212 }
8213
Jeff Johnsone7245742012-09-05 17:12:55 -07008214 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8215 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 * forwarded to HAL and result in hang*/
8217#if 0
8218 wpalMutexAcquire(&pWDICtx->wptMutex);
8219 /*-----------------------------------------------------------------------
8220 Check to see if SCAN is already in progress - end scan is only
8221 allowed when a scan is ongoing and the state of the scan procedure
8222 is started
8223 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8226 {
8227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8228 "End start not allowed in this state %d %d",
8229 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008230
Jeff Johnson295189b2012-06-20 16:38:30 -07008231 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008233 }
8234
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008236
8237 wpalMutexRelease(&pWDICtx->wptMutex);
8238#endif
8239
8240 /*-----------------------------------------------------------------------
8241 Get message buffer
8242 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008243 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 sizeof(halEndScanReqMsg.endScanParams),
8245 &pSendBuffer, &usDataOffset, &usSendSize))||
8246 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8247 {
8248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008249 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008250 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 }
8254
8255 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8256
Jeff Johnsone7245742012-09-05 17:12:55 -07008257 wpalMemoryCopy( pSendBuffer+usDataOffset,
8258 &halEndScanReqMsg.endScanParams,
8259 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008260
8261 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008262 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008263
8264 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008267 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008268 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8269}/*WDI_ProcessEndScanReq*/
8270
8271
8272/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008273 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008275
8276 @param pWDICtx: pointer to the WLAN DAL context
8277 pEventData: pointer to the event information structure
8278
Jeff Johnson295189b2012-06-20 16:38:30 -07008279 @see
8280 @return Result of the function call
8281*/
8282WDI_Status
8283WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008284(
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 WDI_ControlBlockType* pWDICtx,
8286 WDI_EventInfoType* pEventData
8287)
8288{
8289 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8290 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008292 wpt_uint16 usDataOffset = 0;
8293 wpt_uint16 usSendSize = 0;
8294 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008295 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8298
8299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008301 -------------------------------------------------------------------------*/
8302 if (( NULL == pEventData ) ||
8303 ( NULL == pEventData->pEventData) ||
8304 ( NULL == pEventData->pCBfnc))
8305 {
8306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008310 }
8311
8312 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8313 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008314 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8315 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008316 * forwarded to HAL and result in hang*/
8317#if 0
8318 wpalMutexAcquire(&pWDICtx->wptMutex);
8319 /*-----------------------------------------------------------------------
8320 Check to see if SCAN is already in progress
8321 Finish scan gets invoked any scan states. ie. abort scan
8322 It should be allowed in any states.
8323 -----------------------------------------------------------------------*/
8324 if ( !pWDICtx->bScanInProgress )
8325 {
8326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8327 "Finish start not allowed in this state %d",
8328 pWDICtx->bScanInProgress );
8329
8330 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008331 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008332 }
8333
8334 /*-----------------------------------------------------------------------
8335 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008336 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008337 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008338 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8339 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008340 wpalMutexRelease(&pWDICtx->wptMutex);
8341#endif
8342
8343 if ( pWDICtx->bInBmps )
8344 {
8345 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008346 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8347 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8348 {
8349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008350 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008351 WDI_ASSERT(0);
8352 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 }
8354
8355 /*-----------------------------------------------------------------------
8356 Get message buffer
8357 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008358 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 sizeof(halFinishScanReqMsg.finishScanParams),
8360 &pSendBuffer, &usDataOffset, &usSendSize))||
8361 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8362 {
8363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008364 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 }
8369
Jeff Johnsone7245742012-09-05 17:12:55 -07008370 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008371 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8372
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8375
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8378
8379 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8380 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8381
Jeff Johnsone7245742012-09-05 17:12:55 -07008382 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008384 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008387 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8388
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8391
8392 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8393 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8396 }
8397
8398 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8399 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8400
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 wpalMemoryCopy( pSendBuffer+usDataOffset,
8402 &halFinishScanReqMsg.finishScanParams,
8403 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008404
8405 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008406 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008407
8408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008409 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008410 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008411 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008412 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8413}/*WDI_ProcessFinishScanReq*/
8414
8415
8416/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008418==========================================================================*/
8419/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008420 @brief Process BSS Join for a given Session
8421
8422 @param pWDICtx: pointer to the WLAN DAL context
8423 pEventData: pointer to the event information structure
8424
Jeff Johnson295189b2012-06-20 16:38:30 -07008425 @see
8426 @return Result of the function call
8427*/
8428WDI_Status
8429WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008430(
Jeff Johnson295189b2012-06-20 16:38:30 -07008431 WDI_ControlBlockType* pWDICtx,
8432 WDI_JoinReqParamsType* pwdiJoinParams,
8433 WDI_JoinRspCb wdiJoinRspCb,
8434 void* pUserData
8435)
8436{
8437 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008438 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008439 wpt_uint16 usDataOffset = 0;
8440 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008442
Jeff Johnsone7245742012-09-05 17:12:55 -07008443 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8445
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008446 wpalMutexAcquire(&pWDICtx->wptMutex);
8447
Jeff Johnson295189b2012-06-20 16:38:30 -07008448 /*------------------------------------------------------------------------
8449 Check to see if we have any session with this BSSID already stored, we
8450 should not
8451 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8453 pwdiJoinParams->wdiReqInfo.macBSSID,
8454 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008455
8456 if ( NULL != pBSSSes )
8457 {
8458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008459 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8460 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008461
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008462 /*reset the bAssociationInProgress otherwise the next
8463 *join request will be queued*/
8464 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8465 wpalMutexRelease(&pWDICtx->wptMutex);
8466 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008467 }
8468
Jeff Johnson295189b2012-06-20 16:38:30 -07008469 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008472 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008473 if ( NULL == pBSSSes )
8474 {
8475
8476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8477 "DAL has no free sessions - cannot run another join");
8478
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008479 /*reset the bAssociationInProgress otherwise the next
8480 *join request will be queued*/
8481 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008482 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008483 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008484 }
8485
8486 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008487 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8488 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 WDI_MAC_ADDR_LEN);
8490
8491 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008494
Jeff Johnson295189b2012-06-20 16:38:30 -07008495 wpalMutexRelease(&pWDICtx->wptMutex);
8496
8497 /*-----------------------------------------------------------------------
8498 Get message buffer
8499 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008500 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 sizeof(halJoinReqMsg.joinReqParams),
8502 &pSendBuffer, &usDataOffset, &usSendSize))||
8503 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8504 {
8505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008506 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 pUserData, pwdiJoinParams, wdiJoinRspCb);
8508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008510 }
8511
8512 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008513 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008514
8515 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008516 pwdiJoinParams->wdiReqInfo.macSTASelf,
8517 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008518
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8521
8522 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8523
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008524#ifdef WLAN_FEATURE_VOWIFI
8525 halJoinReqMsg.joinReqParams.maxTxPower =
8526 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8527#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008529 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8530#endif
8531
Jeff Johnsone7245742012-09-05 17:12:55 -07008532 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8534 wdiSecondaryChannelOffset);
8535
Jeff Johnsone7245742012-09-05 17:12:55 -07008536 wpalMemoryCopy( pSendBuffer+usDataOffset,
8537 &halJoinReqMsg.joinReqParams,
8538 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008539
8540 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008542
8543 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008546 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8547 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008548
8549}/*WDI_ProcessBSSSessionJoinReq*/
8550
8551/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008552 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008553 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008554
8555 @param pWDICtx: pointer to the WLAN DAL context
8556 pEventData: pointer to the event information structure
8557
Jeff Johnson295189b2012-06-20 16:38:30 -07008558 @see
8559 @return Result of the function call
8560*/
8561WDI_Status
8562WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008563(
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 WDI_ControlBlockType* pWDICtx,
8565 WDI_EventInfoType* pEventData
8566)
8567{
8568 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8569 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8570 WDI_JoinRspCb wdiJoinRspCb = NULL;
8571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8572
8573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008574 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008575 -------------------------------------------------------------------------*/
8576 if (( NULL == pEventData ) ||
8577 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8578 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8579 {
8580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008581 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008582 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008585
Jeff Johnson295189b2012-06-20 16:38:30 -07008586 /*-------------------------------------------------------------------------
8587 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008588 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008589 -------------------------------------------------------------------------*/
8590 wpalMutexAcquire(&pWDICtx->wptMutex);
8591
8592 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8593 {
8594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8595 "Association is currently in progress, queueing new join req");
8596
8597 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008598 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 pwdiJoinParams->wdiReqInfo.macBSSID);
8600
8601 wpalMutexRelease(&pWDICtx->wptMutex);
8602
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 }
8605
8606 /*Starting a new association */
8607 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8608 wpalMutexRelease(&pWDICtx->wptMutex);
8609
8610 /*Process the Join Request*/
8611 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8612 wdiJoinRspCb,pEventData->pUserData);
8613
8614}/*WDI_ProcessJoinReq*/
8615
8616
8617/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008620
8621 @param pWDICtx: pointer to the WLAN DAL context
8622 pEventData: pointer to the event information structure
8623
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 @see
8625 @return Result of the function call
8626*/
8627WDI_Status
8628WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008629(
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 WDI_ControlBlockType* pWDICtx,
8631 WDI_EventInfoType* pEventData
8632)
8633{
8634 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8635 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008637 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 wpt_uint16 uMsgSize = 0;
8639 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008640 wpt_uint16 usDataOffset = 0;
8641 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008643
Jeff Johnsone7245742012-09-05 17:12:55 -07008644 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8646
8647 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008648 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 -------------------------------------------------------------------------*/
8650 if (( NULL == pEventData ) ||
8651 ( NULL == pEventData->pEventData ) ||
8652 ( NULL == pEventData->pCBfnc ))
8653 {
8654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008655 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008658 }
8659
Abhishek Singh6927fa02014-06-27 17:19:55 +05308660 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008661 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8662 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8663 /*-------------------------------------------------------------------------
8664 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 -------------------------------------------------------------------------*/
8667 wpalMutexAcquire(&pWDICtx->wptMutex);
8668
8669 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008672 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8673 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8674 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008675
Jeff Johnsone7245742012-09-05 17:12:55 -07008676 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008677 {
8678#ifdef WLAN_FEATURE_VOWIFI_11R
8679 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 if ( NULL == pBSSSes )
8684 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008685
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8687 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008688
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008690 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008692
Jeff Johnson295189b2012-06-20 16:38:30 -07008693 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008694 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8695 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008697
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008699 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008700 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8701#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008703 * Request in case of IBSS*/
8704 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8705 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8706 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8707 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8708 {
8709 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008710 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008712 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008713 if ( NULL == pBSSSes )
8714 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008715
Jeff Johnson295189b2012-06-20 16:38:30 -07008716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8717 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008718
Jeff Johnson295189b2012-06-20 16:38:30 -07008719 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008720 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008721 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008722
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008724 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8725 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008727
Jeff Johnson295189b2012-06-20 16:38:30 -07008728 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8731 }
8732 else
8733 {
8734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8736 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8737 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8738
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 /* for IBSS testing */
8740 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 }
8743#endif
8744 }
8745
8746 /*------------------------------------------------------------------------
8747 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008749 ------------------------------------------------------------------------*/
8750 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8751 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8753 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8754 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8755 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008756
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008758
8759 wpalMutexRelease(&pWDICtx->wptMutex);
8760
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 }
8763
8764 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008765 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8766 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 sizeof(pWDICtx->wdiCachedConfigBssReq));
8768
8769 wpalMutexRelease(&pWDICtx->wptMutex);
8770
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8772#ifdef WLAN_FEATURE_11AC
8773 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008774 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 else
8776#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008777 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008778
8779 /*-----------------------------------------------------------------------
8780 Get message buffer
8781 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008782 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008783 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8784 ( usSendSize < (usDataOffset + uMsgSize )))
8785 {
8786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008787 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 }
8792
8793 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008794#ifdef WLAN_FEATURE_11AC
8795 if (WDI_getFwWlanFeatCaps(DOT11AC))
8796 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8797 &pwdiConfigBSSParams->wdiReqInfo);
8798 else
8799#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008800 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 &pwdiConfigBSSParams->wdiReqInfo);
8802
8803 /* Need to fill in the STA Index to invalid, since at this point we have not
8804 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008806
8807 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008808 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8809
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008810#ifdef WLAN_FEATURE_11AC
8811 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8812 wpalMemoryCopy( pSendBuffer+usDataOffset,
8813 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8814 uMsgSize);
8815 }else
8816#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008817 {
8818 if ( uMsgSize <= sizeof(tConfigBssParams) )
8819 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008820 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008821 &halConfigBssReqMsg.uBssParams.configBssParams,
8822 uMsgSize);
8823 }
8824 else
8825 {
8826 return WDI_STATUS_E_FAILURE;
8827 }
8828 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008829
8830 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008831 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308832 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008836 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8837 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008838 WDI_CONFIG_BSS_RESP);
8839
8840}/*WDI_ProcessConfigBSSReq*/
8841
8842
8843/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008844 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008845 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008846
8847 @param pWDICtx: pointer to the WLAN DAL context
8848 pEventData: pointer to the event information structure
8849
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 @see
8851 @return Result of the function call
8852*/
8853WDI_Status
8854WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008855(
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 WDI_ControlBlockType* pWDICtx,
8857 WDI_EventInfoType* pEventData
8858)
8859{
8860 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8861 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008863 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 wpt_uint16 usDataOffset = 0;
8866 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008867 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008868
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8871
8872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008874 -------------------------------------------------------------------------*/
8875 if (( NULL == pEventData ) ||
8876 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8877 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8878 {
8879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008880 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008883 }
8884
8885 /*-------------------------------------------------------------------------
8886 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008887 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008888 -------------------------------------------------------------------------*/
8889 wpalMutexAcquire(&pWDICtx->wptMutex);
8890
8891 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008893 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8895 pwdiDelBSSParams->ucBssIdx,
8896 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008897
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 {
8900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 "%s: BSS does not yet exist. ucBssIdx %d",
8902 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008903
8904 wpalMutexRelease(&pWDICtx->wptMutex);
8905
8906 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008907 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008908
8909 /*------------------------------------------------------------------------
8910 Check if this BSS is being currently processed or queued,
8911 if queued - queue the new request as well
8912 ------------------------------------------------------------------------*/
8913 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8916 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8917 __func__, pwdiDelBSSParams->ucBssIdx);
8918
8919 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8920
8921 wpalMutexRelease(&pWDICtx->wptMutex);
8922
8923 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008924 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008925
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 /*-----------------------------------------------------------------------
8927 If we receive a Del BSS request for an association that is already in
8928 progress, it indicates that the assoc has failed => we no longer have
8929 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008930 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008931 -----------------------------------------------------------------------*/
8932 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8933 {
8934 /*We can switch to false here because even if a subsequent Join comes in
8935 it will only be processed when DAL transitions out of BUSY state which
8936 happens when the Del BSS request comes */
8937 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8938
8939 /*Former association is complete - prepare next pending assoc for
8940 processing */
8941 WDI_DequeueAssocRequest(pWDICtx);
8942 }
8943
8944 wpalMutexRelease(&pWDICtx->wptMutex);
8945 /*-----------------------------------------------------------------------
8946 Get message buffer
8947 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008949 sizeof(halBssReqMsg.deleteBssParams),
8950 &pSendBuffer, &usDataOffset, &usSendSize))||
8951 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8952 {
8953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008954 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 }
8959
8960 /*Fill in the message request structure*/
8961
8962 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008963 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008964
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 wpalMemoryCopy( pSendBuffer+usDataOffset,
8966 &halBssReqMsg.deleteBssParams,
8967 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008968
8969 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008970 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008971
Jeff Johnsone7245742012-09-05 17:12:55 -07008972
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008974 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008975 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8978
Jeff Johnsone7245742012-09-05 17:12:55 -07008979
Jeff Johnson295189b2012-06-20 16:38:30 -07008980}/*WDI_ProcessDelBSSReq*/
8981
8982/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008983 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008984 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008985
8986 @param pWDICtx: pointer to the WLAN DAL context
8987 pEventData: pointer to the event information structure
8988
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 @see
8990 @return Result of the function call
8991*/
8992WDI_Status
8993WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008994(
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 WDI_ControlBlockType* pWDICtx,
8996 WDI_EventInfoType* pEventData
8997)
8998{
8999 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9000 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 wpt_uint16 usDataOffset = 0;
9005 wpt_uint16 usSendSize = 0;
9006 wpt_uint16 uMsgSize = 0;
9007 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009008 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009009
Jeff Johnsone7245742012-09-05 17:12:55 -07009010 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9012
9013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009015 -------------------------------------------------------------------------*/
9016 if (( NULL == pEventData ) ||
9017 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9018 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9019 {
9020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009024 }
9025
9026 /*-------------------------------------------------------------------------
9027 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 -------------------------------------------------------------------------*/
9030 wpalMutexAcquire(&pWDICtx->wptMutex);
9031
9032 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009033 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009034 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9036 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9037 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009038
9039 if ( NULL == pBSSSes )
9040 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9042 "%s: Association sequence for this BSS does not yet exist - "
9043 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9044 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009045
9046 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009048 }
9049
9050 /*------------------------------------------------------------------------
9051 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 ------------------------------------------------------------------------*/
9054 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9055 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9057 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9058 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009059
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009061
9062 wpalMutexRelease(&pWDICtx->wptMutex);
9063
Jeff Johnsone7245742012-09-05 17:12:55 -07009064 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 }
9066
9067 /*-----------------------------------------------------------------------
9068 If Post Assoc was not yet received - the current association must
9069 be in progress
9070 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9073 {
9074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9075 "Association sequence for this BSS association no longer in "
9076 "progress - not allowed");
9077
9078 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009079 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009080 }
9081
9082 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 -----------------------------------------------------------------------*/
9085 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9086 {
9087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9088 "Post Assoc not allowed before JOIN - failing request");
9089
9090 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009092 }
9093
9094 wpalMutexRelease(&pWDICtx->wptMutex);
9095
9096 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9097 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9098 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009101 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009102 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9103 ( usSendSize < (usDataOffset + uMsgSize )))
9104 {
9105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009106 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009110 }
9111
9112 /*Copy the STA parameters */
9113 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9114 &pwdiPostAssocParams->wdiSTAParams );
9115
9116 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 WDI_STATableFindStaidByAddr(pWDICtx,
9119 pwdiPostAssocParams->wdiSTAParams.macSTA,
9120 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9121 {
9122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009123 MAC_ADDRESS_STR
9124 ": This station does not exist in the WDI Station Table",
9125 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009126 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009127 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 }
9130
9131 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 pBSSSes->ucBSSIdx;
9134
9135 /*Copy the BSS parameters */
9136 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9137 &pwdiPostAssocParams->wdiBSSParams);
9138
9139 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009140 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009141 WDI_STATableFindStaidByAddr(pWDICtx,
9142 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 {
9145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009146 MAC_ADDRESS_STR
9147 ": This station does not exist in the WDI Station Table",
9148 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009149 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009150 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 }
9153
9154 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009155 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009156 pBSSSes->ucBSSIdx;
9157
Jeff Johnsone7245742012-09-05 17:12:55 -07009158
9159 wpalMemoryCopy( pSendBuffer+usDataOffset,
9160 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9161 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009162
9163 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9164
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9166 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9167 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009168
Jeff Johnsone7245742012-09-05 17:12:55 -07009169
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009172
Jeff Johnsone7245742012-09-05 17:12:55 -07009173
9174 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009175 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009176 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009177
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309178 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009182 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009183 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9184
Jeff Johnsone7245742012-09-05 17:12:55 -07009185
Jeff Johnson295189b2012-06-20 16:38:30 -07009186}/*WDI_ProcessPostAssocReq*/
9187
9188/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009189 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009191
9192 @param pWDICtx: pointer to the WLAN DAL context
9193 pEventData: pointer to the event information structure
9194
Jeff Johnson295189b2012-06-20 16:38:30 -07009195 @see
9196 @return Result of the function call
9197*/
9198WDI_Status
9199WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009200(
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 WDI_ControlBlockType* pWDICtx,
9202 WDI_EventInfoType* pEventData
9203)
9204{
9205 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9206 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 wpt_uint16 usDataOffset = 0;
9211 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009212 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009213 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9214
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9217
9218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 -------------------------------------------------------------------------*/
9221 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9222 ( NULL == pEventData->pCBfnc ))
9223 {
9224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009228 }
9229
9230 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9231 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9232 /*-------------------------------------------------------------------------
9233 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009234 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009235 -------------------------------------------------------------------------*/
9236 wpalMutexAcquire(&pWDICtx->wptMutex);
9237
9238 /*------------------------------------------------------------------------
9239 Find the BSS for which the request is made and identify WDI session
9240 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009241 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9242 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009243 &macBSSID))
9244 {
9245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009246 "This station does not exist in the WDI Station Table %d",
9247 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009250 }
9251
Jeff Johnsone7245742012-09-05 17:12:55 -07009252 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9253 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9256 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9257 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009258
9259 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009260 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 }
9262
9263 /*------------------------------------------------------------------------
9264 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009265 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009266 ------------------------------------------------------------------------*/
9267 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9268 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9270 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9271 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009272
Jeff Johnsone7245742012-09-05 17:12:55 -07009273 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009274 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009275 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009276 }
9277
9278 wpalMutexRelease(&pWDICtx->wptMutex);
9279 /*-----------------------------------------------------------------------
9280 Get message buffer
9281 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 sizeof(halDelStaReqMsg.delStaParams),
9284 &pSendBuffer, &usDataOffset, &usSendSize))||
9285 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9286 {
9287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009288 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009289 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 }
9293
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9295 wpalMemoryCopy( pSendBuffer+usDataOffset,
9296 &halDelStaReqMsg.delStaParams,
9297 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009298
9299 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009301
9302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009303 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009306 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9307
9308}/*WDI_ProcessDelSTAReq*/
9309
9310
9311/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009313==========================================================================*/
9314/**
9315 @brief Process Set BSS Key Request function (called when Main FSM
9316 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009317
9318 @param pWDICtx: pointer to the WLAN DAL context
9319 pEventData: pointer to the event information structure
9320
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 @see
9322 @return Result of the function call
9323*/
9324WDI_Status
9325WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009326(
Jeff Johnson295189b2012-06-20 16:38:30 -07009327 WDI_ControlBlockType* pWDICtx,
9328 WDI_EventInfoType* pEventData
9329)
9330{
9331 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9332 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009334 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 wpt_uint16 usDataOffset = 0;
9337 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009338 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009339 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9340 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309341 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009342
9343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9344
9345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009347 -------------------------------------------------------------------------*/
9348 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9349 ( NULL == pEventData->pCBfnc ))
9350 {
9351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009352 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009355 }
9356
9357 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9358 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9359 /*-------------------------------------------------------------------------
9360 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 -------------------------------------------------------------------------*/
9363 wpalMutexAcquire(&pWDICtx->wptMutex);
9364
9365 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009367 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009368 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9369 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9370 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009371
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 {
9374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009375 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9376 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009377
9378 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 }
9381
9382 /*------------------------------------------------------------------------
9383 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 ------------------------------------------------------------------------*/
9386 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9387 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9389 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9390 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009391
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009395 }
9396
9397
9398 wpalMutexRelease(&pWDICtx->wptMutex);
9399 /*-----------------------------------------------------------------------
9400 Get message buffer
9401 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009403 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9404 &pSendBuffer, &usDataOffset, &usSendSize))||
9405 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9406 {
9407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009408 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009409 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009412 }
9413
9414 /*-----------------------------------------------------------------------
9415 Copy the Key parameters into the HAL message
9416 -----------------------------------------------------------------------*/
9417
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009419
Jeff Johnsone7245742012-09-05 17:12:55 -07009420 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009421 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9422
Jeff Johnsone7245742012-09-05 17:12:55 -07009423 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009424 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9425
9426 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9427 keyIndex++)
9428 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009429 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009430 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9431 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9432 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9433 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9434 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309435
9436 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9437 {
9438 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9439 {
9440 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9441 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9442 }
9443
9444 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9445 {
9446 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9447 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9448 }
9449
9450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9451 "%s: Negated Keys", __func__);
9452 }
9453 else
9454 {
9455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9456 "%s: No change in Keys", __func__);
9457 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309460 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9461 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9462 WDI_MAX_KEY_LENGTH);
9463 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009464 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309468 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009469
9470 wpalMemoryCopy( pSendBuffer+usDataOffset,
9471 &halSetBssKeyReqMsg.setBssKeyParams,
9472 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009473
9474 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009476
9477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9481 wdiSetBSSKeyRspCb, pEventData->pUserData,
9482 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009483
9484}/*WDI_ProcessSetBssKeyReq*/
9485
9486/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009489
9490 @param pWDICtx: pointer to the WLAN DAL context
9491 pEventData: pointer to the event information structure
9492
Jeff Johnson295189b2012-06-20 16:38:30 -07009493 @see
9494 @return Result of the function call
9495*/
9496WDI_Status
9497WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009498(
Jeff Johnson295189b2012-06-20 16:38:30 -07009499 WDI_ControlBlockType* pWDICtx,
9500 WDI_EventInfoType* pEventData
9501)
9502{
9503 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9504 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 wpt_uint16 usDataOffset = 0;
9509 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009511 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9513
9514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009516 -------------------------------------------------------------------------*/
9517 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9518 ( NULL == pEventData->pCBfnc ))
9519 {
9520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 }
9525
9526 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9527 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9528 /*-------------------------------------------------------------------------
9529 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009530 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009531 -------------------------------------------------------------------------*/
9532 wpalMutexAcquire(&pWDICtx->wptMutex);
9533
9534 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009536 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9538 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9539 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009540
Jeff Johnsone7245742012-09-05 17:12:55 -07009541 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009542 {
9543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009544 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9545 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009546
9547 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009548 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009549 }
9550
9551 /*------------------------------------------------------------------------
9552 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 ------------------------------------------------------------------------*/
9555 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9556 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9558 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9559 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009560
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 }
9565
9566
9567 wpalMutexRelease(&pWDICtx->wptMutex);
9568
9569 /*-----------------------------------------------------------------------
9570 Get message buffer
9571 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9574 &pSendBuffer, &usDataOffset, &usSendSize))||
9575 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9576 {
9577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009578 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 }
9583 /*-----------------------------------------------------------------------
9584 Copy the Key parameters into the HAL message
9585 -----------------------------------------------------------------------*/
9586 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9587
Jeff Johnsone7245742012-09-05 17:12:55 -07009588 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9590
9591 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9592
Jeff Johnsone7245742012-09-05 17:12:55 -07009593 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009594 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9595
Jeff Johnsone7245742012-09-05 17:12:55 -07009596 wpalMemoryCopy( pSendBuffer+usDataOffset,
9597 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9598 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009599
9600 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009602
9603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009609}/*WDI_ProcessRemoveBssKeyReq*/
9610
9611/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009613 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009614
9615 @param pWDICtx: pointer to the WLAN DAL context
9616 pEventData: pointer to the event information structure
9617
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 @see
9619 @return Result of the function call
9620*/
9621WDI_Status
9622WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009623(
Jeff Johnson295189b2012-06-20 16:38:30 -07009624 WDI_ControlBlockType* pWDICtx,
9625 WDI_EventInfoType* pEventData
9626)
9627{
9628 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9629 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9630 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009632 wpt_uint16 usDataOffset = 0;
9633 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009634 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9638 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309639 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009640
9641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9642
9643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009645 -------------------------------------------------------------------------*/
9646 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9647 ( NULL == pEventData->pCBfnc ))
9648 {
9649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009653 }
9654
9655 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9656 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9657 /*-------------------------------------------------------------------------
9658 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 -------------------------------------------------------------------------*/
9661 wpalMutexAcquire(&pWDICtx->wptMutex);
9662
9663 /*------------------------------------------------------------------------
9664 Find the BSS for which the request is made and identify WDI session
9665 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9667 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009668 &macBSSID))
9669 {
9670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009671 "This station does not exist in the WDI Station Table %d",
9672 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009673 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009675 }
9676
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9678 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9681 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9682 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009683
9684 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009687
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 /*------------------------------------------------------------------------
9689 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 ------------------------------------------------------------------------*/
9692 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9693 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9695 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9696 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009697
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 }
9702
9703
9704 wpalMutexRelease(&pWDICtx->wptMutex);
9705 /*-----------------------------------------------------------------------
9706 Get message buffer
9707 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9710 &pSendBuffer, &usDataOffset, &usSendSize))||
9711 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9712 {
9713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009714 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009718 }
9719 /*-----------------------------------------------------------------------
9720 Copy the STA Key parameters into the HAL message
9721 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009722 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009723 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9724
Jeff Johnsone7245742012-09-05 17:12:55 -07009725 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009726 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9727
9728 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9729
9730 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9731
9732 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9733
Jeff Johnson295189b2012-06-20 16:38:30 -07009734 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9735 keyIndex++)
9736 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009737 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009738 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9739 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9740 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9741 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9742 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309743
9744 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9745 {
9746 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9747 {
9748 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9749 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9750 }
9751
9752 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9753 {
9754 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9755 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9756 }
9757
9758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9759 "%s: Negated Keys", __func__);
9760 }
9761 else
9762 {
9763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9764 "%s: No change in Keys", __func__);
9765 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009766 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009767 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309768 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9769 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9770 WDI_MAX_KEY_LENGTH);
9771 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009772 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009773 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009774 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009775 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309776 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009777
Jeff Johnsone7245742012-09-05 17:12:55 -07009778 wpalMemoryCopy( pSendBuffer+usDataOffset,
9779 &halSetStaKeyReqMsg.setStaKeyParams,
9780 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009781
9782 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309784 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9789 wdiSetSTAKeyRspCb, pEventData->pUserData,
9790 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009791
9792}/*WDI_ProcessSetSTAKeyReq*/
9793
9794/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009797
9798 @param pWDICtx: pointer to the WLAN DAL context
9799 pEventData: pointer to the event information structure
9800
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 @see
9802 @return Result of the function call
9803*/
9804WDI_Status
9805WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009806(
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 WDI_ControlBlockType* pWDICtx,
9808 WDI_EventInfoType* pEventData
9809)
9810{
9811 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9812 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9813 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 wpt_uint16 usDataOffset = 0;
9816 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009818 wpt_macAddr macBSSID;
9819 wpt_uint8 ucCurrentBSSSesIdx;
9820 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9822
9823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009825 -------------------------------------------------------------------------*/
9826 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9827 ( NULL == pEventData->pCBfnc ))
9828 {
9829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009830 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 }
9834
9835 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9836 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9837 /*-------------------------------------------------------------------------
9838 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 -------------------------------------------------------------------------*/
9841 wpalMutexAcquire(&pWDICtx->wptMutex);
9842
9843 /*------------------------------------------------------------------------
9844 Find the BSS for which the request is made and identify WDI session
9845 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9847 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009848 &macBSSID))
9849 {
9850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009851 "This station does not exist in the WDI Station Table %d",
9852 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009855 }
9856
Jeff Johnsone7245742012-09-05 17:12:55 -07009857 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9858 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9861 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9862 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009863
9864 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009865 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009866 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009867
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 /*------------------------------------------------------------------------
9869 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009870 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 ------------------------------------------------------------------------*/
9872 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9873 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9875 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9876 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009877
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 }
9882
9883
9884
9885 wpalMutexRelease(&pWDICtx->wptMutex);
9886 /*-----------------------------------------------------------------------
9887 Get message buffer
9888 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009889 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009890 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9891 &pSendBuffer, &usDataOffset, &usSendSize))||
9892 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9893 {
9894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009895 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009896 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 }
9900
9901 /*-----------------------------------------------------------------------
9902 Copy the Key parameters into the HAL message
9903 -----------------------------------------------------------------------*/
9904
Jeff Johnsone7245742012-09-05 17:12:55 -07009905 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009906 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9907
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009909 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9910
Jeff Johnsone7245742012-09-05 17:12:55 -07009911 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9913
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9916
Jeff Johnsone7245742012-09-05 17:12:55 -07009917 wpalMemoryCopy( pSendBuffer+usDataOffset,
9918 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9919 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009920
9921 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009922 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009923
9924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009928 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009930
9931}/*WDI_ProcessRemoveSTAKeyReq*/
9932
9933/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009936
9937 @param pWDICtx: pointer to the WLAN DAL context
9938 pEventData: pointer to the event information structure
9939
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 @see
9941 @return Result of the function call
9942*/
9943WDI_Status
9944WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009945(
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 WDI_ControlBlockType* pWDICtx,
9947 WDI_EventInfoType* pEventData
9948)
9949{
9950 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9951 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9952 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009954 wpt_uint16 usDataOffset = 0;
9955 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009956 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009957 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009958 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009959 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9960 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309961 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009962
9963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9964
9965 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009966 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009967 -------------------------------------------------------------------------*/
9968 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9969 ( NULL == pEventData->pCBfnc ))
9970 {
9971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009972 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009975 }
9976
9977 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9978 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9979 /*-------------------------------------------------------------------------
9980 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 -------------------------------------------------------------------------*/
9983 wpalMutexAcquire(&pWDICtx->wptMutex);
9984
9985 /*------------------------------------------------------------------------
9986 Find the BSS for which the request is made and identify WDI session
9987 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009988 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9989 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 &macBSSID))
9991 {
9992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009993 "This station does not exist in the WDI Station Table %d",
9994 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009997 }
9998
Jeff Johnsone7245742012-09-05 17:12:55 -07009999 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10000 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010001 {
10002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010003 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010004 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010005
10006 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010007 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010008 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010009
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 /*------------------------------------------------------------------------
10011 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010012 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 ------------------------------------------------------------------------*/
10014 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10015 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10017 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10018 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010019
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 }
10024
10025
10026 wpalMutexRelease(&pWDICtx->wptMutex);
10027 /*-----------------------------------------------------------------------
10028 Get message buffer
10029 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010030 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010031 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10032 &pSendBuffer, &usDataOffset, &usSendSize))||
10033 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10034 {
10035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010036 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010040 }
10041 /*-----------------------------------------------------------------------
10042 Copy the STA Key parameters into the HAL message
10043 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010044 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10046
Jeff Johnsone7245742012-09-05 17:12:55 -070010047 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010048 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10049
10050 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10051
10052 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10053
10054 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10055
Jeff Johnson295189b2012-06-20 16:38:30 -070010056 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10057 keyIndex++)
10058 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010059 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10061 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10062 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10063 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10064 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010065
10066 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10067 {
10068 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10069 {
10070 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10071 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10072 }
10073
10074 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10075 {
10076 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10077 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10078 }
10079
10080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10081 "%s: Negated Keys", __func__);
10082 }
10083 else
10084 {
10085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10086 "%s: No change in Keys", __func__);
10087 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010088 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010089 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010090 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10091 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10092 WDI_MAX_KEY_LENGTH);
10093 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010094 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010098 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010099 wpalMemoryCopy( pSendBuffer+usDataOffset,
10100 &halSetStaKeyReqMsg.setStaKeyParams,
10101 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010102
10103 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010104 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010105
10106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010107 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010108 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010109 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10110 wdiSetSTAKeyRspCb, pEventData->pUserData,
10111 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010112
10113}/*WDI_ProcessSetSTABcastKeyReq*/
10114
10115/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010116 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010117 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010118
10119 @param pWDICtx: pointer to the WLAN DAL context
10120 pEventData: pointer to the event information structure
10121
Jeff Johnson295189b2012-06-20 16:38:30 -070010122 @see
10123 @return Result of the function call
10124*/
10125WDI_Status
10126WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010127(
Jeff Johnson295189b2012-06-20 16:38:30 -070010128 WDI_ControlBlockType* pWDICtx,
10129 WDI_EventInfoType* pEventData
10130)
10131{
10132 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10133 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10134 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010135 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010136 wpt_uint16 usDataOffset = 0;
10137 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010138 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010139 wpt_macAddr macBSSID;
10140 wpt_uint8 ucCurrentBSSSesIdx;
10141 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10143
10144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010145 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010146 -------------------------------------------------------------------------*/
10147 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10148 ( NULL == pEventData->pCBfnc ))
10149 {
10150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010151 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010154 }
10155
10156 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10157 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10158 /*-------------------------------------------------------------------------
10159 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010160 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010161 -------------------------------------------------------------------------*/
10162 wpalMutexAcquire(&pWDICtx->wptMutex);
10163
10164 /*------------------------------------------------------------------------
10165 Find the BSS for which the request is made and identify WDI session
10166 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010167 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10168 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 &macBSSID))
10170 {
10171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010172 "This station does not exist in the WDI Station Table %d",
10173 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 }
10177
Jeff Johnsone7245742012-09-05 17:12:55 -070010178 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10179 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010180 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10182 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10183 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010184
10185 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010188
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 /*------------------------------------------------------------------------
10190 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010192 ------------------------------------------------------------------------*/
10193 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10194 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10196 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10197 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010198
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010201 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010202 }
10203
10204
10205
10206 wpalMutexRelease(&pWDICtx->wptMutex);
10207 /*-----------------------------------------------------------------------
10208 Get message buffer
10209 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010211 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10212 &pSendBuffer, &usDataOffset, &usSendSize))||
10213 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10214 {
10215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010216 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010220 }
10221
10222 /*-----------------------------------------------------------------------
10223 Copy the Key parameters into the HAL message
10224 -----------------------------------------------------------------------*/
10225
Jeff Johnsone7245742012-09-05 17:12:55 -070010226 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010227 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10228
Jeff Johnsone7245742012-09-05 17:12:55 -070010229 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010230 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10231
Jeff Johnsone7245742012-09-05 17:12:55 -070010232 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010233 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10234
Jeff Johnsone7245742012-09-05 17:12:55 -070010235 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10237
Jeff Johnsone7245742012-09-05 17:12:55 -070010238 wpalMemoryCopy( pSendBuffer+usDataOffset,
10239 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10240 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010241
10242 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010243 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010244
10245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010246 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010248 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010249 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010250 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010251
10252}/*WDI_ProcessRemoveSTABcastKeyReq*/
10253
10254/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010255 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010256==========================================================================*/
10257/**
10258 @brief Process Add TSpec Request function (called when Main FSM
10259 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010260
10261 @param pWDICtx: pointer to the WLAN DAL context
10262 pEventData: pointer to the event information structure
10263
Jeff Johnson295189b2012-06-20 16:38:30 -070010264 @see
10265 @return Result of the function call
10266*/
10267WDI_Status
10268WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010269(
Jeff Johnson295189b2012-06-20 16:38:30 -070010270 WDI_ControlBlockType* pWDICtx,
10271 WDI_EventInfoType* pEventData
10272)
10273{
10274 WDI_AddTSReqParamsType* pwdiAddTSParams;
10275 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010276 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010277 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010278 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010279 wpt_uint16 usDataOffset = 0;
10280 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010281 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010282 wpt_macAddr macBSSID;
10283 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010284
Jeff Johnson295189b2012-06-20 16:38:30 -070010285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10286
10287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010289 -------------------------------------------------------------------------*/
10290 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10291 ( NULL == pEventData->pCBfnc ))
10292 {
10293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010294 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 }
10298
10299 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10300 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10301 /*-------------------------------------------------------------------------
10302 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 -------------------------------------------------------------------------*/
10305 wpalMutexAcquire(&pWDICtx->wptMutex);
10306
10307 /*------------------------------------------------------------------------
10308 Find the BSS for which the request is made and identify WDI session
10309 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010310 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10311 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 &macBSSID))
10313 {
10314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010315 "This station does not exist in the WDI Station Table %d",
10316 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010317 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 }
10320
Jeff Johnsone7245742012-09-05 17:12:55 -070010321 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10322 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010323 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10325 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10326 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010327
10328 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010330 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010331
Jeff Johnson295189b2012-06-20 16:38:30 -070010332 /*------------------------------------------------------------------------
10333 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010334 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010335 ------------------------------------------------------------------------*/
10336 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10337 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10339 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10340 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010341
Jeff Johnsone7245742012-09-05 17:12:55 -070010342 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010343 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010344 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010345 }
10346
10347 wpalMutexRelease(&pWDICtx->wptMutex);
10348 /*-----------------------------------------------------------------------
10349 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010351 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010352 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10353 sizeof(halAddTsParams),
10354 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010355 &usSendSize))||
10356 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10357 {
10358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010359 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 }
10364
10365 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10366 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10367
10368 //TSPEC IE
10369 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10370 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010371 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010372 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010373 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010374 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010375 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010376 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010377 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010378 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010379 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010380 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010381 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010382 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010383 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010387 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010389 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010390 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010391 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010392 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010393 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010396 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010397 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010398 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010399 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010400 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10401
10402 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010403 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010404 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010405 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010407 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010408 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010409 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010410 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010411 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010413 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010414 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010415 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010416 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10417
10418 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010421 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010422 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10423
Jeff Johnsone7245742012-09-05 17:12:55 -070010424 wpalMemoryCopy( pSendBuffer+usDataOffset,
10425 &halAddTsParams,
10426 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010427
10428 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010430
10431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010433 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010434 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010435 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010436 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010437}/*WDI_ProcessAddTSpecReq*/
10438
10439
10440/**
10441 @brief Process Del TSpec Request function (called when Main FSM
10442 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010443
10444 @param pWDICtx: pointer to the WLAN DAL context
10445 pEventData: pointer to the event information structure
10446
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 @see
10448 @return Result of the function call
10449*/
10450WDI_Status
10451WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010452(
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 WDI_ControlBlockType* pWDICtx,
10454 WDI_EventInfoType* pEventData
10455)
10456{
10457 WDI_DelTSReqParamsType* pwdiDelTSParams;
10458 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010459 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010461 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010462 wpt_uint16 usDataOffset = 0;
10463 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010464 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10466
10467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010469 -------------------------------------------------------------------------*/
10470 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10471 ( NULL == pEventData->pCBfnc ))
10472 {
10473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010477 }
10478
10479 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10480 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10481
10482 /*-------------------------------------------------------------------------
10483 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010484 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 -------------------------------------------------------------------------*/
10486 wpalMutexAcquire(&pWDICtx->wptMutex);
10487
10488 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010489 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010490 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010491 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10492 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10493 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010494
Jeff Johnsone7245742012-09-05 17:12:55 -070010495 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010496 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10498 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10499 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10500
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010502 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010503 }
10504
10505 /*------------------------------------------------------------------------
10506 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010507 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010508 ------------------------------------------------------------------------*/
10509 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10510 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10512 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10513 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010514
Jeff Johnsone7245742012-09-05 17:12:55 -070010515 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010516 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010517 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 }
10519
10520
10521 wpalMutexRelease(&pWDICtx->wptMutex);
10522 /*-----------------------------------------------------------------------
10523 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010526 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10528 &pSendBuffer, &usDataOffset, &usSendSize))||
10529 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10530 {
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 set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
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
Jeff Johnsone7245742012-09-05 17:12:55 -070010538 wpalMemoryCopy( pSendBuffer+usDataOffset,
10539 &pwdiDelTSParams->wdiDelTSInfo,
10540 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010541
10542 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010544
10545 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010546 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010547 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010548 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10549 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010550}/*WDI_ProcessDelTSpecReq*/
10551
10552/**
10553 @brief Process Update EDCA Params Request function (called when
10554 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010555
10556 @param pWDICtx: pointer to the WLAN DAL context
10557 pEventData: pointer to the event information structure
10558
Jeff Johnson295189b2012-06-20 16:38:30 -070010559 @see
10560 @return Result of the function call
10561*/
10562WDI_Status
10563WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010564(
Jeff Johnson295189b2012-06-20 16:38:30 -070010565 WDI_ControlBlockType* pWDICtx,
10566 WDI_EventInfoType* pEventData
10567)
10568{
10569 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10570 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010571 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010572 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010573 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010574 wpt_uint16 usDataOffset = 0;
10575 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10578
10579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010581 -------------------------------------------------------------------------*/
10582 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10583 ( NULL == pEventData->pCBfnc ))
10584 {
10585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010589 }
10590
10591 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10592 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10593 /*-------------------------------------------------------------------------
10594 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010595 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010596 -------------------------------------------------------------------------*/
10597 wpalMutexAcquire(&pWDICtx->wptMutex);
10598
10599 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010600 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010602 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10603 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10604 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010605
Jeff Johnsone7245742012-09-05 17:12:55 -070010606 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010607 {
10608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010609 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10610 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010611
10612 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010613 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010614 }
10615
10616 /*------------------------------------------------------------------------
10617 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010618 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010619 ------------------------------------------------------------------------*/
10620 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10621 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10623 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10624 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010625
Jeff Johnsone7245742012-09-05 17:12:55 -070010626 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010627 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010628 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 }
10630
10631
10632 wpalMutexRelease(&pWDICtx->wptMutex);
10633 /*-----------------------------------------------------------------------
10634 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010635 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010636 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010637 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10639 &pSendBuffer, &usDataOffset, &usSendSize))||
10640 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10641 {
10642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010643 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010647 }
10648
Jeff Johnsone7245742012-09-05 17:12:55 -070010649 wpalMemoryCopy( pSendBuffer+usDataOffset,
10650 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10651 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010652
10653 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010654 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010655
10656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010657 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010658 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010659 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10660 wdiUpdateEDCARspCb, pEventData->pUserData,
10661 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010662}/*WDI_ProcessUpdateEDCAParamsReq*/
10663
10664/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010665 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010666 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010667
10668 @param pWDICtx: pointer to the WLAN DAL context
10669 pEventData: pointer to the event information structure
10670
Jeff Johnson295189b2012-06-20 16:38:30 -070010671 @see
10672 @return Result of the function call
10673*/
10674WDI_Status
10675WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010676(
Jeff Johnson295189b2012-06-20 16:38:30 -070010677 WDI_ControlBlockType* pWDICtx,
10678 WDI_EventInfoType* pEventData
10679)
10680{
10681 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10682 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010683 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010684 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010685 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010686 wpt_uint16 usDataOffset = 0;
10687 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 wpt_macAddr macBSSID;
10690
10691 tAddBASessionReqMsg halAddBASessionReq;
10692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10693
10694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 -------------------------------------------------------------------------*/
10697 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10698 ( NULL == pEventData->pCBfnc ))
10699 {
10700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010704 }
10705
Jeff Johnsone7245742012-09-05 17:12:55 -070010706 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010707 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010708 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10710 /*-------------------------------------------------------------------------
10711 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010712 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010713 -------------------------------------------------------------------------*/
10714 wpalMutexAcquire(&pWDICtx->wptMutex);
10715
10716 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010718 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10720 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010721 &macBSSID))
10722 {
10723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010724 "This station does not exist in the WDI Station Table %d",
10725 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010726 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010728 }
10729
10730
Jeff Johnsone7245742012-09-05 17:12:55 -070010731 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010732
Jeff Johnsone7245742012-09-05 17:12:55 -070010733 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010734 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10736 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10737 __func__, MAC_ADDR_ARRAY(macBSSID));
10738
Jeff Johnson295189b2012-06-20 16:38:30 -070010739 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010740 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 }
10742
10743 /*------------------------------------------------------------------------
10744 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010745 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 ------------------------------------------------------------------------*/
10747 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10748 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10750 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10751 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010752
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010754 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 }
10757
10758
10759 wpalMutexRelease(&pWDICtx->wptMutex);
10760 /*-----------------------------------------------------------------------
10761 Get message buffer
10762 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10764 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010765 sizeof(halAddBASessionReq.addBASessionParams),
10766 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010767 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10769 {
10770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010771 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010772 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010775 }
10776
10777 halAddBASessionReq.addBASessionParams.staIdx =
10778 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10779 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10780 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10781 WDI_MAC_ADDR_LEN);
10782 halAddBASessionReq.addBASessionParams.baTID =
10783 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10784 halAddBASessionReq.addBASessionParams.baPolicy =
10785 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10786 halAddBASessionReq.addBASessionParams.baBufferSize =
10787 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10788 halAddBASessionReq.addBASessionParams.baTimeout =
10789 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10790 halAddBASessionReq.addBASessionParams.baSSN =
10791 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10792 halAddBASessionReq.addBASessionParams.baDirection =
10793 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10794
Jeff Johnsone7245742012-09-05 17:12:55 -070010795 wpalMemoryCopy( pSendBuffer+usDataOffset,
10796 &halAddBASessionReq.addBASessionParams,
10797 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010798
10799 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010801
10802 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010803 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010804 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010805 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10806 wdiAddBASessionRspCb, pEventData->pUserData,
10807 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010808}/*WDI_ProcessAddBASessionReq*/
10809
10810/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010811 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010812 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010813
10814 @param pWDICtx: pointer to the WLAN DAL context
10815 pEventData: pointer to the event information structure
10816
Jeff Johnson295189b2012-06-20 16:38:30 -070010817 @see
10818 @return Result of the function call
10819*/
10820WDI_Status
10821WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010822(
Jeff Johnson295189b2012-06-20 16:38:30 -070010823 WDI_ControlBlockType* pWDICtx,
10824 WDI_EventInfoType* pEventData
10825)
10826{
10827 WDI_DelBAReqParamsType* pwdiDelBAParams;
10828 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010829 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010830 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010831 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 wpt_uint16 usDataOffset = 0;
10833 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010834 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 wpt_macAddr macBSSID;
10836 tDelBAParams halDelBAparam;
10837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10838
10839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010840 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010841 -------------------------------------------------------------------------*/
10842 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10843 ( NULL == pEventData->pCBfnc ))
10844 {
10845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010846 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010849 }
10850
10851 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10852 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10853 /*-------------------------------------------------------------------------
10854 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010855 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010856 -------------------------------------------------------------------------*/
10857 wpalMutexAcquire(&pWDICtx->wptMutex);
10858
10859 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010860 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010861 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10863 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010864 &macBSSID))
10865 {
10866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010867 "This station does not exist in the WDI Station Table %d",
10868 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010871 }
10872
Jeff Johnsone7245742012-09-05 17:12:55 -070010873 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010874
Jeff Johnsone7245742012-09-05 17:12:55 -070010875 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010876 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10878 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10879 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010880
10881 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010882 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010883 }
10884
10885 /*------------------------------------------------------------------------
10886 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010887 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010888 ------------------------------------------------------------------------*/
10889 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10890 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10892 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10893 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010894
Jeff Johnsone7245742012-09-05 17:12:55 -070010895 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010897 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010898 }
10899
10900 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010901 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010902 sizeof(halDelBAparam),
10903 &pSendBuffer, &usDataOffset, &usSendSize))||
10904 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10905 {
10906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010907 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010908 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10909 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 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10914 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10915 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10916
Jeff Johnsone7245742012-09-05 17:12:55 -070010917 wpalMemoryCopy( pSendBuffer+usDataOffset,
10918 &halDelBAparam,
10919 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010920
10921 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010923
10924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10928 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010929}/*WDI_ProcessDelBAReq*/
10930
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010931#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010932
10933WDI_Status
10934WDI_ProcessTSMStatsReq
10935(
10936 WDI_ControlBlockType* pWDICtx,
10937 WDI_EventInfoType* pEventData
10938)
10939{
10940 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10941 WDI_TsmRspCb wdiTSMRspCb;
10942 wpt_uint8 ucCurrentBSSSesIdx = 0;
10943 WDI_BSSSessionType* pBSSSes = NULL;
10944 wpt_uint8* pSendBuffer = NULL;
10945 wpt_uint16 usDataOffset = 0;
10946 wpt_uint16 usSendSize = 0;
10947 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10948 tTsmStatsParams halTsmStatsReqParams = {0};
10949
10950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10951
10952 /*-------------------------------------------------------------------------
10953 Sanity check
10954 -------------------------------------------------------------------------*/
10955 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10956 ( NULL == pEventData->pCBfnc ))
10957 {
10958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010959 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010960 WDI_ASSERT(0);
10961 return WDI_STATUS_E_FAILURE;
10962 }
10963
10964 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10965 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10966 /*-------------------------------------------------------------------------
10967 Check to see if we are in the middle of an association, if so queue, if
10968 not it means it is free to process request
10969 -------------------------------------------------------------------------*/
10970 wpalMutexAcquire(&pWDICtx->wptMutex);
10971
10972 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10973 if ( NULL == pBSSSes )
10974 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10976 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10977 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010978
10979 wpalMutexRelease(&pWDICtx->wptMutex);
10980 return WDI_STATUS_E_NOT_ALLOWED;
10981 }
10982
10983 /*------------------------------------------------------------------------
10984 Check if this BSS is being currently processed or queued,
10985 if queued - queue the new request as well
10986 ------------------------------------------------------------------------*/
10987 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10988 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010990 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010991 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010992
10993 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10994 wpalMutexRelease(&pWDICtx->wptMutex);
10995 return wdiStatus;
10996 }
10997
10998 wpalMutexRelease(&pWDICtx->wptMutex);
10999 /*-----------------------------------------------------------------------
11000 Get message buffer
11001 ! TO DO : proper conversion into the HAL Message Request Format
11002 -----------------------------------------------------------------------*/
11003 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11004 sizeof(halTsmStatsReqParams),
11005 &pSendBuffer, &usDataOffset, &usSendSize))||
11006 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11007 {
11008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011009 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011010 pEventData, pwdiTSMParams, wdiTSMRspCb);
11011 WDI_ASSERT(0);
11012 return WDI_STATUS_E_FAILURE;
11013 }
11014
11015 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11016 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11017 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11018 WDI_MAC_ADDR_LEN);
11019 wpalMemoryCopy( pSendBuffer+usDataOffset,
11020 &halTsmStatsReqParams,
11021 sizeof(halTsmStatsReqParams));
11022
11023 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11024 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11025
11026 /*-------------------------------------------------------------------------
11027 Send TSM Stats Request to HAL
11028 -------------------------------------------------------------------------*/
11029 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11030 wdiTSMRspCb, pEventData->pUserData,
11031 WDI_TSM_STATS_RESP);
11032}/*WDI_ProcessTSMStatsReq*/
11033
11034#endif
11035
11036
11037/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011038 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011039 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011040
11041 @param pWDICtx: pointer to the WLAN DAL context
11042 pEventData: pointer to the event information structure
11043
Jeff Johnson295189b2012-06-20 16:38:30 -070011044 @see
11045 @return Result of the function call
11046*/
11047WDI_Status
11048WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011049(
Jeff Johnson295189b2012-06-20 16:38:30 -070011050 WDI_ControlBlockType* pWDICtx,
11051 WDI_EventInfoType* pEventData
11052)
11053{
11054 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11055 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011056 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011057 wpt_uint16 usDataOffset = 0;
11058 wpt_uint16 usSendSize = 0;
11059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11060
11061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011062 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011063 -------------------------------------------------------------------------*/
11064 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11065 ( NULL == pEventData->pCBfnc ))
11066 {
11067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011068 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011071 }
11072
11073 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11074 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11075 /*-----------------------------------------------------------------------
11076 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011077 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011078 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011079 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11081 &pSendBuffer, &usDataOffset, &usSendSize))||
11082 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11083 {
11084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011085 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011086 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011089 }
11090
Jeff Johnsone7245742012-09-05 17:12:55 -070011091 wpalMemoryCopy( pSendBuffer+usDataOffset,
11092 &pwdiFlushAcParams->wdiFlushAcInfo,
11093 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011094
11095 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011096 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011097
11098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011099 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011100 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011101 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11102 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011103}/*WDI_ProcessFlushAcReq*/
11104
11105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011106 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011107 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011108
11109 @param pWDICtx: pointer to the WLAN DAL context
11110 pEventData: pointer to the event information structure
11111
Jeff Johnson295189b2012-06-20 16:38:30 -070011112 @see
11113 @return Result of the function call
11114*/
11115WDI_Status
11116WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011117(
Jeff Johnson295189b2012-06-20 16:38:30 -070011118 WDI_ControlBlockType* pWDICtx,
11119 WDI_EventInfoType* pEventData
11120)
11121{
11122 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11123 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011124 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011125 wpt_uint16 usDataOffset = 0;
11126 wpt_uint16 usSendSize = 0;
11127
11128 tBtAmpEventMsg haltBtAmpEventMsg;
11129 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11130
11131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011132 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011133 -------------------------------------------------------------------------*/
11134 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11135 ( NULL == pEventData->pCBfnc ))
11136 {
11137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011138 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011139 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011140 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011141 }
11142
11143 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11144 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11145 /*-----------------------------------------------------------------------
11146 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011147 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011148 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011149 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011150 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11151 &pSendBuffer, &usDataOffset, &usSendSize))||
11152 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11153 {
11154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011155 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011156 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011159 }
11160
Jeff Johnsone7245742012-09-05 17:12:55 -070011161 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011162 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011163 wpalMemoryCopy( pSendBuffer+usDataOffset,
11164 &haltBtAmpEventMsg.btAmpEventParams,
11165 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011166
11167 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011169
11170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011171 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011172 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011173 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11174 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011175}/*WDI_ProcessBtAmpEventReq*/
11176
11177/**
11178 @brief Process Add STA self Request function (called when Main FSM
11179 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011180
11181 @param pWDICtx: pointer to the WLAN DAL context
11182 pEventData: pointer to the event information structure
11183
Jeff Johnson295189b2012-06-20 16:38:30 -070011184 @see
11185 @return Result of the function call
11186*/
11187WDI_Status
11188WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011189(
Jeff Johnson295189b2012-06-20 16:38:30 -070011190 WDI_ControlBlockType* pWDICtx,
11191 WDI_EventInfoType* pEventData
11192)
11193{
11194 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11195 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011196 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011197 wpt_uint16 usDataOffset = 0;
11198 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011199 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11201
11202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011203 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 -------------------------------------------------------------------------*/
11205 if (( NULL == pEventData ) ||
11206 ( NULL == pEventData->pEventData) ||
11207 ( NULL == pEventData->pCBfnc))
11208 {
11209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011210 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011211 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011213 }
11214
Jeff Johnsone7245742012-09-05 17:12:55 -070011215 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011216 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011217 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011218 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11219 /*-----------------------------------------------------------------------
11220 Get message buffer
11221 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011222 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11223 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011224 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011225 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011226 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011227 {
11228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011229 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011230 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011233 }
11234
11235 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011236 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011237 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11238
Jeff Johnsone7245742012-09-05 17:12:55 -070011239 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011240 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11241 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11242 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11243 {
11244 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11245 }
11246 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11247 VOS_P2P_CLIENT_MODE) ||
11248 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11249 VOS_P2P_DEVICE))
11250 {
11251 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11252 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011253 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011254 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011255
11256 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011257 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011258
11259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011260 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011261 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011262 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11263 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11264 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011265}/*WDI_ProcessAddSTASelfReq*/
11266
11267
11268
11269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011270 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011271 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011272
11273 @param pWDICtx: pointer to the WLAN DAL context
11274 pEventData: pointer to the event information structure
11275
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 @see
11277 @return Result of the function call
11278*/
11279WDI_Status
11280WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011281(
Jeff Johnson295189b2012-06-20 16:38:30 -070011282 WDI_ControlBlockType* pWDICtx,
11283 WDI_EventInfoType* pEventData
11284)
11285{
11286 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11287 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011288 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011289 wpt_uint16 usDataOffset = 0;
11290 wpt_uint16 usSendSize = 0;
11291 tDelStaSelfParams halSetDelSelfSTAParams;
11292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11293
11294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011295 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011296 -------------------------------------------------------------------------*/
11297 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11298 ( NULL == pEventData->pCBfnc ))
11299 {
11300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011304 }
11305
Jeff Johnsone7245742012-09-05 17:12:55 -070011306 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011307 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11308 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11309
11310 /*-----------------------------------------------------------------------
11311 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011312 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011313 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011314 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011315 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11316 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011317 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011318 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11319 {
11320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011321 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011322 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011325 }
11326
Jeff Johnsone7245742012-09-05 17:12:55 -070011327 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011328 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11329
Jeff Johnsone7245742012-09-05 17:12:55 -070011330 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11331 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011332
11333 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011334 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011335
11336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011339 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11340 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011341 WDI_DEL_STA_SELF_RESP);
11342
11343}
11344
Jeff Johnsone7245742012-09-05 17:12:55 -070011345#ifdef FEATURE_OEM_DATA_SUPPORT
11346/**
11347 @brief Process Start Oem Data Request function (called when Main
11348 FSM allows it)
11349
11350 @param pWDICtx: pointer to the WLAN DAL context
11351 pEventData: pointer to the event information structure
11352
11353 @see
11354 @return Result of the function call
11355*/
11356WDI_Status
11357WDI_ProcessStartOemDataReq
11358(
11359 WDI_ControlBlockType* pWDICtx,
11360 WDI_EventInfoType* pEventData
11361)
11362{
11363 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11364 WDI_oemDataRspCb wdiOemDataRspCb;
11365 wpt_uint8* pSendBuffer = NULL;
11366 wpt_uint16 usDataOffset = 0;
11367 wpt_uint16 usSendSize = 0;
11368 wpt_uint16 reqLen;
11369 tStartOemDataReqParams* halStartOemDataReqParams;
11370
11371 /*-------------------------------------------------------------------------
11372 Sanity check
11373 -------------------------------------------------------------------------*/
11374 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11375 ( NULL == pEventData->pCBfnc ))
11376 {
11377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011378 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 WDI_ASSERT(0);
11380 return WDI_STATUS_E_FAILURE;
11381 }
11382
11383 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11384 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11385
11386 /*-----------------------------------------------------------------------
11387 Get message buffer
11388 -----------------------------------------------------------------------*/
11389
11390 reqLen = sizeof(tStartOemDataReqParams);
11391
11392 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11393 WDI_START_OEM_DATA_REQ, reqLen,
11394 &pSendBuffer, &usDataOffset, &usSendSize))||
11395 (usSendSize < (usDataOffset + reqLen)))
11396 {
11397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011398 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011399 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11400 WDI_ASSERT(0);
11401 return WDI_STATUS_E_FAILURE;
11402 }
11403
11404 //copying WDI OEM DATA REQ PARAMS to shared memory
11405 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11406
11407 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11408 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11409
11410 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11411 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11412
11413 /*-------------------------------------------------------------------------
11414 Send Start Request to HAL
11415 -------------------------------------------------------------------------*/
11416 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11417 wdiOemDataRspCb, pEventData->pUserData,
11418 WDI_START_OEM_DATA_RESP);
11419}/*WDI_ProcessStartOemDataReq*/
11420#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011421
11422/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011423 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011424 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011425
11426 @param pWDICtx: pointer to the WLAN DAL context
11427 pEventData: pointer to the event information structure
11428
Jeff Johnson295189b2012-06-20 16:38:30 -070011429 @see
11430 @return Result of the function call
11431*/
11432WDI_Status
11433WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011434(
Jeff Johnson295189b2012-06-20 16:38:30 -070011435 WDI_ControlBlockType* pWDICtx,
11436 WDI_EventInfoType* pEventData
11437)
11438{
11439 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11440 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011441 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011442 wpt_uint16 usDataOffset = 0;
11443 wpt_uint16 usSendSize = 0;
11444 tHalWlanHostResumeReqParam halResumeReqParams;
11445
11446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11447
11448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011450 -------------------------------------------------------------------------*/
11451 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11452 ( NULL == pEventData->pCBfnc ))
11453 {
11454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011455 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011458 }
11459
11460 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11461 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11462
11463 /*-----------------------------------------------------------------------
11464 Get message buffer
11465 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011466 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11468 &pSendBuffer, &usDataOffset, &usSendSize))||
11469 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11470 {
11471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011472 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011476 }
11477
Jeff Johnsone7245742012-09-05 17:12:55 -070011478 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011479 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011480
11481 wpalMemoryCopy( pSendBuffer+usDataOffset,
11482 &halResumeReqParams,
11483 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011484
11485 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011486 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011487
11488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011489 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011490 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011491 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11492 wdiHostResumeRspCb, pEventData->pUserData,
11493 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011494}/*WDI_ProcessHostResumeReq*/
11495
11496/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011497 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011498 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011499
11500 @param pWDICtx: pointer to the WLAN DAL context
11501 pEventData: pointer to the event information structure
11502
Jeff Johnson295189b2012-06-20 16:38:30 -070011503 @see
11504 @return Result of the function call
11505*/
11506WDI_Status
11507WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011508(
Jeff Johnson295189b2012-06-20 16:38:30 -070011509 WDI_ControlBlockType* pWDICtx,
11510 WDI_EventInfoType* pEventData
11511)
11512{
11513 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11514 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011515 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011516 wpt_uint16 usDataOffset = 0;
11517 wpt_uint16 usSendSize = 0;
11518 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11520
11521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011522 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011523 -------------------------------------------------------------------------*/
11524 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11525 ( NULL == pEventData->pCBfnc ))
11526 {
11527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011528 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011529 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011530 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011531 }
11532
11533 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11534 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011535
Jeff Johnson295189b2012-06-20 16:38:30 -070011536 /*-----------------------------------------------------------------------
11537 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011538 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011539 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 sizeof(halTxPerTrackingReqParam),
11542 &pSendBuffer, &usDataOffset, &usSendSize))||
11543 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11544 {
11545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011546 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011551
Jeff Johnson295189b2012-06-20 16:38:30 -070011552 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11553 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11554 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11555 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011556
11557 wpalMemoryCopy( pSendBuffer+usDataOffset,
11558 &halTxPerTrackingReqParam,
11559 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011560
11561 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011562 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011563
11564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011565 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011566 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11568 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011569}/*WDI_ProcessSetTxPerTrackingReq*/
11570
11571/*=========================================================================
11572 Indications
11573=========================================================================*/
11574
11575/**
11576 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011577
11578 @param pWDICtx: pointer to the WLAN DAL context
11579 pEventData: pointer to the event information structure
11580
Jeff Johnson295189b2012-06-20 16:38:30 -070011581 @see
11582 @return Result of the function call
11583*/
11584WDI_Status
11585WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011586(
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 WDI_ControlBlockType* pWDICtx,
11588 WDI_EventInfoType* pEventData
11589)
11590{
11591 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011592 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011593 wpt_uint16 usDataOffset = 0;
11594 wpt_uint16 usSendSize = 0;
11595 WDI_Status wdiStatus;
11596 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11597 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11598
11599 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011600 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 -------------------------------------------------------------------------*/
11602 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11603 {
11604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011605 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011608 }
11609
11610 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11611
11612 /*-----------------------------------------------------------------------
11613 Get message buffer
11614 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011615 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11616 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011617 sizeof(halWlanSuspendIndparams),
11618 &pSendBuffer, &usDataOffset, &usSendSize))||
11619 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11620 {
11621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11622 "Unable to get send buffer in Suspend Ind ");
11623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011625 }
11626
11627 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11628 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11629
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011631 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011632
Jeff Johnsone7245742012-09-05 17:12:55 -070011633 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11634 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011635
11636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011637 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011638 -------------------------------------------------------------------------*/
11639 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011640 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011641
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011643 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11644}/*WDI_ProcessHostSuspendInd*/
11645
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011646
11647
11648/**
11649 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11650
11651 @param pWDICtx: pointer to the WLAN DAL context
11652 pEventData: pointer to the event information structure
11653
11654 @see
11655 @return Result of the function call
11656*/
11657WDI_Status
11658WDI_ProcessTrafficStatsInd
11659(
11660 WDI_ControlBlockType* pWDICtx,
11661 WDI_EventInfoType* pEventData
11662)
11663{
11664 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11665 wpt_uint8* pSendBuffer = NULL;
11666 wpt_uint16 usDataOffset = 0;
11667 wpt_uint16 usSendSize = 0;
11668 WDI_Status wdiStatus;
11669 tStatsClassBIndParams* pStatsClassBIndParams;
11670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11671
11672 /*-------------------------------------------------------------------------
11673 Sanity check
11674 -------------------------------------------------------------------------*/
11675 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11676 {
11677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11678 "%s: Invalid parameters in Traffic Stats ind",__func__);
11679 WDI_ASSERT(0);
11680 return WDI_STATUS_E_FAILURE;
11681 }
11682
11683 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11684
11685 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11686 {
11687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11688 "%s: Invalid parameters in Traffic Stats ind",__func__);
11689 WDI_ASSERT(0);
11690 return WDI_STATUS_E_FAILURE;
11691 }
11692
11693 /*-----------------------------------------------------------------------
11694 Get message buffer
11695 -----------------------------------------------------------------------*/
11696 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11697 WDI_TRAFFIC_STATS_IND,
11698 sizeof(tStatsClassBIndParams),
11699 &pSendBuffer, &usDataOffset, &usSendSize))||
11700 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11701 {
11702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11703 "Unable to get send buffer in Traffic Stats Ind ");
11704 WDI_ASSERT(0);
11705 return WDI_STATUS_E_FAILURE;
11706 }
11707
11708 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11709
11710 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11711
11712 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11713 pTrafficStatsIndParams->pTrafficStats,
11714 pTrafficStatsIndParams->length);
11715
11716 /*-------------------------------------------------------------------------
11717 Send Suspend Request to HAL
11718 -------------------------------------------------------------------------*/
11719 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11720 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11721
11722 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11723 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11724}/*WDI_ProcessTrafficStatsInd*/
11725
Chet Lanctot186b5732013-03-18 10:26:30 -070011726#ifdef WLAN_FEATURE_11W
11727/**
11728 @brief Process Exclude Unencrypted Indications function (called
11729 when Main FSM allows it)
11730
11731 @param pWDICtx: pointer to the WLAN DAL context
11732 pEventData: pointer to the event information structure
11733
11734 @see
11735 @return Result of the function call
11736*/
11737WDI_Status
11738WDI_ProcessExcludeUnencryptInd
11739(
11740 WDI_ControlBlockType* pWDICtx,
11741 WDI_EventInfoType* pEventData
11742)
11743{
11744 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11745 wpt_uint8* pSendBuffer = NULL;
11746 wpt_uint16 usDataOffset = 0;
11747 wpt_uint16 usSendSize = 0;
11748 WDI_Status wdiStatus;
11749 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11751
11752 /*-------------------------------------------------------------------------
11753 Sanity check
11754 -------------------------------------------------------------------------*/
11755 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11756 {
11757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11758 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11759 WDI_ASSERT(0);
11760 return WDI_STATUS_E_FAILURE;
11761 }
11762
11763 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11764
11765 /*-----------------------------------------------------------------------
11766 Get message buffer
11767 -----------------------------------------------------------------------*/
11768 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11769 WDI_EXCLUDE_UNENCRYPTED_IND,
11770 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11771 &pSendBuffer, &usDataOffset, &usSendSize))||
11772 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11773 {
11774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11775 "Unable to get send buffer in Exclude Unencrypted Ind ");
11776 WDI_ASSERT(0);
11777 return WDI_STATUS_E_FAILURE;
11778 }
11779
11780 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11781
11782 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11783
11784 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11785 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11786
11787 /*-------------------------------------------------------------------------
11788 Send Suspend Request to HAL
11789 -------------------------------------------------------------------------*/
11790 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11791 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11792
11793 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11794 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11795}/*WDI_ProcessExcludeUnencryptInd*/
11796#endif
11797
Yue Mab9c86f42013-08-14 15:59:08 -070011798/**
11799 @brief Process Add Periodic Tx Pattern Indication function (called when
11800 Main FSM allows it)
11801
11802 @param pWDICtx: pointer to the WLAN DAL context
11803 pEventData: pointer to the event information structure
11804
11805 @see
11806 @return Result of the function call
11807*/
11808WDI_Status
11809WDI_ProcessAddPeriodicTxPtrnInd
11810(
11811 WDI_ControlBlockType* pWDICtx,
11812 WDI_EventInfoType* pEventData
11813)
11814{
11815 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11816 wpt_uint8* pSendBuffer = NULL;
11817 wpt_uint16 usDataOffset = 0;
11818 wpt_uint16 usSendSize = 0;
11819 WDI_Status wdiStatus;
11820 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11821 wpt_uint8 selfStaIdx = 0;
11822
11823 /*-------------------------------------------------------------------------
11824 Sanity check
11825 -------------------------------------------------------------------------*/
11826 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11827 {
11828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11829 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11830 WDI_ASSERT(0);
11831 return WDI_STATUS_E_FAILURE;
11832 }
11833
11834 pAddPeriodicTxPtrnParams =
11835 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11836
11837 /*------------------------------------------------------------------------
11838 Get message buffer
11839 ------------------------------------------------------------------------*/
11840 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11841 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11842 &pSendBuffer, &usDataOffset, &usSendSize))||
11843 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11844 {
11845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11846 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11847 __func__);
11848 WDI_ASSERT(0);
11849 return WDI_STATUS_E_FAILURE;
11850 }
11851
11852 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11853
11854 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11855 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11856 &selfStaIdx))
11857 {
11858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11859 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011860 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011861
11862 return WDI_STATUS_E_FAILURE;
11863 }
11864
11865 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11866 halAddPeriodicTxPtrn->ucPtrnId =
11867 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11868 halAddPeriodicTxPtrn->usPtrnSize =
11869 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11870 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11871 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11872
11873 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11874 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11875 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11876
11877 /*-------------------------------------------------------------------------
11878 Send Indication to HAL
11879 -------------------------------------------------------------------------*/
11880 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11881 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11882
11883 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11884
11885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11886 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11887
11888 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11889} /* WDI_ProcessAddPeriodicTxPtrnInd */
11890
11891/**
11892 @brief Process Delete Periodic Tx Pattern Indication function (called when
11893 Main FSM allows it)
11894
11895 @param pWDICtx: pointer to the WLAN DAL context
11896 pEventData: pointer to the event information structure
11897
11898 @see
11899 @return Result of the function call
11900*/
11901WDI_Status
11902WDI_ProcessDelPeriodicTxPtrnInd
11903(
11904 WDI_ControlBlockType* pWDICtx,
11905 WDI_EventInfoType* pEventData
11906)
11907{
11908 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11909 wpt_uint8* pSendBuffer = NULL;
11910 wpt_uint16 usDataOffset = 0;
11911 wpt_uint16 usSendSize = 0;
11912 WDI_Status wdiStatus;
11913 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11914 wpt_uint8 selfStaIdx = 0;
11915
11916 /*-------------------------------------------------------------------------
11917 Sanity check
11918 -------------------------------------------------------------------------*/
11919 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11920 {
11921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11922 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11923 WDI_ASSERT(0);
11924 return WDI_STATUS_E_FAILURE;
11925 }
11926
11927 pDelPeriodicTxPtrnParams =
11928 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11929
11930 /*------------------------------------------------------------------------
11931 Get message buffer
11932 ------------------------------------------------------------------------*/
11933 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11934 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11935 &pSendBuffer, &usDataOffset, &usSendSize))||
11936 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11937 {
11938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11939 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11940 __func__);
11941 WDI_ASSERT(0);
11942 return WDI_STATUS_E_FAILURE;
11943 }
11944
11945 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11946
11947 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11948 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11949 &selfStaIdx))
11950 {
11951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11952 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011953 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011954
11955 return WDI_STATUS_E_FAILURE;
11956 }
11957
11958 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11959 halDelPeriodicTxPtrn->uPatternIdBitmap =
11960 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11961
11962 /*-------------------------------------------------------------------------
11963 Send Indication to HAL
11964 -------------------------------------------------------------------------*/
11965 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11966 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11967
11968 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11969
11970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11971 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11972
11973 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11974} /* WDI_ProcessDelPeriodicTxPtrnInd */
11975
Jeff Johnson295189b2012-06-20 16:38:30 -070011976/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011978==========================================================================*/
11979/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011980 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011982
11983 @param pWDICtx: pointer to the WLAN DAL context
11984 pEventData: pointer to the event information structure
11985
Jeff Johnson295189b2012-06-20 16:38:30 -070011986 @see
11987 @return Result of the function call
11988*/
11989WDI_Status
11990WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011991(
Jeff Johnson295189b2012-06-20 16:38:30 -070011992 WDI_ControlBlockType* pWDICtx,
11993 WDI_EventInfoType* pEventData
11994)
11995{
11996 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11997 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011998 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011999 wpt_uint16 usDataOffset = 0;
12000 wpt_uint16 usSendSize = 0;
12001 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12003
12004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012006 -------------------------------------------------------------------------*/
12007 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12008 ( NULL == pEventData->pCBfnc ))
12009 {
12010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012014 }
12015
12016 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12017 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12018 /*-----------------------------------------------------------------------
12019 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012021 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012022 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 sizeof(halSwitchChannelReq.switchChannelParams),
12024 &pSendBuffer, &usDataOffset, &usSendSize))||
12025 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12026 {
12027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012028 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012029 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012032 }
12033
Jeff Johnsone7245742012-09-05 17:12:55 -070012034 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012035 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012036#ifndef WLAN_FEATURE_VOWIFI
12037 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012038 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12039#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12042
12043#ifdef WLAN_FEATURE_VOWIFI
12044 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12047 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12048 WDI_MAC_ADDR_LEN);
12049 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12050 pwdiSwitchChParams->wdiChInfo.macBSSId,
12051 WDI_MAC_ADDR_LEN);
12052#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012053 wpalMemoryCopy( pSendBuffer+usDataOffset,
12054 &halSwitchChannelReq.switchChannelParams,
12055 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012056
12057 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012058 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012059
12060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012061 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012062 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012063 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12064 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012065}/*WDI_ProcessChannelSwitchReq*/
12066
12067/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012068 @brief Process Channel Switch Request function (called when
12069 Main FSM allows it)
12070
12071 @param pWDICtx: pointer to the WLAN DAL context
12072 pEventData: pointer to the event information structure
12073
12074 @see
12075 @return Result of the function call
12076*/
12077WDI_Status WDI_ProcessChannelSwitchReq_V1
12078(
12079 WDI_ControlBlockType* pWDICtx,
12080 WDI_EventInfoType* pEventData
12081)
12082{
12083 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12084 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12085 wpt_uint8* pSendBuffer = NULL;
12086 wpt_uint16 usDataOffset = 0;
12087 wpt_uint16 usSendSize = 0;
12088 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12090
12091 /*-------------------------------------------------------------------------
12092 Sanity check
12093 -------------------------------------------------------------------------*/
12094 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12095 ( NULL == pEventData->pCBfnc ))
12096 {
12097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12098 "%s: Invalid parameters", __func__);
12099 WDI_ASSERT(0);
12100 return WDI_STATUS_E_FAILURE;
12101 }
12102
12103 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12104 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12105 /*-----------------------------------------------------------------------
12106 Get message buffer
12107 ! TO DO : proper conversion into the HAL Message Request Format
12108 -----------------------------------------------------------------------*/
12109 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12110 WDI_CH_SWITCH_REQ_V1,
12111 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12112 &pSendBuffer, &usDataOffset, &usSendSize))||
12113 ( usSendSize < (usDataOffset +
12114 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12115 {
12116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12117 "Unable to get send buffer in channel switch req %p %p %p",
12118 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12119 WDI_ASSERT(0);
12120 return WDI_STATUS_E_FAILURE;
12121 }
12122
12123 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12124 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12125
12126 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12127 pwdiSwitchChParams->wdiChInfo.ucChannel;
12128#ifndef WLAN_FEATURE_VOWIFI
12129 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12130 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12131#endif
12132 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12133 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12134
12135#ifdef WLAN_FEATURE_VOWIFI
12136 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12137 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12138 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12139 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12140 WDI_MAC_ADDR_LEN);
12141 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12142 pwdiSwitchChParams->wdiChInfo.macBSSId,
12143 WDI_MAC_ADDR_LEN);
12144#endif
12145 wpalMemoryCopy( pSendBuffer+usDataOffset,
12146 &halSwitchChannelReq.switchChannelParams_V1,
12147 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12148
12149 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12150 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12151
12152 /*-------------------------------------------------------------------------
12153 Send Switch Channel Request to HAL
12154 -------------------------------------------------------------------------*/
12155 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12156 wdiSwitchChRspCb, pEventData->pUserData,
12157 WDI_CH_SWITCH_RESP_V1);
12158}/*WDI_ProcessChannelSwitchReq_V1*/
12159
12160/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012161 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012162 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012163
12164 @param pWDICtx: pointer to the WLAN DAL context
12165 pEventData: pointer to the event information structure
12166
Jeff Johnson295189b2012-06-20 16:38:30 -070012167 @see
12168 @return Result of the function call
12169*/
12170WDI_Status
12171WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012172(
Jeff Johnson295189b2012-06-20 16:38:30 -070012173 WDI_ControlBlockType* pWDICtx,
12174 WDI_EventInfoType* pEventData
12175)
12176{
12177 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12178 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012179 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012180 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012181 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 wpt_uint16 usDataOffset = 0;
12183 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012184 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012185
Jeff Johnsone7245742012-09-05 17:12:55 -070012186 tConfigStaReqMsg halConfigStaReqMsg;
12187 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12189
12190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012191 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012192 -------------------------------------------------------------------------*/
12193 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12194 ( NULL == pEventData->pCBfnc ))
12195 {
12196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012197 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012198 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012200 }
12201
Abhishek Singh6927fa02014-06-27 17:19:55 +053012202 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012203 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12204 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12205 /*-------------------------------------------------------------------------
12206 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 -------------------------------------------------------------------------*/
12209 wpalMutexAcquire(&pWDICtx->wptMutex);
12210
12211 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012212 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012213 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012214 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12215 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12216 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012217
Jeff Johnsone7245742012-09-05 17:12:55 -070012218 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012219 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12221 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12222 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012223
12224 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012225 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012226 }
12227
12228 /*------------------------------------------------------------------------
12229 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012230 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012231 ------------------------------------------------------------------------*/
12232 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12233 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12235 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12236 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012237
Jeff Johnsone7245742012-09-05 17:12:55 -070012238 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012239 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012240 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012241 }
12242
12243 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012244
12245 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12246#ifdef WLAN_FEATURE_11AC
12247 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012248 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012249 else
12250#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012251 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012252
Jeff Johnson295189b2012-06-20 16:38:30 -070012253 /*-----------------------------------------------------------------------
12254 Get message buffer
12255 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12257 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012258 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012259 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012260 {
12261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012262 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012263 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12264 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012266 }
12267
12268 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012269 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012270 &pwdiConfigSTAParams->wdiReqInfo);
12271
12272 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12273 {
12274 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012275 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012276 WDI_STATableFindStaidByAddr(pWDICtx,
12277 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012278 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012279 {
12280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012281 MAC_ADDRESS_STR
12282 ": This station does not exist in the WDI Station Table",
12283 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012284 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012285 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012287 }
12288 }
12289 else
12290 {
12291 /* Need to fill in the STA Index to invalid, since at this point we have not
12292 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012293 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012294 }
12295
12296 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012298
Jeff Johnsone7245742012-09-05 17:12:55 -070012299 wpalMemoryCopy( pSendBuffer+usDataOffset,
12300 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012301 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012302
12303 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012304 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012305
Jeff Johnsone7245742012-09-05 17:12:55 -070012306 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12307 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 sizeof(pWDICtx->wdiCachedConfigStaReq));
12309
12310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012312 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012313 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12314 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012315}/*WDI_ProcessConfigStaReq*/
12316
12317
12318/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012321
12322 @param pWDICtx: pointer to the WLAN DAL context
12323 pEventData: pointer to the event information structure
12324
Jeff Johnson295189b2012-06-20 16:38:30 -070012325 @see
12326 @return Result of the function call
12327*/
12328WDI_Status
12329WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012330(
Jeff Johnson295189b2012-06-20 16:38:30 -070012331 WDI_ControlBlockType* pWDICtx,
12332 WDI_EventInfoType* pEventData
12333)
12334{
12335 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12336 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012337 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012338 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012339 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 wpt_uint16 usDataOffset = 0;
12341 wpt_uint16 usSendSize = 0;
12342 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012343 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12345
12346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012348 -------------------------------------------------------------------------*/
12349 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12350 ( NULL == pEventData->pCBfnc ))
12351 {
12352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012353 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012356 }
12357
12358 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12359 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12360 /*-------------------------------------------------------------------------
12361 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012362 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012363 -------------------------------------------------------------------------*/
12364 wpalMutexAcquire(&pWDICtx->wptMutex);
12365
12366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012367 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012368 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012369 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12370 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12371 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012372
Jeff Johnsone7245742012-09-05 17:12:55 -070012373 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012374 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012376 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12377 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012378 }
12379 else
12380 {
12381 /*------------------------------------------------------------------------
12382 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012383 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 ------------------------------------------------------------------------*/
12385 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12386 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12388 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12389 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12390
12391 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012393 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012394 }
12395 }
12396 /* If the link is set to enter IDLE - the Session allocated for this BSS
12397 will be deleted on the Set Link State response coming from HAL
12398 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012400 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12401
12402 wpalMutexRelease(&pWDICtx->wptMutex);
12403 /*-----------------------------------------------------------------------
12404 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012405 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012406 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012407
12408 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012409 sizeof(halLinkStateReqMsg),
12410 &pSendBuffer, &usDataOffset, &usSendSize))||
12411 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12412 {
12413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012414 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012415 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012418 }
12419
12420 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12421 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12422
12423 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12424 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12425
Jeff Johnsone7245742012-09-05 17:12:55 -070012426 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012427 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12428
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 wpalMemoryCopy( pSendBuffer+usDataOffset,
12430 &halLinkStateReqMsg,
12431 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012432
12433 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012434 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012435
12436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012437 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012438 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012439 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12440 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012441}/*WDI_ProcessSetLinkStateReq*/
12442
12443
12444/**
12445 @brief Process Get Stats Request function (called when Main FSM
12446 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012447
12448 @param pWDICtx: pointer to the WLAN DAL context
12449 pEventData: pointer to the event information structure
12450
Jeff Johnson295189b2012-06-20 16:38:30 -070012451 @see
12452 @return Result of the function call
12453*/
12454WDI_Status
12455WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012456(
Jeff Johnson295189b2012-06-20 16:38:30 -070012457 WDI_ControlBlockType* pWDICtx,
12458 WDI_EventInfoType* pEventData
12459)
12460{
12461 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12462 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012463 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012464 wpt_uint16 usDataOffset = 0;
12465 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012466 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012467 WDI_BSSSessionType* pBSSSes = NULL;
12468 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012469 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 tHalStatsReqMsg halStatsReqMsg;
12471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12472
12473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012475 -------------------------------------------------------------------------*/
12476 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12477 ( NULL == pEventData->pCBfnc ) )
12478 {
12479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012483 }
12484
12485 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12486 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12487
12488 /*-------------------------------------------------------------------------
12489 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 -------------------------------------------------------------------------*/
12492 wpalMutexAcquire(&pWDICtx->wptMutex);
12493
12494 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012495 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012496 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012497 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12498 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012499 &macBSSID))
12500 {
12501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012502 "This station does not exist in the WDI Station Table %d",
12503 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012506 }
12507
Jeff Johnsone7245742012-09-05 17:12:55 -070012508 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12509 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012510 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12512 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12513 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012514
12515 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012517 }
12518
12519 /*------------------------------------------------------------------------
12520 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012521 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012522 ------------------------------------------------------------------------*/
12523 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12524 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12526 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12527 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012528
Jeff Johnsone7245742012-09-05 17:12:55 -070012529 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012530 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012531 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012532 }
12533
12534
12535 wpalMutexRelease(&pWDICtx->wptMutex);
12536
12537 /*-----------------------------------------------------------------------
12538 Get message buffer
12539 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012541 sizeof(halStatsReqMsg.statsReqParams),
12542 &pSendBuffer, &usDataOffset, &usSendSize))||
12543 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12544 {
12545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012546 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012550 }
12551
Jeff Johnsone7245742012-09-05 17:12:55 -070012552 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012553 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012554 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012555 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012556 wpalMemoryCopy( pSendBuffer+usDataOffset,
12557 &halStatsReqMsg.statsReqParams,
12558 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012559
12560 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012561 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012562
12563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012566 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12567 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012568}/*WDI_ProcessGetStatsReq*/
12569
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012570#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012571/**
12572 @brief Process Get Roam Rssi Request function (called when Main FSM
12573 allows it)
12574
12575 @param pWDICtx: pointer to the WLAN DAL context
12576 pEventData: pointer to the event information structure
12577
12578 @see
12579 @return Result of the function call
12580*/
12581WDI_Status
12582WDI_ProcessGetRoamRssiReq
12583(
12584 WDI_ControlBlockType* pWDICtx,
12585 WDI_EventInfoType* pEventData
12586)
12587{
12588 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12589 WDI_GetStatsRspCb wdiGetStatsRspCb;
12590 wpt_uint8* pSendBuffer = NULL;
12591 wpt_uint16 usDataOffset = 0;
12592 wpt_uint16 usSendSize = 0;
12593 wpt_uint8 ucCurrentBSSSesIdx = 0;
12594 WDI_BSSSessionType* pBSSSes = NULL;
12595 wpt_macAddr macBSSID;
12596 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12597 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12599 /*-------------------------------------------------------------------------
12600 Sanity check
12601 -------------------------------------------------------------------------*/
12602 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12603 ( NULL == pEventData->pCBfnc ) )
12604 {
12605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12606 "%s: Invalid parameters", __func__);
12607 WDI_ASSERT(0);
12608 return WDI_STATUS_E_FAILURE;
12609 }
12610
12611 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12612 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12613
12614 /*-------------------------------------------------------------------------
12615 Check to see if we are in the middle of an association, if so queue, if
12616 not it means it is free to process request
12617 -------------------------------------------------------------------------*/
12618 wpalMutexAcquire(&pWDICtx->wptMutex);
12619
12620 /*------------------------------------------------------------------------
12621 Find the BSS for which the request is made
12622 ------------------------------------------------------------------------*/
12623 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12624 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12625 &macBSSID))
12626 {
12627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012628 "This station does not exist in the WDI Station Table %d",
12629 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012630 wpalMutexRelease(&pWDICtx->wptMutex);
12631 return WDI_STATUS_E_FAILURE;
12632 }
12633
12634 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12635 if ( NULL == pBSSSes )
12636 {
12637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12638 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12639 __func__, MAC_ADDR_ARRAY(macBSSID));
12640
12641 wpalMutexRelease(&pWDICtx->wptMutex);
12642 return WDI_STATUS_E_NOT_ALLOWED;
12643 }
12644
12645 /*------------------------------------------------------------------------
12646 Check if this BSS is being currently processed or queued,
12647 if queued - queue the new request as well
12648 ------------------------------------------------------------------------*/
12649 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12650 {
12651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12652 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12653 __func__, MAC_ADDR_ARRAY(macBSSID));
12654
12655 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12656 wpalMutexRelease(&pWDICtx->wptMutex);
12657 return wdiStatus;
12658 }
12659
12660 wpalMutexRelease(&pWDICtx->wptMutex);
12661
12662 /*-----------------------------------------------------------------------
12663 Get message buffer
12664 -----------------------------------------------------------------------*/
12665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12666 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12667 &pSendBuffer, &usDataOffset, &usSendSize))||
12668 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12669 {
12670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012671 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012672 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12673 WDI_ASSERT(0);
12674 return WDI_STATUS_E_FAILURE;
12675 }
12676
12677 halRssiRoamReqMsg.roamRssiReqParams.staId =
12678 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12679 wpalMemoryCopy( pSendBuffer+usDataOffset,
12680 &halRssiRoamReqMsg.roamRssiReqParams,
12681 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12682
12683 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12684 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12685
12686 /*-------------------------------------------------------------------------
12687 Send Get STA Request to HAL
12688 -------------------------------------------------------------------------*/
12689 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12690 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12691}/*WDI_ProcessGetRoamRssiReq*/
12692#endif
12693
Jeff Johnson295189b2012-06-20 16:38:30 -070012694/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012695 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012696 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012697
12698 @param pWDICtx: pointer to the WLAN DAL context
12699 pEventData: pointer to the event information structure
12700
Jeff Johnson295189b2012-06-20 16:38:30 -070012701 @see
12702 @return Result of the function call
12703*/
12704WDI_Status
12705WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012706(
Jeff Johnson295189b2012-06-20 16:38:30 -070012707 WDI_ControlBlockType* pWDICtx,
12708 WDI_EventInfoType* pEventData
12709)
12710{
12711 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12712 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12713
Jeff Johnsone7245742012-09-05 17:12:55 -070012714 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012715 wpt_uint16 usDataOffset = 0;
12716 wpt_uint16 usSendSize = 0;
12717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12718
12719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012720 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012721 -------------------------------------------------------------------------*/
12722 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12723 ( NULL == pEventData->pCBfnc))
12724 {
12725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012726 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012729 }
12730
12731 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12732 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12733
12734 /*-----------------------------------------------------------------------
12735 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012736 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012737 -----------------------------------------------------------------------*/
12738
Jeff Johnsone7245742012-09-05 17:12:55 -070012739 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012740 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12741 &pSendBuffer, &usDataOffset, &usSendSize))||
12742 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12743 {
12744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012745 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012746 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012749 }
12750
Jeff Johnsone7245742012-09-05 17:12:55 -070012751 wpalMemoryCopy( pSendBuffer+usDataOffset,
12752 &pwdiUpdateCfgParams->uConfigBufferLen,
12753 sizeof(wpt_uint32));
12754 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12755 pwdiUpdateCfgParams->pConfigBuffer,
12756 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012757
12758 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012759 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012760
12761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012762 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012763 -------------------------------------------------------------------------*/
12764
Jeff Johnsone7245742012-09-05 17:12:55 -070012765 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12766 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012767
12768}/*WDI_ProcessUpdateCfgReq*/
12769
12770
12771/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012772 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012773 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012774
12775 @param pWDICtx: pointer to the WLAN DAL context
12776 pEventData: pointer to the event information structure
12777
Jeff Johnson295189b2012-06-20 16:38:30 -070012778 @see
12779 @return Result of the function call
12780*/
12781WDI_Status
12782WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012783(
Jeff Johnson295189b2012-06-20 16:38:30 -070012784 WDI_ControlBlockType* pWDICtx,
12785 WDI_EventInfoType* pEventData
12786)
12787{
12788 WDI_AddBAReqParamsType* pwdiAddBAParams;
12789 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012790 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012791 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012792 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 wpt_uint16 usDataOffset = 0;
12794 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012795 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012796 wpt_macAddr macBSSID;
12797
12798 tAddBAReqMsg halAddBAReq;
12799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12800
12801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012803 -------------------------------------------------------------------------*/
12804 if (( NULL == pEventData ) ||
12805 ( NULL == pEventData->pEventData) ||
12806 ( NULL == pEventData->pCBfnc ))
12807 {
12808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012809 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012812 }
12813
12814 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12815 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12816
12817 /*-------------------------------------------------------------------------
12818 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012819 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012820 -------------------------------------------------------------------------*/
12821 wpalMutexAcquire(&pWDICtx->wptMutex);
12822
12823 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012824 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012825 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012826 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12827 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012828 &macBSSID))
12829 {
12830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012831 "This station does not exist in the WDI Station Table %d",
12832 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012833 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012835 }
12836
Jeff Johnsone7245742012-09-05 17:12:55 -070012837 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12838 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012839 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12841 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12842 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012843
12844 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012845 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012846 }
12847
12848 /*------------------------------------------------------------------------
12849 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012850 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012851 ------------------------------------------------------------------------*/
12852 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12853 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12855 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12856 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012857
Jeff Johnsone7245742012-09-05 17:12:55 -070012858 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012859 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012860 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012861 }
12862
12863
12864 wpalMutexRelease(&pWDICtx->wptMutex);
12865 /*-----------------------------------------------------------------------
12866 Get message buffer
12867 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012868 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012869 sizeof(halAddBAReq.addBAParams),
12870 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012871 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012872 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12873 {
12874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012875 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012876 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012879 }
12880
Jeff Johnsone7245742012-09-05 17:12:55 -070012881 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012882 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12883 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12884#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12887#endif
12888
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 wpalMemoryCopy( pSendBuffer+usDataOffset,
12890 &halAddBAReq.addBAParams,
12891 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012892
12893 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012894 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012895
12896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012897 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012898 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012899 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12900 wdiAddBARspCb, pEventData->pUserData,
12901 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012902}/*WDI_ProcessAddBAReq*/
12903
12904
12905
12906/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012907 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012908 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012909
12910 @param pWDICtx: pointer to the WLAN DAL context
12911 pEventData: pointer to the event information structure
12912
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 @see
12914 @return Result of the function call
12915*/
12916WDI_Status
12917WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012918(
Jeff Johnson295189b2012-06-20 16:38:30 -070012919 WDI_ControlBlockType* pWDICtx,
12920 WDI_EventInfoType* pEventData
12921)
12922{
12923 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12924 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012926 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012927 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012928 wpt_uint16 usDataOffset = 0;
12929 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012930 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012931 wpt_uint16 index;
12932 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012933
Jeff Johnson295189b2012-06-20 16:38:30 -070012934 tTriggerBAReqMsg halTriggerBAReq;
12935 tTriggerBaReqCandidate* halTriggerBACandidate;
12936 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12938
12939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 -------------------------------------------------------------------------*/
12942 if (( NULL == pEventData ) ||
12943 ( NULL == pEventData->pEventData ) ||
12944 ( NULL == pEventData->pCBfnc ))
12945 {
12946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012947 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 }
12951
12952 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12953 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12954 /*-------------------------------------------------------------------------
12955 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012956 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012957 -------------------------------------------------------------------------*/
12958 wpalMutexAcquire(&pWDICtx->wptMutex);
12959
12960 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012961 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012962 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012963 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12964 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012965 &macBSSID))
12966 {
12967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012968 "This station does not exist in the WDI Station Table %d",
12969 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012970 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012971 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012972 }
12973
Jeff Johnsone7245742012-09-05 17:12:55 -070012974 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12975 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012976 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12978 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12979 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012980
12981 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012982 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012983 }
12984
12985 /*------------------------------------------------------------------------
12986 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012987 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012988 ------------------------------------------------------------------------*/
12989 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12990 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12992 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12993 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012994
Jeff Johnsone7245742012-09-05 17:12:55 -070012995 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012996 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012997 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012998 }
12999
13000
13001 wpalMutexRelease(&pWDICtx->wptMutex);
13002 /*-----------------------------------------------------------------------
13003 Get message buffer
13004 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013005 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13006 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013007 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013008 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013009 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13010 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013011 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013012 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013013 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013014 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13015 {
13016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013017 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013018 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013021 }
13022
Jeff Johnsone7245742012-09-05 17:12:55 -070013023 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013024 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013025 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013026 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13027
Jeff Johnsone7245742012-09-05 17:12:55 -070013028 wpalMemoryCopy( pSendBuffer+usDataOffset,
13029 &halTriggerBAReq.triggerBAParams,
13030 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013031
Jeff Johnsone7245742012-09-05 17:12:55 -070013032 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013033 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13034 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13035 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013036
13037 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013038 index++)
13039 {
13040 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13041 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13042 halTriggerBACandidate++;
13043 wdiTriggerBACandidate++;
13044 }
13045
13046 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013047 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013048
13049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013050 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013051 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013052 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13053 wdiTriggerBARspCb, pEventData->pUserData,
13054 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013055}/*WDI_ProcessTriggerBAReq*/
13056
13057
13058
13059/**
13060 @brief Process Update Beacon Params Request function (called when Main FSM
13061 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013062
13063 @param pWDICtx: pointer to the WLAN DAL context
13064 pEventData: pointer to the event information structure
13065
Jeff Johnson295189b2012-06-20 16:38:30 -070013066 @see
13067 @return Result of the function call
13068*/
13069WDI_Status
13070WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013071(
Jeff Johnson295189b2012-06-20 16:38:30 -070013072 WDI_ControlBlockType* pWDICtx,
13073 WDI_EventInfoType* pEventData
13074)
13075{
13076 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13077 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013078 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 wpt_uint16 usDataOffset = 0;
13080 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013081 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13083
13084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 -------------------------------------------------------------------------*/
13087 if (( NULL == pEventData ) ||
13088 ( NULL == pEventData->pEventData) ||
13089 ( NULL == pEventData->pCBfnc))
13090 {
13091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013092 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013093 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013095 }
13096
13097 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13098 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13099 /*-----------------------------------------------------------------------
13100 Get message buffer
13101 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013102 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013103 sizeof(halUpdateBeaconParams),
13104 &pSendBuffer, &usDataOffset, &usSendSize))||
13105 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13106 {
13107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013108 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013109 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013112 }
13113
13114 /*BSS Index of the BSS*/
13115 halUpdateBeaconParams.bssIdx =
13116 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13117 /*shortPreamble mode. HAL should update all the STA rates when it
13118 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013119 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013120 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13121 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013122 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013123 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13124 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013125 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013126 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13127
13128 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013129 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013130 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013131 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013132 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013133 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013134 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013135 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013136 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013137 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013138 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013139 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013140 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13141 halUpdateBeaconParams.fRIFSMode =
13142 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013143 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13145
Jeff Johnsone7245742012-09-05 17:12:55 -070013146 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13147 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013148
13149 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013150 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013151
13152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013153 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013154 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013155 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13156 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013157}/*WDI_ProcessUpdateBeaconParamsReq*/
13158
13159
13160
13161/**
13162 @brief Process Send Beacon template Request function (called when Main FSM
13163 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013164
13165 @param pWDICtx: pointer to the WLAN DAL context
13166 pEventData: pointer to the event information structure
13167
Jeff Johnson295189b2012-06-20 16:38:30 -070013168 @see
13169 @return Result of the function call
13170*/
13171WDI_Status
13172WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013173(
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 WDI_ControlBlockType* pWDICtx,
13175 WDI_EventInfoType* pEventData
13176)
13177{
13178 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13179 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013180 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013181 wpt_uint16 usDataOffset = 0;
13182 wpt_uint16 usSendSize = 0;
13183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13184
13185 tSendBeaconReqMsg halSendBeaconReq;
13186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 -------------------------------------------------------------------------*/
13189 if (( NULL == pEventData ) ||
13190 ( NULL == pEventData->pEventData ) ||
13191 ( NULL == pEventData->pCBfnc ))
13192 {
13193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013194 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013197 }
13198
13199 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13200 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13201 /*-----------------------------------------------------------------------
13202 Get message buffer
13203 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013204 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013205 sizeof(halSendBeaconReq.sendBeaconParam),
13206 &pSendBuffer, &usDataOffset, &usSendSize))||
13207 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13208 {
13209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013210 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013214 }
13215
13216 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13217 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13218 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13221 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13222 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13223 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013224 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013225 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013226 /* usP2PIeOffset should be atleast greater than timIeOffset */
13227 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13228 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13229 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13230 {
13231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13232 "Invalid usP2PIeOffset %hu",
13233 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13234 WDI_ASSERT(0);
13235 return WDI_STATUS_E_FAILURE;
13236 }
13237
Jeff Johnsone7245742012-09-05 17:12:55 -070013238 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013239 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013240
Jeff Johnsone7245742012-09-05 17:12:55 -070013241 wpalMemoryCopy( pSendBuffer+usDataOffset,
13242 &halSendBeaconReq.sendBeaconParam,
13243 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013244
13245 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013246 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013247
13248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013249 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013250 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013251 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13252 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013253}/*WDI_ProcessSendBeaconParamsReq*/
13254
13255/**
13256 @brief Process Update Beacon Params Request function (called when Main FSM
13257 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013258
13259 @param pWDICtx: pointer to the WLAN DAL context
13260 pEventData: pointer to the event information structure
13261
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 @see
13263 @return Result of the function call
13264*/
13265WDI_Status
13266WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013267(
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 WDI_ControlBlockType* pWDICtx,
13269 WDI_EventInfoType* pEventData
13270)
13271{
13272 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13273 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013274 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013275 wpt_uint16 usDataOffset = 0;
13276 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013277 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13279
13280 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013281 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 -------------------------------------------------------------------------*/
13283 if (( NULL == pEventData ) ||
13284 ( NULL == pEventData->pEventData) ||
13285 ( NULL == pEventData->pCBfnc))
13286 {
13287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013291 }
13292
Jeff Johnsone7245742012-09-05 17:12:55 -070013293 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013295 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013296 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13297 /*-----------------------------------------------------------------------
13298 Get message buffer
13299 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013300 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013301 sizeof(halUpdateProbeRspTmplParams),
13302 &pSendBuffer, &usDataOffset, &usSendSize))||
13303 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13304 {
13305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013306 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013307 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013310 }
13311
13312 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 WDI_MAC_ADDR_LEN);
13315
Jeff Johnsone7245742012-09-05 17:12:55 -070013316 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013317 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13318
13319 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13320 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013321 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013322
13323
13324 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13325 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13326 WDI_PROBE_REQ_BITMAP_IE_LEN);
13327
Jeff Johnsone7245742012-09-05 17:12:55 -070013328 wpalMemoryCopy( pSendBuffer+usDataOffset,
13329 &halUpdateProbeRspTmplParams,
13330 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013331
13332 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013334
13335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013336 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013337 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013338 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13339 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13340 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013341}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13342
13343/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013344 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013345 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013346
13347 @param pWDICtx: pointer to the WLAN DAL context
13348 pEventData: pointer to the event information structure
13349
Jeff Johnson295189b2012-06-20 16:38:30 -070013350 @see
13351 @return Result of the function call
13352*/
13353WDI_Status
13354WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013355(
Jeff Johnson295189b2012-06-20 16:38:30 -070013356 WDI_ControlBlockType* pWDICtx,
13357 WDI_EventInfoType* pEventData
13358)
13359{
13360
13361 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13362 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13363
13364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013366 -------------------------------------------------------------------------*/
13367 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013368 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013369 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013370 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13372 {
13373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 }
13378
13379 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013381 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13382
13383 /*cache the wdi nv request message here if the the first fragment
13384 * To issue the request to HAL for the next fragment */
13385 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13386 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013387 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13388 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13390
13391 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13392 pWDICtx->pRspCBUserData = pEventData->pUserData;
13393 }
13394
13395 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13396}
13397
13398/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013399 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013401
13402 @param pWDICtx: pointer to the WLAN DAL context
13403 pEventData: pointer to the event information structure
13404
Jeff Johnson295189b2012-06-20 16:38:30 -070013405 @see
13406 @return Result of the function call
13407*/
13408WDI_Status WDI_ProcessSetMaxTxPowerReq
13409(
13410 WDI_ControlBlockType* pWDICtx,
13411 WDI_EventInfoType* pEventData
13412)
13413{
13414 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13415 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013416 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013417 wpt_uint16 usDataOffset = 0;
13418 wpt_uint16 usSendSize = 0;
13419 tSetMaxTxPwrReq halSetMaxTxPower;
13420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13421
13422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013423 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013424 -------------------------------------------------------------------------*/
13425 if (( NULL == pEventData ) ||
13426 ( NULL == pEventData->pEventData ) ||
13427 ( NULL == pEventData->pCBfnc ))
13428 {
13429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013430 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013432 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013433 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013434 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013436 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013437 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13438
13439 /*-----------------------------------------------------------------------
13440 Get message buffer
13441 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013442if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013443 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13444 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013445 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013446)))
13447 {
13448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013449 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013450 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013453 }
13454
13455 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13456 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13457 WDI_MAC_ADDR_LEN);
13458
13459 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13460 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13461 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013462 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013464
13465 wpalMemoryCopy( pSendBuffer+usDataOffset,
13466 &halSetMaxTxPower.setMaxTxPwrParams,
13467 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013468
13469 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013470 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013471
13472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013475 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13476 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13477 WDI_SET_MAX_TX_POWER_RESP);
13478
Jeff Johnson295189b2012-06-20 16:38:30 -070013479}
13480
Arif Hussaina5ebce02013-08-09 15:09:58 -070013481/*
13482 @brief Process Set Max Tx Power Per Band Request function (called when Main
13483 FSM allows it)
13484
13485 @param pWDICtx: pointer to the WLAN DAL context
13486 pEventData: pointer to the event information structure
13487
13488 @see
13489 @return Result of the function call
13490*/
13491WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13492(
13493 WDI_ControlBlockType* pWDICtx,
13494 WDI_EventInfoType* pEventData
13495)
13496{
13497 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13498 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13499 wpt_uint8* pSendBuffer = NULL;
13500 wpt_uint16 usDataOffset = 0;
13501 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013502 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013503 WDI_Status rValue = WDI_STATUS_SUCCESS;
13504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13505
13506 /*-------------------------------------------------------------------------
13507 Sanity check
13508 -------------------------------------------------------------------------*/
13509 if (( NULL == pEventData ) ||
13510 ( NULL == pEventData->pEventData ) ||
13511 ( NULL == pEventData->pCBfnc ))
13512 {
13513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13514 "%s: Invalid parameters", __func__);
13515 WDI_ASSERT(0);
13516 return WDI_STATUS_E_FAILURE;
13517 }
13518 pwdiSetMaxTxPowerPerBandParams = \
13519 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13520
13521 wdiSetMaxTxPowerPerBandRspCb = \
13522 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13523
13524 /*-----------------------------------------------------------------------
13525 Get message buffer
13526 -----------------------------------------------------------------------*/
13527
13528 rValue = WDI_GetMessageBuffer(pWDICtx,
13529 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13530 sizeof(tSetMaxTxPwrPerBandParams),
13531 &pSendBuffer, &usDataOffset, &usSendSize);
13532
13533 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13534 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13535 {
13536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13537 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13538 pEventData, pwdiSetMaxTxPowerPerBandParams,
13539 wdiSetMaxTxPowerPerBandRspCb);
13540 WDI_ASSERT(0);
13541 return WDI_STATUS_E_FAILURE;
13542 }
13543
13544
Arif Hussainf8f080c2014-04-03 09:48:36 -070013545 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13546 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013547 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13548
Arif Hussainf8f080c2014-04-03 09:48:36 -070013549 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013550 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13551
13552 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13553 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13554
13555 /*-------------------------------------------------------------------------
13556 Send Set Max Tx Power Per Band Request to HAL
13557 -------------------------------------------------------------------------*/
13558 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13559 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13560 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13561}
13562
schang86c22c42013-03-13 18:41:24 -070013563/**
13564 @brief Process Set Tx Power Request function (called when Main
13565 FSM allows it)
13566
13567 @param pWDICtx: pointer to the WLAN DAL context
13568 pEventData: pointer to the event information structure
13569
13570 @see
13571 @return Result of the function call
13572*/
13573WDI_Status WDI_ProcessSetTxPowerReq
13574(
13575 WDI_ControlBlockType* pWDICtx,
13576 WDI_EventInfoType* pEventData
13577)
13578{
13579 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13580 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13581 wpt_uint8* pSendBuffer = NULL;
13582 wpt_uint16 usDataOffset = 0;
13583 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013584 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13586
13587 /*-------------------------------------------------------------------------
13588 Sanity check
13589 -------------------------------------------------------------------------*/
13590 if (( NULL == pEventData ) ||
13591 ( NULL == pEventData->pEventData ) ||
13592 ( NULL == pEventData->pCBfnc ))
13593 {
13594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13595 "%s: Invalid parameters", __func__);
13596 WDI_ASSERT(0);
13597 return WDI_STATUS_E_FAILURE;
13598 }
13599
13600 pwdiSetTxPowerParams =
13601 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13602 wdiSetTxPowerRspCb =
13603 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13604
13605 /*-----------------------------------------------------------------------
13606 Get message buffer
13607 -----------------------------------------------------------------------*/
13608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13609 sizeof(tSetTxPwrReqParams),
13610 &pSendBuffer, &usDataOffset, &usSendSize))||
13611 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13612 )))
13613 {
13614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013615 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013616 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13617 WDI_ASSERT(0);
13618 return WDI_STATUS_E_FAILURE;
13619 }
13620
Leo Chang9a43db92013-03-25 17:39:58 -070013621 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13622 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13623 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013624
13625 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13626 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13627
13628 /*-------------------------------------------------------------------------
13629 Send Set Tx Power Request to HAL
13630 -------------------------------------------------------------------------*/
13631 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13632 wdiSetTxPowerRspCb, pEventData->pUserData,
13633 WDI_SET_TX_POWER_RESP);
13634}
Jeff Johnson295189b2012-06-20 16:38:30 -070013635
13636/**
13637 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13638 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013639
13640 @param pWDICtx: pointer to the WLAN DAL context
13641 pEventData: pointer to the event information structure
13642
Jeff Johnson295189b2012-06-20 16:38:30 -070013643 @see
13644 @return Result of the function call
13645*/
13646WDI_Status
13647WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013648(
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 WDI_ControlBlockType* pWDICtx,
13650 WDI_EventInfoType* pEventData
13651)
13652{
13653 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13654 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013655 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013656 wpt_uint16 usDataOffset = 0;
13657 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013658 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13660
13661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013662 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013663 -------------------------------------------------------------------------*/
13664 if (( NULL == pEventData ) ||
13665 ( NULL == pEventData->pEventData) ||
13666 ( NULL == pEventData->pCBfnc))
13667 {
13668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013669 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013672 }
13673
Jeff Johnsone7245742012-09-05 17:12:55 -070013674 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013675 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013676 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013677 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13678 /*-----------------------------------------------------------------------
13679 Get message buffer
13680 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013681 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13682 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013683 sizeof(halSetP2PGONOAParams),
13684 &pSendBuffer, &usDataOffset, &usSendSize))||
13685 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13686 {
13687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013688 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013689 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013692 }
13693
Jeff Johnsone7245742012-09-05 17:12:55 -070013694 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013695 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013696 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013697 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13698 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013699 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013700 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013701 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013702 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013703 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013704 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013705 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13707
Jeff Johnsone7245742012-09-05 17:12:55 -070013708 wpalMemoryCopy( pSendBuffer+usDataOffset,
13709 &halSetP2PGONOAParams,
13710 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013711
13712 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013713 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013714
13715 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013716 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013717 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013718 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13719 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13720 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013721}/*WDI_ProcessP2PGONOAReq*/
13722
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013723#ifdef FEATURE_WLAN_TDLS
13724
13725/**
13726 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13727 allows it)
13728
13729 @param pWDICtx: pointer to the WLAN DAL context
13730 pEventData: pointer to the event information structure
13731
13732 @see
13733 @return Result of the function call
13734*/
13735WDI_Status
13736WDI_ProcessTdlsLinkEstablishReq
13737(
13738 WDI_ControlBlockType* pWDICtx,
13739 WDI_EventInfoType* pEventData
13740)
13741{
13742 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13743 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13744 wpt_uint8* pSendBuffer = NULL;
13745 wpt_uint16 usDataOffset = 0;
13746 wpt_uint16 usSendSize = 0;
13747
13748 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13750
13751 /*-------------------------------------------------------------------------
13752 Sanity check
13753 -------------------------------------------------------------------------*/
13754 if (( NULL == pEventData ) ||
13755 ( NULL == pEventData->pEventData) ||
13756 ( NULL == pEventData->pCBfnc))
13757 {
13758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13759 "%s: Invalid parameters", __func__);
13760 WDI_ASSERT(0);
13761 return WDI_STATUS_E_FAILURE;
13762 }
13763 pwdiTDLSLinkEstablishReqParams =
13764 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13765 wdiTDLSLinkEstablishReqRspCb =
13766 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13767
13768
13769 /*-----------------------------------------------------------------------
13770 Get message buffer
13771 -----------------------------------------------------------------------*/
13772 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13773 WDI_TDLS_LINK_ESTABLISH_REQ,
13774 sizeof(halSetTDLSLinkEstablishParams),
13775 &pSendBuffer, &usDataOffset, &usSendSize))||
13776 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13777 {
13778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013779 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013780 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13781 WDI_ASSERT(0);
13782 return WDI_STATUS_E_FAILURE;
13783 }
13784
13785 halSetTDLSLinkEstablishParams.staIdx =
13786 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13787 halSetTDLSLinkEstablishParams.bIsResponder =
13788 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13789 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13790 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13791 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13792 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13793 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13794 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13795 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13796 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13797 halSetTDLSLinkEstablishParams.aAck = 0;
13798 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13799 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13800 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013801 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13802 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13803
13804 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13805 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13806 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13807 halSetTDLSLinkEstablishParams.validChannelsLen =
13808 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13809
13810 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13811 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13812 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13813 halSetTDLSLinkEstablishParams.validOperClassesLen =
13814 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013815
13816 wpalMemoryCopy( pSendBuffer+usDataOffset,
13817 &halSetTDLSLinkEstablishParams,
13818 sizeof(halSetTDLSLinkEstablishParams));
13819
13820 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13821 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13822
13823 /*-------------------------------------------------------------------------
13824 Send Update Probe Resp Template Request to HAL
13825 -------------------------------------------------------------------------*/
13826 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13827 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13828 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13829 return 0;
13830}/*WDI_ProcessTdlsLinkEstablishReq*/
13831
13832
Atul Mittalc0f739f2014-07-31 13:47:47 +053013833/**
13834 @brief sends the channel switch command to f/w (called when Main FSM
13835 allows it)
13836
13837 @param pWDICtx: pointer to the WLAN DAL context
13838 pEventData: pointer to the event information structure
13839
13840 @see
13841 @return Result of the function call
13842*/
13843WDI_Status
13844WDI_ProcessTdlsChanSwitchReq
13845(
13846 WDI_ControlBlockType* pWDICtx,
13847 WDI_EventInfoType* pEventData
13848)
13849{
13850 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13851 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13852 wpt_uint8* pSendBuffer = NULL;
13853 wpt_uint16 usDataOffset = 0;
13854 wpt_uint16 usSendSize = 0;
13855 //WDI_Status wdiStatus;
13856 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13858
13859 /*-------------------------------------------------------------------------
13860 Sanity check
13861 -------------------------------------------------------------------------*/
13862 if (( NULL == pEventData ) ||
13863 ( NULL == pEventData->pEventData))
13864 {
13865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13866 "%s: Invalid parameters", __func__);
13867 WDI_ASSERT(0);
13868 return WDI_STATUS_E_FAILURE;
13869 }
13870 pwdiTDLSChanSwitchReqParams =
13871 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13872 wdiTDLSChanSwitchReqRspCb =
13873 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13874
13875 /*-----------------------------------------------------------------------
13876 Get message buffer
13877 -----------------------------------------------------------------------*/
13878 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13879 WDI_TDLS_CHAN_SWITCH_REQ,
13880 sizeof(halSetTDLSChanSwitchParams),
13881 &pSendBuffer, &usDataOffset, &usSendSize))||
13882 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13883 {
13884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13885 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13886 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13887 WDI_ASSERT(0);
13888 return WDI_STATUS_E_FAILURE;
13889 }
13890
13891 halSetTDLSChanSwitchParams.staIdx =
13892 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13893 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13894 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13895 halSetTDLSChanSwitchParams.targetOperClass =
13896 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13897 halSetTDLSChanSwitchParams.targetChannel =
13898 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13899 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13900 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13901 wpalMemoryCopy( pSendBuffer+usDataOffset,
13902 &halSetTDLSChanSwitchParams,
13903 sizeof(halSetTDLSChanSwitchParams));
13904
13905 pWDICtx->wdiReqStatusCB = NULL;
13906 pWDICtx->pReqStatusUserData = NULL;
13907
13908 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13909 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13910 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13911}/*WDI_ProcessTdlsChanSwitchReq*/
13912
13913#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013914
Jeff Johnson295189b2012-06-20 16:38:30 -070013915
13916
13917/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013918 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013919 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013920 @param None
13921
13922 @see
13923 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013924*/
13925void
13926WDI_SetPowerStateCb
13927(
13928 wpt_status status,
13929 unsigned int dxePhyAddr,
13930 void *pContext
13931)
13932{
13933 wpt_status wptStatus;
13934 WDI_ControlBlockType *pCB = NULL;
13935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013936 /*
13937 * Trigger the event to bring the Enter BMPS req function to come
13938 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013939*/
13940 if( NULL != pContext )
13941 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013942 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013943 }
13944 else
13945 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013946 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013947 pCB = &gWDICb;
13948 }
Mihir Shetea4306052014-03-25 00:02:54 +053013949
13950 if(eWLAN_PAL_STATUS_SUCCESS == status )
13951 {
13952 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13953 }
13954 else
13955 {
13956 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13957 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013958 pCB->dxePhyAddr = dxePhyAddr;
13959 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13960 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13961 {
13962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13963 "Failed to set an event");
13964
Jeff Johnsone7245742012-09-05 17:12:55 -070013965 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 }
13967 return;
13968}
13969
13970
13971/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013972 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013973 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013974
13975 @param pWDICtx: pointer to the WLAN DAL context
13976 pEventData: pointer to the event information structure
13977
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 @see
13979 @return Result of the function call
13980*/
13981WDI_Status
13982WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013983(
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 WDI_ControlBlockType* pWDICtx,
13985 WDI_EventInfoType* pEventData
13986)
13987{
Jeff Johnson43971f52012-07-17 12:26:56 -070013988 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 wpt_uint16 usDataOffset = 0;
13992 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013993 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13995
13996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013998 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013999 if ((NULL == pEventData ) ||
14000 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14001 (NULL == (pwdiEnterImpsReqParams =
14002 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014003 {
14004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014005 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014006 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014007 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014008 }
14009
14010 /*-----------------------------------------------------------------------
14011 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014014 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014015 0,
14016 &pSendBuffer, &usDataOffset, &usSendSize))||
14017 ( usSendSize < (usDataOffset )))
14018 {
14019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014020 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014021 pEventData, wdiEnterImpsRspCb);
14022 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014023 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014024 }
14025
14026 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014027 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14028 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014029 {
14030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14031 "WDI Init failed to reset an event");
14032
Jeff Johnsone7245742012-09-05 17:12:55 -070014033 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014034 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014035 }
14036
14037 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014038 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14039 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014041 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014042 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014043 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014044 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014045
14046 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014047 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014048 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014049 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14050 WDI_SET_POWER_STATE_TIMEOUT);
14051 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 {
14053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14054 "WDI Init failed to wait on an event");
14055
Jeff Johnsone7245742012-09-05 17:12:55 -070014056 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014057 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014058 }
14059
Mihir Shetea4306052014-03-25 00:02:54 +053014060 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14061 {
14062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14063 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14064
14065 goto fail;
14066 }
14067
14068 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14069 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014071 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014072 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014073 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14074 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014075
14076fail:
14077 // Release the message buffer so we don't leak
14078 wpalMemoryFree(pSendBuffer);
14079
14080failRequest:
14081 //WDA should have failure check to avoid the memory leak
14082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014083}/*WDI_ProcessEnterImpsReq*/
14084
14085/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014086 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014087 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014088
14089 @param pWDICtx: pointer to the WLAN DAL context
14090 pEventData: pointer to the event information structure
14091
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 @see
14093 @return Result of the function call
14094*/
14095WDI_Status
14096WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014097(
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 WDI_ControlBlockType* pWDICtx,
14099 WDI_EventInfoType* pEventData
14100)
14101{
14102 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014103 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 wpt_uint16 usDataOffset = 0;
14105 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014106 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14108
14109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014110 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014111 -------------------------------------------------------------------------*/
14112 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014113 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14114 (NULL == (pwdiExitImpsReqParams =
14115 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 {
14117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014118 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014121 }
14122
14123 /*-----------------------------------------------------------------------
14124 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014125 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014126 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014128 0,
14129 &pSendBuffer, &usDataOffset, &usSendSize))||
14130 ( usSendSize < (usDataOffset )))
14131 {
14132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014133 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014134 pEventData, wdiExitImpsRspCb);
14135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014137 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014138 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14139 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014141 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014142 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014143 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14144 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014145}/*WDI_ProcessExitImpsReq*/
14146
14147/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014148 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014150
14151 @param pWDICtx: pointer to the WLAN DAL context
14152 pEventData: pointer to the event information structure
14153
Jeff Johnson295189b2012-06-20 16:38:30 -070014154 @see
14155 @return Result of the function call
14156*/
14157WDI_Status
14158WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014159(
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 WDI_ControlBlockType* pWDICtx,
14161 WDI_EventInfoType* pEventData
14162)
14163{
14164 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14165 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014166 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014167 wpt_uint16 usDataOffset = 0;
14168 wpt_uint16 usSendSize = 0;
14169 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014170 wpt_status wptStatus;
14171
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14173
14174 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014175 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014176 -------------------------------------------------------------------------*/
14177 if (( NULL == pEventData ) ||
14178 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14179 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14180 {
14181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014182 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014184 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014185 }
14186
14187 /*-----------------------------------------------------------------------
14188 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014189 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014190 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014191 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014192 sizeof(enterBmpsReq),
14193 &pSendBuffer, &usDataOffset, &usSendSize))||
14194 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14195 {
14196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014197 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014198 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14199 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014200 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014201 }
14202
14203 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014204 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14205 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014206 {
14207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14208 "WDI Init failed to reset an event");
14209
Jeff Johnsone7245742012-09-05 17:12:55 -070014210 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014211 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014212 }
14213
14214 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014215 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14216 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14217 {
14218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014219 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014220 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014221 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014222 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014223
14224/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014225 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014226 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014227 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14228 WDI_SET_POWER_STATE_TIMEOUT);
14229 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 {
14231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14232 "WDI Init failed to wait on an event");
14233
Jeff Johnsone7245742012-09-05 17:12:55 -070014234 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014235 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014236 }
14237
14238 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14239
14240 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14241 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14242 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14243 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14244
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014245 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014246 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14247 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14248 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14249
14250 wpalMemoryCopy( pSendBuffer+usDataOffset,
14251 &enterBmpsReq,
14252 sizeof(enterBmpsReq));
14253
14254 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014256
14257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014258 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014259 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014260 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14261 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014262
14263fail:
14264 // Release the message buffer so we don't leak
14265 wpalMemoryFree(pSendBuffer);
14266
14267failRequest:
14268 //WDA should have failure check to avoid the memory leak
14269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014270}/*WDI_ProcessEnterBmpsReq*/
14271
14272/**
14273 @brief Process Exit BMPS Request function (called when Main FSM
14274 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014275
14276 @param pWDICtx: pointer to the WLAN DAL context
14277 pEventData: pointer to the event information structure
14278
Jeff Johnson295189b2012-06-20 16:38:30 -070014279 @see
14280 @return Result of the function call
14281*/
14282WDI_Status
14283WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014284(
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 WDI_ControlBlockType* pWDICtx,
14286 WDI_EventInfoType* pEventData
14287)
14288{
14289 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14290 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014291 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014292 wpt_uint16 usDataOffset = 0;
14293 wpt_uint16 usSendSize = 0;
14294 tHalExitBmpsReqParams exitBmpsReq;
14295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14296
14297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014299 -------------------------------------------------------------------------*/
14300 if (( NULL == pEventData ) ||
14301 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14302 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14303 {
14304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014308 }
14309
14310 /*-----------------------------------------------------------------------
14311 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014312 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014313 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014314 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014315 sizeof(exitBmpsReq),
14316 &pSendBuffer, &usDataOffset, &usSendSize))||
14317 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14318 {
14319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014320 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014321 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014323 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 }
14325 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14326
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14328
Jeff Johnson295189b2012-06-20 16:38:30 -070014329 wpalMemoryCopy( pSendBuffer+usDataOffset,
14330 &exitBmpsReq,
14331 sizeof(exitBmpsReq));
14332
14333 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014335
14336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014337 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14340 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014341}/*WDI_ProcessExitBmpsReq*/
14342
14343/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014344 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014346
14347 @param pWDICtx: pointer to the WLAN DAL context
14348 pEventData: pointer to the event information structure
14349
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 @see
14351 @return Result of the function call
14352*/
14353WDI_Status
14354WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014355(
Jeff Johnson295189b2012-06-20 16:38:30 -070014356 WDI_ControlBlockType* pWDICtx,
14357 WDI_EventInfoType* pEventData
14358)
14359{
14360 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14361 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014362 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014363 wpt_uint16 usDataOffset = 0;
14364 wpt_uint16 usSendSize = 0;
14365 tUapsdReqParams enterUapsdReq;
14366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14367
14368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014369 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014370 -------------------------------------------------------------------------*/
14371 if (( NULL == pEventData ) ||
14372 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14373 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14374 {
14375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014376 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 }
14380
14381 /*-----------------------------------------------------------------------
14382 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014385 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 sizeof(enterUapsdReq),
14387 &pSendBuffer, &usDataOffset, &usSendSize))||
14388 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14389 {
14390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014391 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014392 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014395 }
14396
14397 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14398 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14399 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14400 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14401 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14402 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14403 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14404 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014405 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014406
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 wpalMemoryCopy( pSendBuffer+usDataOffset,
14408 &enterUapsdReq,
14409 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014410
14411 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014412 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014413
14414 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014415 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14418 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014419}/*WDI_ProcessEnterUapsdReq*/
14420
14421/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014422 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014423 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014424
14425 @param pWDICtx: pointer to the WLAN DAL context
14426 pEventData: pointer to the event information structure
14427
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 @see
14429 @return Result of the function call
14430*/
14431WDI_Status
14432WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014433(
Jeff Johnson295189b2012-06-20 16:38:30 -070014434 WDI_ControlBlockType* pWDICtx,
14435 WDI_EventInfoType* pEventData
14436)
14437{
14438 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014439 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 wpt_uint16 usDataOffset = 0;
14441 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014442 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14443 wpt_uint8 bssIdx = 0;
14444
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14446
14447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014448 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 -------------------------------------------------------------------------*/
14450 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014451 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014452 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14453 {
14454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 }
14459
14460 /*-----------------------------------------------------------------------
14461 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014462 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014463 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014464 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014465 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014467 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014468 {
14469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014470 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 pEventData, wdiExitUapsdRspCb);
14472 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 }
14475
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014476 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14477
14478 wpalMemoryCopy( pSendBuffer+usDataOffset,
14479 &bssIdx,
14480 sizeof(wpt_uint8));
14481
14482 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14483 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14484
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014488 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14489 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014490}/*WDI_ProcessExitUapsdReq*/
14491
14492/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014493 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014494 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014495
14496 @param pWDICtx: pointer to the WLAN DAL context
14497 pEventData: pointer to the event information structure
14498
Jeff Johnson295189b2012-06-20 16:38:30 -070014499 @see
14500 @return Result of the function call
14501*/
14502WDI_Status
14503WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014504(
Jeff Johnson295189b2012-06-20 16:38:30 -070014505 WDI_ControlBlockType* pWDICtx,
14506 WDI_EventInfoType* pEventData
14507)
14508{
14509 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14510 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014511 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 wpt_uint16 usDataOffset = 0;
14513 wpt_uint16 usSendSize = 0;
14514 tUapsdInfo uapsdAcParamsReq;
14515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14516
14517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014518 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 -------------------------------------------------------------------------*/
14520 if (( NULL == pEventData ) ||
14521 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14522 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14523 {
14524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014528 }
14529
14530 /*-----------------------------------------------------------------------
14531 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014532 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014533 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014534 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 sizeof(uapsdAcParamsReq),
14536 &pSendBuffer, &usDataOffset, &usSendSize))||
14537 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14538 {
14539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014540 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014541 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014544 }
14545
14546 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14547 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14548 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14549 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14550 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14551 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14552
Jeff Johnsone7245742012-09-05 17:12:55 -070014553 wpalMemoryCopy( pSendBuffer+usDataOffset,
14554 &uapsdAcParamsReq,
14555 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014556
14557 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014558 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014559
14560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014561 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014562 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014563 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14564 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014565}/*WDI_ProcessSetUapsdAcParamsReq*/
14566
14567/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014568 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014569 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014570
14571 @param pWDICtx: pointer to the WLAN DAL context
14572 pEventData: pointer to the event information structure
14573
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 @see
14575 @return Result of the function call
14576*/
14577WDI_Status
14578WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014579(
Jeff Johnson295189b2012-06-20 16:38:30 -070014580 WDI_ControlBlockType* pWDICtx,
14581 WDI_EventInfoType* pEventData
14582)
14583{
14584 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14585 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014586 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014587 wpt_uint16 usDataOffset = 0;
14588 wpt_uint16 usSendSize = 0;
14589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14590
14591 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014592 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 -------------------------------------------------------------------------*/
14594 if (( NULL == pEventData ) ||
14595 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14596 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14597 {
14598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014602 }
14603
14604 /*-----------------------------------------------------------------------
14605 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014606 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014607 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014609 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14610 &pSendBuffer, &usDataOffset, &usSendSize))||
14611 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14612 {
14613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014614 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014615 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 }
14619
Jeff Johnsone7245742012-09-05 17:12:55 -070014620 wpalMemoryCopy( pSendBuffer+usDataOffset,
14621 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14622 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014623
14624 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014625 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014626
14627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014629 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014630 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14631 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014632}/*WDI_ProcessUpdateUapsdParamsReq*/
14633
14634/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014635 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014636 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014637
14638 @param pWDICtx: pointer to the WLAN DAL context
14639 pEventData: pointer to the event information structure
14640
Jeff Johnson295189b2012-06-20 16:38:30 -070014641 @see
14642 @return Result of the function call
14643*/
14644WDI_Status
14645WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014646(
Jeff Johnson295189b2012-06-20 16:38:30 -070014647 WDI_ControlBlockType* pWDICtx,
14648 WDI_EventInfoType* pEventData
14649)
14650{
14651 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14652 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014653 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014654 wpt_uint16 usDataOffset = 0;
14655 wpt_uint16 usSendSize = 0;
14656 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14657
14658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14659
14660 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014661 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014662 -------------------------------------------------------------------------*/
14663 if (( NULL == pEventData ) ||
14664 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14665 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14666 {
14667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 }
14672
14673 /*-----------------------------------------------------------------------
14674 Get message buffer
14675 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014676 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 sizeof(halRxpFilterParams),
14678 &pSendBuffer, &usDataOffset, &usSendSize))||
14679 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14680 {
14681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014682 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014683 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 }
14687
Jeff Johnsone7245742012-09-05 17:12:55 -070014688 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014689 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014690 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014691 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14692
Jeff Johnsone7245742012-09-05 17:12:55 -070014693 wpalMemoryCopy( pSendBuffer+usDataOffset,
14694 &halRxpFilterParams,
14695 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014696
14697 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014699
14700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14704 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014705}/*WDI_ProcessConfigureRxpFilterReq*/
14706
14707/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014708 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014709 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014710
14711 @param pWDICtx: pointer to the WLAN DAL context
14712 pEventData: pointer to the event information structure
14713
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 @see
14715 @return Result of the function call
14716*/
14717WDI_Status
14718WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014719(
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 WDI_ControlBlockType* pWDICtx,
14721 WDI_EventInfoType* pEventData
14722)
14723{
14724 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14725 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014726 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 wpt_uint16 usDataOffset = 0;
14728 wpt_uint16 usSendSize = 0;
14729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14730
14731 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014732 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 -------------------------------------------------------------------------*/
14734 if (( NULL == pEventData ) ||
14735 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14736 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14737 {
14738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014739 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014742 }
14743
14744 /*-----------------------------------------------------------------------
14745 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014746 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014747 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014748 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14750 &pSendBuffer, &usDataOffset, &usSendSize))||
14751 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14752 {
14753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014754 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 }
14759
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 wpalMemoryCopy( pSendBuffer+usDataOffset,
14761 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14762 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14763 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14764 &pwdiBeaconFilterParams->aFilters[0],
14765 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014766
14767 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014769
14770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014771 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014772 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014773 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14774 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014775}/*WDI_ProcessSetBeaconFilterReq*/
14776
14777/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014778 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014779 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014780
14781 @param pWDICtx: pointer to the WLAN DAL context
14782 pEventData: pointer to the event information structure
14783
Jeff Johnson295189b2012-06-20 16:38:30 -070014784 @see
14785 @return Result of the function call
14786*/
14787WDI_Status
14788WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014789(
Jeff Johnson295189b2012-06-20 16:38:30 -070014790 WDI_ControlBlockType* pWDICtx,
14791 WDI_EventInfoType* pEventData
14792)
14793{
14794 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14795 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014796 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 wpt_uint16 usDataOffset = 0;
14798 wpt_uint16 usSendSize = 0;
14799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14800
14801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 -------------------------------------------------------------------------*/
14804 if (( NULL == pEventData ) ||
14805 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14806 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14807 {
14808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014809 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014812 }
14813
14814 /*-----------------------------------------------------------------------
14815 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014816 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014818 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14820 &pSendBuffer, &usDataOffset, &usSendSize))||
14821 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14822 {
14823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014824 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014827 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014828 }
14829
Jeff Johnsone7245742012-09-05 17:12:55 -070014830 wpalMemoryCopy( pSendBuffer+usDataOffset,
14831 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14832 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014833
14834 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014835 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014836
14837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014838 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014839 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014840 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14841 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014842}
14843
14844/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014845 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014846 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014847
14848 @param pWDICtx: pointer to the WLAN DAL context
14849 pEventData: pointer to the event information structure
14850
Jeff Johnson295189b2012-06-20 16:38:30 -070014851 @see
14852 @return Result of the function call
14853*/
14854WDI_Status
14855WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014856(
Jeff Johnson295189b2012-06-20 16:38:30 -070014857 WDI_ControlBlockType* pWDICtx,
14858 WDI_EventInfoType* pEventData
14859)
14860{
14861 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14862 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 wpt_uint16 usDataOffset = 0;
14865 wpt_uint16 usSendSize = 0;
14866 tHalRSSIThresholds rssiThresholdsReq;
14867 WDI_Status ret_status = 0;
14868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14869
14870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 -------------------------------------------------------------------------*/
14873 if (( NULL == pEventData ) ||
14874 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14875 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14876 {
14877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 }
14882
14883 /*-----------------------------------------------------------------------
14884 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014886 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014887 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014888 sizeof(rssiThresholdsReq),
14889 &pSendBuffer, &usDataOffset, &usSendSize))||
14890 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14891 {
14892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014893 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014894 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014897 }
14898
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014900 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014901 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014902 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014903 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014905 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014910 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014911 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014912 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014915 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014916 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014917 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014918 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14919
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 wpalMemoryCopy( pSendBuffer+usDataOffset,
14921 &rssiThresholdsReq,
14922 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014923
14924 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014926
14927 /*-------------------------------------------------------------------------
14928 Send Set threshold req to HAL
14929 -------------------------------------------------------------------------*/
14930 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14931 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14932 {
14933 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14934 // req. Then as a result of processing the threshold cross ind, we trigger
14935 // a Set threshold req, then we need to indicate to WDI that it needs to
14936 // go to busy state as a result of the indication as we sent a req in the
14937 // same WDI context.
14938 // Hence expected state transition is to busy.
14939 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14940 }
14941
14942 return ret_status;
14943}
14944
14945/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014946 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014948
14949 @param pWDICtx: pointer to the WLAN DAL context
14950 pEventData: pointer to the event information structure
14951
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 @see
14953 @return Result of the function call
14954*/
14955WDI_Status
14956WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014957(
Jeff Johnson295189b2012-06-20 16:38:30 -070014958 WDI_ControlBlockType* pWDICtx,
14959 WDI_EventInfoType* pEventData
14960)
14961{
14962 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14963 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014964 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014965 wpt_uint16 usDataOffset = 0;
14966 wpt_uint16 usSendSize = 0;
14967 tHalHostOffloadReq hostOffloadParams;
14968 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014969 wpt_uint8 ucCurrentBSSSesIdx = 0;
14970 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014971
14972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14973
14974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 -------------------------------------------------------------------------*/
14977 if (( NULL == pEventData ) ||
14978 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14979 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14980 {
14981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014982 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014984 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014985 }
14986
14987 /*-----------------------------------------------------------------------
14988 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014990 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014991 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014992 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14993 &pSendBuffer, &usDataOffset, &usSendSize))||
14994 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14995 {
14996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014997 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14999 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015000 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015001 }
15002
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015003 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15004 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15005 &pBSSSes);
15006 if ( NULL == pBSSSes )
15007 {
c_hpothu86feba52014-10-28 15:51:18 +053015008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015009 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15010 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015011 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015012 }
15013
Jeff Johnson295189b2012-06-20 16:38:30 -070015014 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15015 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015016
Jeff Johnson295189b2012-06-20 16:38:30 -070015017 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15018 {
15019 // ARP Offload
15020 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15021 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15022 4);
15023 }
15024 else
15025 {
15026 // NS Offload
15027 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15028 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15029 16);
15030
15031#ifdef WLAN_NS_OFFLOAD
15032 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15033 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15034 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15035 16);
15036 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15037 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15038 16);
15039 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15040 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15041 16);
15042 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15043 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15044 16);
15045 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15046 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15047 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015048 nsOffloadParams.srcIPv6AddrValid =
15049 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15050
15051 nsOffloadParams.targetIPv6Addr1Valid =
15052 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15053
15054 nsOffloadParams.targetIPv6Addr2Valid =
15055 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15056
15057 nsOffloadParams.slotIndex =
15058 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015059
Jeff Johnson295189b2012-06-20 16:38:30 -070015060#endif // WLAN_NS_OFFLOAD
15061 }
15062
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015063 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15064
Jeff Johnson295189b2012-06-20 16:38:30 -070015065 // copy hostOffloadParams into pSendBuffer
15066 wpalMemoryCopy( pSendBuffer+usDataOffset,
15067 &hostOffloadParams,
15068 sizeof(hostOffloadParams));
15069
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015070 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015072 // copy nsOffloadParams into pSendBuffer
15073 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015074 &nsOffloadParams,
15075 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015076 }
15077 else
15078 {
15079#ifdef WLAN_NS_OFFLOAD
15080 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15081 {
15082 // copy nsOffloadParams into pSendBuffer
15083 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15084 &nsOffloadParams,
15085 sizeof(nsOffloadParams));
15086 }
15087#endif
15088 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015089
15090 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015091 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015092
15093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015094 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015096 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15097 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015098
15099fail:
15100 // Release the message buffer so we don't leak
15101 wpalMemoryFree(pSendBuffer);
15102
15103failRequest:
15104 //WDA should have failure check to avoid the memory leak
15105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015106}/*WDI_ProcessHostOffloadReq*/
15107
15108/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015109 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015110 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015111
15112 @param pWDICtx: pointer to the WLAN DAL context
15113 pEventData: pointer to the event information structure
15114
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 @see
15116 @return Result of the function call
15117*/
15118WDI_Status
15119WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015120(
Jeff Johnson295189b2012-06-20 16:38:30 -070015121 WDI_ControlBlockType* pWDICtx,
15122 WDI_EventInfoType* pEventData
15123)
15124{
15125 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15126 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015127 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015128 wpt_uint16 usDataOffset = 0;
15129 wpt_uint16 usSendSize = 0;
15130 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015131 wpt_uint8 ucCurrentBSSSesIdx = 0;
15132 WDI_BSSSessionType* pBSSSes = NULL;
15133
Jeff Johnson295189b2012-06-20 16:38:30 -070015134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15135
15136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015137 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015138 -------------------------------------------------------------------------*/
15139 if (( NULL == pEventData ) ||
15140 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15141 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15142 {
15143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15144 "Invalid parameters in Keep Alive req");
15145 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015146 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015147 }
15148
15149 /*-----------------------------------------------------------------------
15150 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015151 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015152 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015153 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015154 sizeof(keepAliveReq),
15155 &pSendBuffer, &usDataOffset, &usSendSize))||
15156 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15157 {
15158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015159 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15161 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015162 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 }
15164
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015165 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15166 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15167 &pBSSSes);
15168 if ( NULL == pBSSSes )
15169 {
15170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015171 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015172 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015173 }
15174
Jeff Johnson295189b2012-06-20 16:38:30 -070015175 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15176 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15177
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015178 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015179
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15181 {
15182 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15183 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15184 HAL_IPV4_ADDR_LEN);
15185 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15186 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015187 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 wpalMemoryCopy(keepAliveReq.destMacAddr,
15189 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15190 HAL_MAC_ADDR_LEN);
15191 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015192
15193 wpalMemoryCopy( pSendBuffer+usDataOffset,
15194 &keepAliveReq,
15195 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015196
15197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015198 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015199
15200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015201 "Process keep alive req time period %d",
15202 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015203
15204 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015205 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015206
15207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15208 "Sending keep alive req to HAL");
15209
15210 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015211 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015212 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015213 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15214 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015215
15216fail:
15217 // Release the message buffer so we don't leak
15218 wpalMemoryFree(pSendBuffer);
15219
15220failRequest:
15221 //WDA should have failure check to avoid the memory leak
15222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015223}/*WDI_ProcessKeepAliveReq*/
15224
15225
15226/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015227 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015228 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015229
15230 @param pWDICtx: pointer to the WLAN DAL context
15231 pEventData: pointer to the event information structure
15232
Jeff Johnson295189b2012-06-20 16:38:30 -070015233 @see
15234 @return Result of the function call
15235*/
15236WDI_Status
15237WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015238(
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 WDI_ControlBlockType* pWDICtx,
15240 WDI_EventInfoType* pEventData
15241)
15242{
15243 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15244 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015245 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015246 wpt_uint16 usDataOffset = 0;
15247 wpt_uint16 usSendSize = 0;
15248 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015249 wpt_uint8 ucCurrentBSSSesIdx = 0;
15250 WDI_BSSSessionType* pBSSSes = NULL;
15251
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15253
15254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015256 -------------------------------------------------------------------------*/
15257 if (( NULL == pEventData ) ||
15258 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15259 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15260 {
15261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015264 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 }
15266
15267 /*-----------------------------------------------------------------------
15268 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015269 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015271 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015272 sizeof(wowlAddBcPtrnReq),
15273 &pSendBuffer, &usDataOffset, &usSendSize))||
15274 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15275 {
15276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015277 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15279 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015280 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 }
15282
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015283 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15284 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15285 &pBSSSes);
15286 if ( NULL == pBSSSes )
15287 {
15288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015289 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015290 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015291 }
15292
Jeff Johnsone7245742012-09-05 17:12:55 -070015293 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015295 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015297 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015298 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015299 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15301
15302 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15303 {
15304 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15305 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15306 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15307 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15308 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15309 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15310 }
15311 else
15312 {
15313 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15314 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15315 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15316 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15317 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15318 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15319
15320 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15321 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15322 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15323 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15324 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15325 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15326 }
15327
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015328 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15329
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 wpalMemoryCopy( pSendBuffer+usDataOffset,
15331 &wowlAddBcPtrnReq,
15332 sizeof(wowlAddBcPtrnReq));
15333
15334 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015335 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015336
15337 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015338 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015339 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015340 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15341 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015342fail:
15343 // Release the message buffer so we don't leak
15344 wpalMemoryFree(pSendBuffer);
15345
15346failRequest:
15347 //WDA should have failure check to avoid the memory leak
15348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015349}/*WDI_ProcessWowlAddBcPtrnReq*/
15350
15351/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015352 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015354
15355 @param pWDICtx: pointer to the WLAN DAL context
15356 pEventData: pointer to the event information structure
15357
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 @see
15359 @return Result of the function call
15360*/
15361WDI_Status
15362WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015363(
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 WDI_ControlBlockType* pWDICtx,
15365 WDI_EventInfoType* pEventData
15366)
15367{
15368 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15369 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015371 wpt_uint16 usDataOffset = 0;
15372 wpt_uint16 usSendSize = 0;
15373 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015374 wpt_uint8 ucCurrentBSSSesIdx = 0;
15375 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15377
15378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015380 -------------------------------------------------------------------------*/
15381 if (( NULL == pEventData ) ||
15382 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15383 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15384 {
15385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015386 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015388 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015389 }
15390
15391 /*-----------------------------------------------------------------------
15392 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015393 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015394 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015395 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015396 sizeof(wowlDelBcPtrnReq),
15397 &pSendBuffer, &usDataOffset, &usSendSize))||
15398 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15399 {
15400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015401 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015402 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15403 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015404 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015405 }
15406
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015407 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15408 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15409 &pBSSSes);
15410 if ( NULL == pBSSSes )
15411 {
15412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015413 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015414 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015415 }
15416
Jeff Johnsone7245742012-09-05 17:12:55 -070015417 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015418 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015419
15420 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15421
Jeff Johnsone7245742012-09-05 17:12:55 -070015422 wpalMemoryCopy( pSendBuffer+usDataOffset,
15423 &wowlDelBcPtrnReq,
15424 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015425
15426 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015427 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015428
15429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015430 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015431 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015432 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15433 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015434
15435fail:
15436 // Release the message buffer so we don't leak
15437 wpalMemoryFree(pSendBuffer);
15438
15439failRequest:
15440 //WDA should have failure check to avoid the memory leak
15441 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015442}/*WDI_ProcessWowlDelBcPtrnReq*/
15443
15444/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015445 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015446 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015447
15448 @param pWDICtx: pointer to the WLAN DAL context
15449 pEventData: pointer to the event information structure
15450
Jeff Johnson295189b2012-06-20 16:38:30 -070015451 @see
15452 @return Result of the function call
15453*/
15454WDI_Status
15455WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015456(
Jeff Johnson295189b2012-06-20 16:38:30 -070015457 WDI_ControlBlockType* pWDICtx,
15458 WDI_EventInfoType* pEventData
15459)
15460{
15461 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15462 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015463 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015464 wpt_uint16 usDataOffset = 0;
15465 wpt_uint16 usSendSize = 0;
15466 tHalWowlEnterParams wowlEnterReq;
15467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15468
15469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015470 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015471 -------------------------------------------------------------------------*/
15472 if (( NULL == pEventData ) ||
15473 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15474 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15475 {
15476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015477 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015480 }
15481
15482 /*-----------------------------------------------------------------------
15483 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015484 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015485 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015486 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 sizeof(wowlEnterReq),
15488 &pSendBuffer, &usDataOffset, &usSendSize))||
15489 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15490 {
15491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015492 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015493 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015496 }
15497
Kumar Anandaca924e2013-07-22 14:35:34 -070015498 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15499
Jeff Johnsone7245742012-09-05 17:12:55 -070015500 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015501 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015502 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015503 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015506 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015507 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015508 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015509 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015510 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015511 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015512 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015513 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015514 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015515 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15516
15517#ifdef WLAN_WAKEUP_EVENTS
15518 wowlEnterReq.ucWoWEAPIDRequestEnable =
15519 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15520
15521 wowlEnterReq.ucWoWEAPOL4WayEnable =
15522 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15523
15524 wowlEnterReq.ucWowNetScanOffloadMatch =
15525 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15526
15527 wowlEnterReq.ucWowGTKRekeyError =
15528 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15529
15530 wowlEnterReq.ucWoWBSSConnLoss =
15531 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15532#endif // WLAN_WAKEUP_EVENTS
15533
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015534 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15535
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15537 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15538 sizeof(tSirMacAddr));
15539
Jeff Johnsone7245742012-09-05 17:12:55 -070015540 wpalMemoryCopy( pSendBuffer+usDataOffset,
15541 &wowlEnterReq,
15542 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015543
15544 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015545 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015546
15547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015548 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015549 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015550 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15551 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015552}/*WDI_ProcessWowlEnterReq*/
15553
15554/**
15555 @brief Process Wowl exit Request function (called when Main FSM
15556 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015557
15558 @param pWDICtx: pointer to the WLAN DAL context
15559 pEventData: pointer to the event information structure
15560
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 @see
15562 @return Result of the function call
15563*/
15564WDI_Status
15565WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015566(
Jeff Johnson295189b2012-06-20 16:38:30 -070015567 WDI_ControlBlockType* pWDICtx,
15568 WDI_EventInfoType* pEventData
15569)
15570{
15571 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015572 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015573 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015574 wpt_uint16 usDataOffset = 0;
15575 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015576 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15578
15579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015581 -------------------------------------------------------------------------*/
15582 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015583 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015584 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15585 {
15586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 }
15591
15592 /*-----------------------------------------------------------------------
15593 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015594 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015595 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015597 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015599 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 {
15601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015602 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015603 pEventData, wdiWowlExitCb);
15604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015606 }
15607
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015608 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15609
15610 wpalMemoryCopy( pSendBuffer+usDataOffset,
15611 &wowlExitparams,
15612 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015614 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015615 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15617 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015618}/*WDI_ProcessWowlExitReq*/
15619
15620/**
15621 @brief Process Configure Apps Cpu Wakeup State Request function
15622 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015623
15624 @param pWDICtx: pointer to the WLAN DAL context
15625 pEventData: pointer to the event information structure
15626
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 @see
15628 @return Result of the function call
15629*/
15630WDI_Status
15631WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015632(
Jeff Johnson295189b2012-06-20 16:38:30 -070015633 WDI_ControlBlockType* pWDICtx,
15634 WDI_EventInfoType* pEventData
15635)
15636{
15637 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15638 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015639 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015640 wpt_uint16 usDataOffset = 0;
15641 wpt_uint16 usSendSize = 0;
15642 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15644
15645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015647 -------------------------------------------------------------------------*/
15648 if (( NULL == pEventData ) ||
15649 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15650 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15651 {
15652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015656 }
15657
15658 /*-----------------------------------------------------------------------
15659 Get message buffer
15660 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015661 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015662 sizeof(halCfgAppsCpuWakeupStateReqParams),
15663 &pSendBuffer, &usDataOffset, &usSendSize))||
15664 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15665 {
15666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015667 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015668 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015671 }
15672
Jeff Johnsone7245742012-09-05 17:12:55 -070015673 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015674 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15675
Jeff Johnsone7245742012-09-05 17:12:55 -070015676 wpalMemoryCopy( pSendBuffer+usDataOffset,
15677 &halCfgAppsCpuWakeupStateReqParams,
15678 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015679
15680 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015682
15683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015684 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015685 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15687 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15688 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015689}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15690
15691#ifdef WLAN_FEATURE_VOWIFI_11R
15692/**
15693 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15694 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015695
15696 @param pWDICtx: pointer to the WLAN DAL context
15697 pEventData: pointer to the event information structure
15698
Jeff Johnson295189b2012-06-20 16:38:30 -070015699 @see
15700 @return Result of the function call
15701*/
15702WDI_Status
15703WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015704(
Jeff Johnson295189b2012-06-20 16:38:30 -070015705 WDI_ControlBlockType* pWDICtx,
15706 WDI_EventInfoType* pEventData
15707)
15708{
15709 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15710 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015711 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015712 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015713 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015714 wpt_uint16 usDataOffset = 0;
15715 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015716 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015717 wpt_macAddr macBSSID;
15718 tAggrAddTsReq halAggrAddTsReq;
15719 int i;
15720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15721
15722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015723 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015724 -------------------------------------------------------------------------*/
15725 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15726 ( NULL == pEventData->pCBfnc ))
15727 {
15728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015729 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015732 }
15733 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15734 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15735 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15736 /*-------------------------------------------------------------------------
15737 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015738 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015739 -------------------------------------------------------------------------*/
15740 wpalMutexAcquire(&pWDICtx->wptMutex);
15741
15742 /*------------------------------------------------------------------------
15743 Find the BSS for which the request is made and identify WDI session
15744 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015745 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15746 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015747 &macBSSID))
15748 {
15749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015750 "This station does not exist in the WDI Station Table %d",
15751 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015752 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015754 }
15755
Jeff Johnsone7245742012-09-05 17:12:55 -070015756 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15757 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015758 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15760 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15761 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015762
15763 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015764 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015766
Jeff Johnson295189b2012-06-20 16:38:30 -070015767 /*------------------------------------------------------------------------
15768 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015769 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 ------------------------------------------------------------------------*/
15771 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15772 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15774 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15775 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015776
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015779 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015780 }
15781
15782 wpalMutexRelease(&pWDICtx->wptMutex);
15783 /*-----------------------------------------------------------------------
15784 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015785 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015787 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015788 sizeof(tAggrAddTsParams),
15789 &pSendBuffer, &usDataOffset, &usSendSize))||
15790 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15791 {
15792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015793 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015797 }
15798
Jeff Johnsone7245742012-09-05 17:12:55 -070015799 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015801 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15803
15804 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15805 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015806 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015807 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015808 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015809 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015810 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015811 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15812 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015813 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015814 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15815 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015816 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15818 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015819 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015820 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15821 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015822 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15824 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15827 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015828 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015829 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15830 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015831 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015832 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15833 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015834 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015835 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015836 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015837 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015838
15839
15840 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015841 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015842 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015843 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015844 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015845 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015846 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015850 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015851 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015852 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015854 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015858 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015859 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015860 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015861 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015862 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015864 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015865 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015866 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015868 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15870 }
15871
Jeff Johnsone7245742012-09-05 17:12:55 -070015872 wpalMemoryCopy( pSendBuffer+usDataOffset,
15873 &halAggrAddTsReq,
15874 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015875
15876 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015877 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015878
15879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015880 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015881 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015882 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015884 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015885}/*WDI_ProcessAggrAddTSpecReq*/
15886#endif /* WLAN_FEATURE_VOWIFI_11R */
15887
15888/**
15889 @brief Process Shutdown Request function (called when Main FSM
15890 allows it)
15891
15892 @param pWDICtx: pointer to the WLAN DAL context
15893 pEventData: pointer to the event information structure
15894
15895 @see
15896 @return Result of the function call
15897*/
15898WDI_Status
15899WDI_ProcessShutdownReq
15900(
15901 WDI_ControlBlockType* pWDICtx,
15902 WDI_EventInfoType* pEventData
15903 )
15904{
15905 wpt_status wptStatus;
15906
15907
15908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15909
15910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015911 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 -------------------------------------------------------------------------*/
15913 if ( NULL == pEventData )
15914 {
15915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015917 WDI_ASSERT(0);
15918 return WDI_STATUS_E_FAILURE;
15919 }
15920
15921 wpalMutexAcquire(&pWDICtx->wptMutex);
15922
15923
15924 gWDIInitialized = eWLAN_PAL_FALSE;
15925 /*! TO DO: stop the data services */
15926 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15927 {
15928 /*Stop the STA Table !UT- check this logic again
15929 It is safer to do it here than on the response - because a stop is imminent*/
15930 WDI_STATableStop(pWDICtx);
15931
15932 /* Stop Transport Driver, DXE */
15933 WDTS_Stop(pWDICtx);
15934 }
15935
15936 /*Clear all pending request*/
15937 WDI_ClearPendingRequests(pWDICtx);
15938 /* Close Data transport*/
15939 /* FTM mode does not open Data Path */
15940 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15941 {
15942 WDTS_Close(pWDICtx);
15943 }
15944 /*Close the STA Table !UT- check this logic again*/
15945 WDI_STATableClose(pWDICtx);
15946 /*close the PAL */
15947 wptStatus = wpalClose(pWDICtx->pPALContext);
15948 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15949 {
15950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15951 "Failed to wpal Close %d", wptStatus);
15952 WDI_ASSERT(0);
15953 }
15954
15955 /*Transition back to init state*/
15956 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15957
15958 wpalMutexRelease(&pWDICtx->wptMutex);
15959
15960 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015961 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015962
15963
Jeff Johnsone7245742012-09-05 17:12:55 -070015964 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015965}/*WDI_ProcessShutdownReq*/
15966
15967/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015968 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015969========================================================================*/
15970
15971/**
15972 @brief Process Start Response function (called when a response
15973 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015974
15975 @param pWDICtx: pointer to the WLAN DAL context
15976 pEventData: pointer to the event information structure
15977
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 @see
15979 @return Result of the function call
15980*/
15981WDI_Status
15982WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015983(
Jeff Johnson295189b2012-06-20 16:38:30 -070015984 WDI_ControlBlockType* pWDICtx,
15985 WDI_EventInfoType* pEventData
15986)
15987{
15988 WDI_StartRspParamsType wdiRspParams;
15989 WDI_StartRspCb wdiStartRspCb = NULL;
15990
15991 tHalMacStartRspParams* startRspParams;
15992
15993#ifndef HAL_SELF_STA_PER_BSS
15994 WDI_AddStaParams wdiAddSTAParam = {0};
15995#endif
15996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15997
Jeff Johnsone7245742012-09-05 17:12:55 -070015998 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016000 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016001 -------------------------------------------------------------------------*/
16002 if (( NULL == pEventData ) ||
16003 ( NULL == pEventData->pEventData) ||
16004 ( NULL == wdiStartRspCb ))
16005 {
16006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016010 }
16011
16012 /*-------------------------------------------------------------------------
16013 Extract response and send it to UMAC
16014 -------------------------------------------------------------------------*/
16015 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16016 {
16017 // not enough data was received
16018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016019 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016020 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016023 }
16024
16025 /*-------------------------------------------------------------------------
16026 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016027 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016028 -------------------------------------------------------------------------*/
16029 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16030
16031 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16032 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16033 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16034 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16035 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16036 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16037 wdiRspParams.wlanReportedVersion.major =
16038 startRspParams->wcnssWlanVersion.major;
16039 wdiRspParams.wlanReportedVersion.minor =
16040 startRspParams->wcnssWlanVersion.minor;
16041 wdiRspParams.wlanReportedVersion.version =
16042 startRspParams->wcnssWlanVersion.version;
16043 wdiRspParams.wlanReportedVersion.revision =
16044 startRspParams->wcnssWlanVersion.revision;
16045 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16046 startRspParams->wcnssCrmVersionString,
16047 sizeof(wdiRspParams.wcnssSoftwareVersion));
16048 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16049 startRspParams->wcnssWlanVersionString,
16050 sizeof(wdiRspParams.wcnssHardwareVersion));
16051 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16052
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016053 /*Save the HAL Version*/
16054 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16055
Jeff Johnson295189b2012-06-20 16:38:30 -070016056 wpalMutexAcquire(&pWDICtx->wptMutex);
16057 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16058 {
16059 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16060
16061 /*Cache the start response for further use*/
16062 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016063 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016064 sizeof(pWDICtx->wdiCachedStartRspParams));
16065
16066 }
16067 else
16068 {
16069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16070 "Failed to start device with status %s(%d)",
16071 WDI_getHALStatusMsgString(startRspParams->status),
16072 startRspParams->status);
16073
16074 /*Set the expected state transition to stopped - because the start has
16075 failed*/
16076 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16077
16078 wpalMutexRelease(&pWDICtx->wptMutex);
16079
16080 /*Notify UMAC*/
16081 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016082
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016084 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016085
16086 /*Although the response is an error - it was processed by our function
16087 so as far as the caller is concerned this is a succesful reponse processing*/
16088 return WDI_STATUS_SUCCESS;
16089 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016090
Jeff Johnson295189b2012-06-20 16:38:30 -070016091 wpalMutexRelease(&pWDICtx->wptMutex);
16092
16093 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16094 {
16095 /* FTM mode does not need to execute below */
16096 /* Notify UMAC */
16097 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16098 return WDI_STATUS_SUCCESS;
16099 }
16100
16101 /* START the Data transport */
16102 WDTS_startTransport(pWDICtx);
16103
16104 /*Start the STA Table !- check this logic again*/
16105 WDI_STATableStart(pWDICtx);
16106
16107#ifndef HAL_SELF_STA_PER_BSS
16108 /* Store the Self STA Index */
16109 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16110
16111 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16112 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16113 WDI_MAC_ADDR_LEN);
16114
16115 /* At this point add the self-STA */
16116
16117 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16118 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16119 /*! TO DO: wdiAddSTAParam.dpuSig */
16120 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16121 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16122 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16123
16124 //all DPU indices are the same for self STA
16125 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16126 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016127 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16129 WDI_MAC_ADDR_LEN);
16130 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16131 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16132
16133 /* Note: Since we don't get an explicit config STA request for self STA, we
16134 add the self STA upon receiving the Start response message. But the
16135 self STA entry in the table is deleted when WDI gets an explicit delete STA
16136 request */
16137 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16138#endif
16139
16140 /*Notify UMAC*/
16141 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16142
Jeff Johnsone7245742012-09-05 17:12:55 -070016143 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016144}/*WDI_ProcessStartRsp*/
16145
16146
16147/**
16148 @brief Process Stop Response function (called when a response
16149 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016150
16151 @param pWDICtx: pointer to the WLAN DAL context
16152 pEventData: pointer to the event information structure
16153
Jeff Johnson295189b2012-06-20 16:38:30 -070016154 @see
16155 @return Result of the function call
16156*/
16157WDI_Status
16158WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016159(
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 WDI_ControlBlockType* pWDICtx,
16161 WDI_EventInfoType* pEventData
16162)
16163{
16164 WDI_Status wdiStatus;
16165 WDI_StopRspCb wdiStopRspCb = NULL;
16166
Jeff Johnsone7245742012-09-05 17:12:55 -070016167 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16169
Jeff Johnsone7245742012-09-05 17:12:55 -070016170 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016172 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016173 -------------------------------------------------------------------------*/
16174 if (( NULL == pEventData ) ||
16175 ( NULL == pEventData->pEventData) ||
16176 ( NULL == wdiStopRspCb ))
16177 {
16178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 }
16183
16184 /*-------------------------------------------------------------------------
16185 Extract response and send it to UMAC
16186 -------------------------------------------------------------------------*/
16187 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16188 {
16189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016190 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016191 pEventData->uEventDataSize);
16192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 }
16195
16196 /*-------------------------------------------------------------------------
16197 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016198 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016200 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16201 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016202 sizeof(halMacStopRspMsg.stopRspParams));
16203
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016205
16206 wpalMutexAcquire(&pWDICtx->wptMutex);
16207
16208 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016209 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 --------------------------------------------------------------------------*/
16211 if ( WDI_STATUS_SUCCESS != wdiStatus )
16212 {
16213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16214 "Failed to stop the device with status %s (%d)",
16215 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16216 halMacStopRspMsg.stopRspParams.status);
16217
Jeff Johnsone7245742012-09-05 17:12:55 -070016218 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016219 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016220
Jeff Johnson295189b2012-06-20 16:38:30 -070016221 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016223 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016224
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16226
16227 /*Transition now as WDI may get preempted imediately after it sends
16228 up the Stop Response and it will not get to process the state transition
16229 from Main Rsp function*/
16230 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16231 wpalMutexRelease(&pWDICtx->wptMutex);
16232
16233 /*! TO DO: - STOP the Data transport */
16234
16235 /*Notify UMAC*/
16236 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16237
Jeff Johnsone7245742012-09-05 17:12:55 -070016238 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016239}/*WDI_ProcessStopRsp*/
16240
16241/**
16242 @brief Process Close Rsp function (called when a response
16243 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016244
16245 @param pWDICtx: pointer to the WLAN DAL context
16246 pEventData: pointer to the event information structure
16247
Jeff Johnson295189b2012-06-20 16:38:30 -070016248 @see
16249 @return Result of the function call
16250*/
16251WDI_Status
16252WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016253(
Jeff Johnson295189b2012-06-20 16:38:30 -070016254 WDI_ControlBlockType* pWDICtx,
16255 WDI_EventInfoType* pEventData
16256)
16257{
16258 /*There is no close response comming from HAL - function just kept for
16259 simmetry */
16260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016261 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016262}/*WDI_ProcessCloseRsp*/
16263
16264
16265/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016266 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016267============================================================================*/
16268
16269/**
16270 @brief Process Init Scan Rsp function (called when a response
16271 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016272
16273 @param pWDICtx: pointer to the WLAN DAL context
16274 pEventData: pointer to the event information structure
16275
Jeff Johnson295189b2012-06-20 16:38:30 -070016276 @see
16277 @return Result of the function call
16278*/
16279WDI_Status
16280WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016281(
Jeff Johnson295189b2012-06-20 16:38:30 -070016282 WDI_ControlBlockType* pWDICtx,
16283 WDI_EventInfoType* pEventData
16284)
16285{
16286 WDI_Status wdiStatus;
16287 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016288 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016289 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16291
16292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 -------------------------------------------------------------------------*/
16295 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16296 ( NULL == pEventData->pEventData))
16297 {
16298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016299 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 }
16303
16304 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16305 if( NULL == wdiInitScanRspCb)
16306 {
16307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016308 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016311 }
16312
16313 /*-------------------------------------------------------------------------
16314 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016315 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016316 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016317 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16318 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016319 sizeof(halInitScanRspMsg.initScanRspParams));
16320
Jeff Johnsone7245742012-09-05 17:12:55 -070016321 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016322
16323 if ( pWDICtx->bInBmps )
16324 {
16325 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016326 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16327 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016329 "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 -080016330 WDI_ASSERT(0);
16331 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016332 }
16333
16334 /*Notify UMAC*/
16335 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16336
Jeff Johnsone7245742012-09-05 17:12:55 -070016337 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016338}/*WDI_ProcessInitScanRsp*/
16339
16340
16341/**
16342 @brief Process Start Scan Rsp function (called when a response
16343 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016344
16345 @param pWDICtx: pointer to the WLAN DAL context
16346 pEventData: pointer to the event information structure
16347
Jeff Johnson295189b2012-06-20 16:38:30 -070016348 @see
16349 @return Result of the function call
16350*/
16351WDI_Status
16352WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016353(
Jeff Johnson295189b2012-06-20 16:38:30 -070016354 WDI_ControlBlockType* pWDICtx,
16355 WDI_EventInfoType* pEventData
16356)
16357{
16358 WDI_StartScanRspParamsType wdiStartScanParams;
16359 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016360
16361 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16363
16364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016366 -------------------------------------------------------------------------*/
16367 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16368 ( NULL == pEventData->pEventData))
16369 {
16370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016374 }
16375
16376 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16377 if( NULL == wdiStartScanRspCb)
16378 {
16379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016380 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016383 }
16384
16385 /*-------------------------------------------------------------------------
16386 Extract response and send it to UMAC
16387 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016388 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16389 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016390 sizeof(halStartScanRspMsg.startScanRspParams));
16391
16392 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16393 halStartScanRspMsg.startScanRspParams.status);
16394#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016395 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016396 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016397 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 halStartScanRspMsg.startScanRspParams.startTSF,
16399 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016400#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016401
16402 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16403 {
16404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16405 "Start scan failed with status %s (%d)",
16406 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16407 halStartScanRspMsg.startScanRspParams.status);
16408 /* send the status to UMAC, don't return from here*/
16409 }
16410
16411 /*Notify UMAC*/
16412 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16413
Jeff Johnsone7245742012-09-05 17:12:55 -070016414 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016415
16416}/*WDI_ProcessStartScanRsp*/
16417
16418
16419/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016422
16423 @param pWDICtx: pointer to the WLAN DAL context
16424 pEventData: pointer to the event information structure
16425
Jeff Johnson295189b2012-06-20 16:38:30 -070016426 @see
16427 @return Result of the function call
16428*/
16429WDI_Status
16430WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016431(
Jeff Johnson295189b2012-06-20 16:38:30 -070016432 WDI_ControlBlockType* pWDICtx,
16433 WDI_EventInfoType* pEventData
16434)
16435{
16436 WDI_Status wdiStatus;
16437 tHalEndScanRspMsg halEndScanRspMsg;
16438 WDI_EndScanRspCb wdiEndScanRspCb;
16439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16440
16441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016443 -------------------------------------------------------------------------*/
16444 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16445 ( NULL == pEventData->pEventData))
16446 {
16447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016451 }
16452
16453 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16454
16455 /*-------------------------------------------------------------------------
16456 Extract response and send it to UMAC
16457 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016458 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16459 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016460 sizeof(halEndScanRspMsg.endScanRspParams));
16461
Jeff Johnsone7245742012-09-05 17:12:55 -070016462 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016463
16464 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16465 {
16466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16467 "End Scan failed with status %s (%d )",
16468 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16469 halEndScanRspMsg.endScanRspParams.status);
16470 /* send the status to UMAC, don't return from here*/
16471 }
16472
16473 /*Notify UMAC*/
16474 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16475
Jeff Johnsone7245742012-09-05 17:12:55 -070016476 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016477}/*WDI_ProcessEndScanRsp*/
16478
16479
16480/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016481 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016482 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016483
16484 @param pWDICtx: pointer to the WLAN DAL context
16485 pEventData: pointer to the event information structure
16486
Jeff Johnson295189b2012-06-20 16:38:30 -070016487 @see
16488 @return Result of the function call
16489*/
16490WDI_Status
16491WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016492(
Jeff Johnson295189b2012-06-20 16:38:30 -070016493 WDI_ControlBlockType* pWDICtx,
16494 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016495)
Jeff Johnson295189b2012-06-20 16:38:30 -070016496{
16497 WDI_Status wdiStatus;
16498 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016499
16500 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16502
16503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016505 -------------------------------------------------------------------------*/
16506 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16507 ( NULL == pEventData->pEventData))
16508 {
16509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 }
16514
16515 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16516
16517 /*-------------------------------------------------------------------------
16518 Extract response and send it to UMAC
16519 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016520 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16521 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016522 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16523
Jeff Johnsone7245742012-09-05 17:12:55 -070016524 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016525
16526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016527 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016528 halFinishScanRspMsg.finishScanRspParams.status);
16529
16530 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16531 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16532 {
16533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16534 "Finish Scan failed with status %s (%d)",
16535 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16536 halFinishScanRspMsg.finishScanRspParams.status);
16537 /* send the status to UMAC, don't return from here*/
16538 }
16539
16540 /*Notify UMAC*/
16541 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16542
Jeff Johnsone7245742012-09-05 17:12:55 -070016543 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016544}/*WDI_ProcessFinishScanRsp*/
16545
16546/**
16547 @brief Process Join Response function (called when a response
16548 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016549
16550 @param pWDICtx: pointer to the WLAN DAL context
16551 pEventData: pointer to the event information structure
16552
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 @see
16554 @return Result of the function call
16555*/
16556WDI_Status
16557WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016558(
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 WDI_ControlBlockType* pWDICtx,
16560 WDI_EventInfoType* pEventData
16561)
16562{
16563 WDI_Status wdiStatus;
16564 WDI_JoinRspCb wdiJoinRspCb;
16565 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016566
16567 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16569
16570 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016571 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016572 -------------------------------------------------------------------------*/
16573 if (( NULL == pWDICtx ) ||
16574 ( NULL == pWDICtx->pfncRspCB ) ||
16575 ( NULL == pEventData ) ||
16576 ( NULL == pEventData->pEventData))
16577 {
16578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016579 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 }
16583
16584 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16585
16586 /*-------------------------------------------------------------------------
16587 Extract response and send it to UMAC
16588 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016589 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16590 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016591 sizeof(halJoinRspMsg.joinRspParams));
16592
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016594
16595 wpalMutexAcquire(&pWDICtx->wptMutex);
16596
16597 /*-----------------------------------------------------------------------
16598 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016599 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016601 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016602 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16603 {
16604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016605 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16606 "association no longer in progress %d - mysterious HAL response",
16607 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016608
Jeff Johnsone7245742012-09-05 17:12:55 -070016609 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016610 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016611 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016612 }
16613
16614 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16615
16616 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016617 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016618 -----------------------------------------------------------------------*/
16619 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16620 {
16621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16622 "Join only allowed in Joining state - failure state is %d "
16623 "strange HAL response", pBSSSes->wdiAssocState);
16624
Jeff Johnsone7245742012-09-05 17:12:55 -070016625 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16626
Jeff Johnson295189b2012-06-20 16:38:30 -070016627 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016629 }
16630
16631
16632 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016633 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 -----------------------------------------------------------------------*/
16635 if ( WDI_STATUS_SUCCESS != wdiStatus )
16636 {
16637 /*Association was failed by HAL - remove session*/
16638 WDI_DeleteSession(pWDICtx, pBSSSes);
16639
16640 /*Association no longer in progress */
16641 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16642
16643 /*Association no longer in progress - prepare pending assoc for processing*/
16644 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016645
Jeff Johnson295189b2012-06-20 16:38:30 -070016646 }
16647 else
16648 {
16649 /*Transition to state Joining - this may be redundant as we are supposed
16650 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016651 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016652 }
16653
16654 wpalMutexRelease(&pWDICtx->wptMutex);
16655
16656 /*Notify UMAC*/
16657 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16658
Jeff Johnsone7245742012-09-05 17:12:55 -070016659 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016660}/*WDI_ProcessJoinRsp*/
16661
16662
16663/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016664 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016665 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016666
16667 @param pWDICtx: pointer to the WLAN DAL context
16668 pEventData: pointer to the event information structure
16669
Jeff Johnson295189b2012-06-20 16:38:30 -070016670 @see
16671 @return Result of the function call
16672*/
16673WDI_Status
16674WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016675(
Jeff Johnson295189b2012-06-20 16:38:30 -070016676 WDI_ControlBlockType* pWDICtx,
16677 WDI_EventInfoType* pEventData
16678)
16679{
16680 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16681 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016682 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016683 WDI_BSSSessionType* pBSSSes = NULL;
16684
Jeff Johnsone7245742012-09-05 17:12:55 -070016685 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016686 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16687 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016688
Jeff Johnson295189b2012-06-20 16:38:30 -070016689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16690
16691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 -------------------------------------------------------------------------*/
16694 if (( NULL == pEventData ) ||
16695 ( NULL == pEventData->pEventData))
16696 {
16697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016701 }
16702
16703 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16704
16705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016706 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016707 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016708 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16709 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016710 sizeof(halConfigBssRspMsg.configBssRspParams));
16711
16712 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16713 halConfigBssRspMsg.configBssRspParams.status);
16714 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16715 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016716 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016717 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16718 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016719
Jeff Johnson295189b2012-06-20 16:38:30 -070016720 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016721
16722 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016723 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016724
16725 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016726 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016727
Jeff Johnson295189b2012-06-20 16:38:30 -070016728 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016729
Jeff Johnson295189b2012-06-20 16:38:30 -070016730 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016731 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016732 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16733 #endif
16734 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16735 halConfigBssRspMsg.configBssRspParams.staMac,
16736 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016737
Jeff Johnson295189b2012-06-20 16:38:30 -070016738 wpalMutexAcquire(&pWDICtx->wptMutex);
16739 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016740 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016741 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016742 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16743 wdiConfigBSSParams.macBSSID,
16744 &pBSSSes);
16745
Jeff Johnson295189b2012-06-20 16:38:30 -070016746 /*-----------------------------------------------------------------------
16747 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016748 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016749 -----------------------------------------------------------------------*/
16750 if ( NULL == pBSSSes )
16751 {
16752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16753 "Association sequence for this BSS does not yet exist "
16754 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016755
16756 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16757
Jeff Johnson295189b2012-06-20 16:38:30 -070016758 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016759 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016760 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016761
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 /*Save data for this BSS*/
16763 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16764 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016765 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016766 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016767 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016768 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016769 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016770 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016771 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016772 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016773 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016774 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16775 pBSSSes->bcastStaIdx =
16776 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016777
Jeff Johnson295189b2012-06-20 16:38:30 -070016778 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016779
Jeff Johnson295189b2012-06-20 16:38:30 -070016780 /*-------------------------------------------------------------------------
16781 Add Peer STA
16782 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016783 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016784 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16785 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016786
Jeff Johnson295189b2012-06-20 16:38:30 -070016787 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016788 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016789 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016790 wdiAddSTAParam.ucHTCapable =
16791 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16792 wdiAddSTAParam.ucStaType =
16793 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16794
Jeff Johnson295189b2012-06-20 16:38:30 -070016795 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016796 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16797 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016798 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016799
16800 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16801 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16802 WDI_MAC_ADDR_LEN);
16803
Jeff Johnson295189b2012-06-20 16:38:30 -070016804 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016805 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016806 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016807 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016810 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016811 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016812 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016813 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016814 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016815 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016816 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016817
Jeff Johnson295189b2012-06-20 16:38:30 -070016818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16819 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016820
Jeff Johnson295189b2012-06-20 16:38:30 -070016821 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16822 /*-------------------------------------------------------------------------
16823 Add Broadcast STA only in AP mode
16824 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016825 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016826 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016827 {
16828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16829 "Add BCAST STA to table for index: %d",
16830 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016831
16832 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016833 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016834
Jeff Johnson295189b2012-06-20 16:38:30 -070016835 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16836 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16837 }
16838 wpalMutexRelease(&pWDICtx->wptMutex);
16839 }
16840 else
16841 {
16842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16843 "Config BSS RSP failed with status : %s(%d)",
16844 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016845 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016846 halConfigBssRspMsg.configBssRspParams.status);
16847
Jeff Johnsone7245742012-09-05 17:12:55 -070016848
Jeff Johnson295189b2012-06-20 16:38:30 -070016849 /*Association was failed by HAL - remove session*/
16850 WDI_DeleteSession(pWDICtx, pBSSSes);
16851
16852 /*Association no longer in progress */
16853 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16854
16855 /*Association no longer in progress - prepare pending assoc for processing*/
16856 WDI_DequeueAssocRequest(pWDICtx);
16857
16858 }
16859
16860 /*Notify UMAC*/
16861 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16862
Jeff Johnsone7245742012-09-05 17:12:55 -070016863 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016864}/*WDI_ProcessConfigBSSRsp*/
16865
16866
16867/**
16868 @brief Process Del BSS Response function (called when a response
16869 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016870
16871 @param pWDICtx: pointer to the WLAN DAL context
16872 pEventData: pointer to the event information structure
16873
Jeff Johnson295189b2012-06-20 16:38:30 -070016874 @see
16875 @return Result of the function call
16876*/
16877WDI_Status
16878WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016879(
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 WDI_ControlBlockType* pWDICtx,
16881 WDI_EventInfoType* pEventData
16882)
16883{
16884 WDI_DelBSSRspParamsType wdiDelBSSParams;
16885 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016886 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016887 WDI_BSSSessionType* pBSSSes = NULL;
16888
Jeff Johnsone7245742012-09-05 17:12:55 -070016889 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16891
16892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016893 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016894 -------------------------------------------------------------------------*/
16895 if (( NULL == pEventData ) ||
16896 ( NULL == pEventData->pEventData))
16897 {
16898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016899 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016902 }
16903
16904 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16905
16906 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016907 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016908 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016909 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16910 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016911 sizeof(halDelBssRspMsg.deleteBssRspParams));
16912
16913
16914 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016915 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016916
16917 wpalMutexAcquire(&pWDICtx->wptMutex);
16918
16919 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016920 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016921 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016922 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16923 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16924 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016925
16926 /*-----------------------------------------------------------------------
16927 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016928 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016929 -----------------------------------------------------------------------*/
16930 if ( NULL == pBSSSes )
16931 {
16932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16933 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016934 "association no longer in progress - mysterious HAL response");
16935
16936 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16937
16938 wpalMutexRelease(&pWDICtx->wptMutex);
16939 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016940 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016941
16942 /*Extract BSSID for the response to UMAC*/
16943 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16944 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16945
16946 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16947
16948 /*-----------------------------------------------------------------------
16949 The current session will be deleted
16950 -----------------------------------------------------------------------*/
16951 WDI_DeleteSession(pWDICtx, pBSSSes);
16952
16953
16954 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016955 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16956 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016957 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016958 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016959 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016960
16961 /* Delete the STA's in this BSS */
16962 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16963
Jeff Johnson295189b2012-06-20 16:38:30 -070016964 wpalMutexRelease(&pWDICtx->wptMutex);
16965
16966 /*Notify UMAC*/
16967 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16968
Jeff Johnsone7245742012-09-05 17:12:55 -070016969 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016970}/*WDI_ProcessDelBSSRsp*/
16971
16972/**
16973 @brief Process Post Assoc Rsp function (called when a response
16974 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016975
16976 @param pWDICtx: pointer to the WLAN DAL context
16977 pEventData: pointer to the event information structure
16978
Jeff Johnson295189b2012-06-20 16:38:30 -070016979 @see
16980 @return Result of the function call
16981*/
16982WDI_Status
16983WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016984(
Jeff Johnson295189b2012-06-20 16:38:30 -070016985 WDI_ControlBlockType* pWDICtx,
16986 WDI_EventInfoType* pEventData
16987)
16988{
16989 WDI_PostAssocRspParamsType wdiPostAssocParams;
16990 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016991 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016992 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016993 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16995
16996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016998 -------------------------------------------------------------------------*/
16999 if (( NULL == pEventData ) ||
17000 ( NULL == pEventData->pEventData))
17001 {
17002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017006 }
17007
17008 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17009
17010 /*-------------------------------------------------------------------------
17011 Extract response and send it to UMAC
17012 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017013 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17014 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017015 sizeof(halPostAssocRspMsg.postAssocRspParams));
17016
17017 /*Extract the Post Assoc STA Params */
17018
Jeff Johnsone7245742012-09-05 17:12:55 -070017019 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017021 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017022 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017023 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17025
Jeff Johnsone7245742012-09-05 17:12:55 -070017026 wdiPostAssocParams.wdiStatus =
17027 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017028
17029 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17030 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017031 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17032 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017033 WDI_MAC_ADDR_LEN);
17034
17035 /* Extract Post Assoc BSS Params */
17036
Jeff Johnsone7245742012-09-05 17:12:55 -070017037 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17038 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17039 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017040
17041 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17042 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017043 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017044 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17045 .macSTA, WDI_MAC_ADDR_LEN);
17046
Jeff Johnsone7245742012-09-05 17:12:55 -070017047 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017048 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17049
Jeff Johnsone7245742012-09-05 17:12:55 -070017050 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017051 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17052
17053 wdiPostAssocParams.bssParams.ucBSSIdx =
17054 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17055
Jeff Johnsone7245742012-09-05 17:12:55 -070017056 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017057 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17058
17059 wpalMutexAcquire(&pWDICtx->wptMutex);
17060
17061 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017062 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017064 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017065 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017066 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017067
17068 /*-----------------------------------------------------------------------
17069 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017070 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017071 -----------------------------------------------------------------------*/
17072 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017073 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017074 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17075 {
17076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17077 "Association sequence for this BSS does not yet exist or "
17078 "association no longer in progress - mysterious HAL response");
17079
Jeff Johnsone7245742012-09-05 17:12:55 -070017080 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17081
Jeff Johnson295189b2012-06-20 16:38:30 -070017082 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017083 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017084 }
17085
17086 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017087 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017088 -----------------------------------------------------------------------*/
17089 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17090 {
17091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17092 "Post Assoc not allowed before JOIN - failing request "
17093 "strange HAL response");
17094
Jeff Johnsone7245742012-09-05 17:12:55 -070017095 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17096
Jeff Johnson295189b2012-06-20 16:38:30 -070017097 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017098 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017099 }
17100
17101 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017102 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017103 -----------------------------------------------------------------------*/
17104 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17105 {
17106 /*Association was failed by HAL - remove session*/
17107 WDI_DeleteSession(pWDICtx, pBSSSes);
17108 }
17109 else
17110 {
17111 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017112 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017113
17114 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017115 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017116 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017117 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017118 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017119 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017121 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017122 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17123
Jeff Johnsone7245742012-09-05 17:12:55 -070017124 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017125 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17126 }
17127
17128 /*Association no longer in progress */
17129 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17130
17131 /*Association no longer in progress - prepare pending assoc for processing*/
17132 WDI_DequeueAssocRequest(pWDICtx);
17133
17134 wpalMutexRelease(&pWDICtx->wptMutex);
17135
17136 /*Notify UMAC*/
17137 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17138
Jeff Johnsone7245742012-09-05 17:12:55 -070017139 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017140}/*WDI_ProcessPostAssocRsp*/
17141
17142/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017143 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017144 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017145
17146 @param pWDICtx: pointer to the WLAN DAL context
17147 pEventData: pointer to the event information structure
17148
Jeff Johnson295189b2012-06-20 16:38:30 -070017149 @see
17150 @return Result of the function call
17151*/
17152WDI_Status
17153WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017154(
Jeff Johnson295189b2012-06-20 16:38:30 -070017155 WDI_ControlBlockType* pWDICtx,
17156 WDI_EventInfoType* pEventData
17157)
17158{
17159 WDI_DelSTARspParamsType wdiDelSTARsp;
17160 WDI_DelSTARspCb wdiDelSTARspCb;
17161 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017162 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17164
17165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017167 -------------------------------------------------------------------------*/
17168 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17169 ( NULL == pEventData->pEventData))
17170 {
17171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017172 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017175 }
17176
17177 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17178
17179 /*-------------------------------------------------------------------------
17180 Extract response and send it to UMAC
17181 -------------------------------------------------------------------------*/
17182 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017183 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017184 sizeof(halDelStaRspMsg.delStaRspParams));
17185
17186 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017187 wdiDelSTARsp.wdiStatus =
17188 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017189
17190 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17191
17192 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17193 if(staType == WDI_STA_ENTRY_SELF)
17194 {
17195 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17196
17197 /* At this point add the self-STA */
17198
17199 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17200 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17201 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17202
17203#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17204#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17205
17206 //all DPU indices are the same for self STA
17207 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17208 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17209 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17210 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17211 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17212 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017213
17214 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017215 }
17216 else
17217 {
17218 //Delete the station in the table
17219 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17220 }
17221
17222 /*Notify UMAC*/
17223 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17224
Jeff Johnsone7245742012-09-05 17:12:55 -070017225 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017226}/*WDI_ProcessDelSTARsp*/
17227
17228
17229/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017230 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017231==========================================================================*/
17232
17233/**
17234 @brief Process Set BSS Key Rsp function (called when a response
17235 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017236
17237 @param pWDICtx: pointer to the WLAN DAL context
17238 pEventData: pointer to the event information structure
17239
Jeff Johnson295189b2012-06-20 16:38:30 -070017240 @see
17241 @return Result of the function call
17242*/
17243WDI_Status
17244WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017245(
Jeff Johnson295189b2012-06-20 16:38:30 -070017246 WDI_ControlBlockType* pWDICtx,
17247 WDI_EventInfoType* pEventData
17248)
17249{
17250 WDI_Status wdiStatus;
17251 eHalStatus halStatus;
17252 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17254
17255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017256 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 -------------------------------------------------------------------------*/
17258 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17259 ( NULL == pEventData->pEventData))
17260 {
17261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017265 }
17266
17267 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17268
17269 /*-------------------------------------------------------------------------
17270 Extract response and send it to UMAC
17271 -------------------------------------------------------------------------*/
17272 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017273 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017274
17275 if ( eHAL_STATUS_SUCCESS != halStatus )
17276 {
17277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17278 "Set BSS Key failed with status %s (%d)",
17279 WDI_getHALStatusMsgString(halStatus),
17280 halStatus);
17281 /* send the status to UMAC, don't return from here*/
17282 }
17283
17284 /*Notify UMAC*/
17285 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17286
Jeff Johnsone7245742012-09-05 17:12:55 -070017287 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017288}/*WDI_ProcessSetBssKeyRsp*/
17289
17290/**
17291 @brief Process Remove BSS Key Rsp function (called when a response
17292 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017293
17294 @param pWDICtx: pointer to the WLAN DAL context
17295 pEventData: pointer to the event information structure
17296
Jeff Johnson295189b2012-06-20 16:38:30 -070017297 @see
17298 @return Result of the function call
17299*/
17300WDI_Status
17301WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017302(
Jeff Johnson295189b2012-06-20 16:38:30 -070017303 WDI_ControlBlockType* pWDICtx,
17304 WDI_EventInfoType* pEventData
17305)
17306{
17307 WDI_Status wdiStatus;
17308 eHalStatus halStatus;
17309 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17311
17312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017313 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017314 -------------------------------------------------------------------------*/
17315 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17316 ( NULL == pEventData->pEventData))
17317 {
17318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017319 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017322 }
17323
17324 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17325
17326 /*-------------------------------------------------------------------------
17327 Extract response and send it to UMAC
17328 -------------------------------------------------------------------------*/
17329 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017330 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017331
17332 if ( eHAL_STATUS_SUCCESS != halStatus )
17333 {
17334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17335 "Remove BSS Key failed with status %s (%d )",
17336 WDI_getHALStatusMsgString(halStatus),
17337 halStatus);
17338 /* send the status to UMAC, don't return from here*/
17339 }
17340
17341 /*Notify UMAC*/
17342 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17343
Jeff Johnsone7245742012-09-05 17:12:55 -070017344 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017345}/*WDI_ProcessSetBssKeyRsp*/
17346
17347
17348/**
17349 @brief Process Set STA Key Rsp function (called when a response
17350 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017351
17352 @param pWDICtx: pointer to the WLAN DAL context
17353 pEventData: pointer to the event information structure
17354
Jeff Johnson295189b2012-06-20 16:38:30 -070017355 @see
17356 @return Result of the function call
17357*/
17358WDI_Status
17359WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017360(
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 WDI_ControlBlockType* pWDICtx,
17362 WDI_EventInfoType* pEventData
17363)
17364{
17365 WDI_Status wdiStatus;
17366 eHalStatus halStatus;
17367 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17369
17370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 -------------------------------------------------------------------------*/
17373 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17374 ( NULL == pEventData->pEventData))
17375 {
17376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 }
17381
17382 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17383
17384 /*-------------------------------------------------------------------------
17385 Extract response and send it to UMAC
17386 -------------------------------------------------------------------------*/
17387 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017388 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017389
17390 if ( eHAL_STATUS_SUCCESS != halStatus )
17391 {
17392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17393 "Set STA Key failed with status %s (%d)",
17394 WDI_getHALStatusMsgString(halStatus),
17395 halStatus);
17396 /* send the status to UMAC, don't return from here*/
17397 }
17398
17399 /*Notify UMAC*/
17400 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17401
Jeff Johnsone7245742012-09-05 17:12:55 -070017402 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017403}/*WDI_ProcessSetSTAKeyRsp*/
17404
17405/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017406 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017407 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017408
17409 @param pWDICtx: pointer to the WLAN DAL context
17410 pEventData: pointer to the event information structure
17411
Jeff Johnson295189b2012-06-20 16:38:30 -070017412 @see
17413 @return Result of the function call
17414*/
17415WDI_Status
17416WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017417(
Jeff Johnson295189b2012-06-20 16:38:30 -070017418 WDI_ControlBlockType* pWDICtx,
17419 WDI_EventInfoType* pEventData
17420)
17421{
17422 WDI_Status wdiStatus;
17423 eHalStatus halStatus;
17424 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17426
17427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017429 -------------------------------------------------------------------------*/
17430 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17431 ( NULL == pEventData->pEventData))
17432 {
17433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017437 }
17438
17439 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17440
17441 /*-------------------------------------------------------------------------
17442 Extract response and send it to UMAC
17443 -------------------------------------------------------------------------*/
17444 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017445 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017446
17447 if ( eHAL_STATUS_SUCCESS != halStatus )
17448 {
17449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17450 "Remove STA Key failed with status %s (%d)",
17451 WDI_getHALStatusMsgString(halStatus),
17452 halStatus);
17453 /* send the status to UMAC, don't return from here*/
17454 }
17455
17456 /*Notify UMAC*/
17457 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17458
Jeff Johnsone7245742012-09-05 17:12:55 -070017459 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017460}/*WDI_ProcessRemoveStaKeyRsp*/
17461
17462/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017463 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017464 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017465
17466 @param pWDICtx: pointer to the WLAN DAL context
17467 pEventData: pointer to the event information structure
17468
Jeff Johnson295189b2012-06-20 16:38:30 -070017469 @see
17470 @return Result of the function call
17471*/
17472WDI_Status
17473WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017474(
Jeff Johnson295189b2012-06-20 16:38:30 -070017475 WDI_ControlBlockType* pWDICtx,
17476 WDI_EventInfoType* pEventData
17477)
17478{
17479 WDI_Status wdiStatus;
17480 eHalStatus halStatus;
17481 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17483
17484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017486 -------------------------------------------------------------------------*/
17487 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17488 ( NULL == pEventData->pEventData))
17489 {
17490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017491 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017494 }
17495
17496 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17497
17498 /*-------------------------------------------------------------------------
17499 Extract response and send it to UMAC
17500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017501 wpalMemoryCopy( &halStatus,
17502 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017503 sizeof(halStatus));
17504
Jeff Johnsone7245742012-09-05 17:12:55 -070017505 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017506
17507 if ( eHAL_STATUS_SUCCESS != halStatus )
17508 {
17509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17510 "Set STA Key failed with status %s (%d)",
17511 WDI_getHALStatusMsgString(halStatus),
17512 halStatus);
17513 /* send the status to UMAC, don't return from here*/
17514 }
17515
17516 /*Notify UMAC*/
17517 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17518
Jeff Johnsone7245742012-09-05 17:12:55 -070017519 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017520}/*WDI_ProcessSetSTABcastKeyRsp*/
17521
17522/**
17523 @brief Process Remove STA Bcast Key Rsp function (called when a
17524 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017525
17526 @param pWDICtx: pointer to the WLAN DAL context
17527 pEventData: pointer to the event information structure
17528
Jeff Johnson295189b2012-06-20 16:38:30 -070017529 @see
17530 @return Result of the function call
17531*/
17532WDI_Status
17533WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017534(
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 WDI_ControlBlockType* pWDICtx,
17536 WDI_EventInfoType* pEventData
17537)
17538{
17539 WDI_Status wdiStatus;
17540 eHalStatus halStatus;
17541 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17543
17544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 -------------------------------------------------------------------------*/
17547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17548 ( NULL == pEventData->pEventData))
17549 {
17550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017554 }
17555
17556 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17557
17558 /*-------------------------------------------------------------------------
17559 Extract response and send it to UMAC
17560 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017561 wpalMemoryCopy( &halStatus,
17562 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017563 sizeof(halStatus));
17564
Jeff Johnsone7245742012-09-05 17:12:55 -070017565 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017566
17567 if ( eHAL_STATUS_SUCCESS != halStatus )
17568 {
17569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17570 "Remove STA Key failed with status %s (%d)",
17571 WDI_getHALStatusMsgString(halStatus),
17572 halStatus);
17573 /* send the status to UMAC, don't return from here*/
17574 }
17575
17576 /*Notify UMAC*/
17577 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17578
Jeff Johnsone7245742012-09-05 17:12:55 -070017579 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017580}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17581
17582
17583/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017584 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017585==========================================================================*/
17586
17587/**
17588 @brief Process Add TSpec Rsp function (called when a response
17589 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017590
17591 @param pWDICtx: pointer to the WLAN DAL context
17592 pEventData: pointer to the event information structure
17593
Jeff Johnson295189b2012-06-20 16:38:30 -070017594 @see
17595 @return Result of the function call
17596*/
17597WDI_Status
17598WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017599(
Jeff Johnson295189b2012-06-20 16:38:30 -070017600 WDI_ControlBlockType* pWDICtx,
17601 WDI_EventInfoType* pEventData
17602)
17603{
17604 WDI_Status wdiStatus;
17605 eHalStatus halStatus;
17606 WDI_AddTsRspCb wdiAddTsRspCb;
17607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17608
17609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017611 -------------------------------------------------------------------------*/
17612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17613 ( NULL == pEventData->pEventData))
17614 {
17615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017619 }
17620
17621 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17622
17623 /*-------------------------------------------------------------------------
17624 Extract response and send it to UMAC
17625 -------------------------------------------------------------------------*/
17626 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017627 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017628
17629 /*Notify UMAC*/
17630 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17631
Jeff Johnsone7245742012-09-05 17:12:55 -070017632 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017633}/*WDI_ProcessAddTSpecRsp*/
17634
17635
Sunil Duttbd736ed2014-05-26 21:19:41 +053017636
17637#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17638
17639WDI_Status
17640WDI_ProcessLLStatsSetRsp
17641(
17642 WDI_ControlBlockType* pWDICtx,
17643 WDI_EventInfoType* pEventData
17644)
17645{
17646 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17647
17648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17649 "%s: Enter ", __func__);
17650 /*-------------------------------------------------------------------------
17651 Sanity check
17652 -------------------------------------------------------------------------*/
17653 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17654 ( NULL == pEventData->pEventData))
17655 {
17656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17657 "%s: Invalid parameters", __func__);
17658 WDI_ASSERT(0);
17659 return WDI_STATUS_E_FAILURE;
17660 }
17661
17662 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17663
17664 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17665
17666 return WDI_STATUS_SUCCESS;
17667}
17668
17669WDI_Status
17670WDI_ProcessLLStatsGetRsp
17671(
17672 WDI_ControlBlockType* pWDICtx,
17673 WDI_EventInfoType* pEventData
17674)
17675{
17676 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17677
17678 /*-------------------------------------------------------------------------
17679 Sanity check
17680 -------------------------------------------------------------------------*/
17681 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17682 ( NULL == pEventData->pEventData))
17683 {
17684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17685 "%s: Invalid parameters", __func__);
17686 WDI_ASSERT(0);
17687 return WDI_STATUS_E_FAILURE;
17688 }
17689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17690 "%s: Enter ", __func__);
17691
17692 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17693
17694 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17695
17696 return WDI_STATUS_SUCCESS;
17697}
17698
17699WDI_Status
17700WDI_ProcessLLStatsClearRsp
17701(
17702 WDI_ControlBlockType* pWDICtx,
17703 WDI_EventInfoType* pEventData
17704)
17705{
17706 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17707
17708 /*-------------------------------------------------------------------------
17709 Sanity check
17710 -------------------------------------------------------------------------*/
17711 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17712 ( NULL == pEventData->pEventData))
17713 {
17714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17715 "%s: Invalid parameters", __func__);
17716 WDI_ASSERT(0);
17717 return WDI_STATUS_E_FAILURE;
17718 }
17719
17720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17721 "%s: CLEAR RESPONSE CALL BACK", __func__);
17722 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17723
17724 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17725
17726 return WDI_STATUS_SUCCESS;
17727}
17728#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17729
Jeff Johnson295189b2012-06-20 16:38:30 -070017730/**
17731 @brief Process Del TSpec Rsp function (called when a response
17732 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017733
17734 @param pWDICtx: pointer to the WLAN DAL context
17735 pEventData: pointer to the event information structure
17736
Jeff Johnson295189b2012-06-20 16:38:30 -070017737 @see
17738 @return Result of the function call
17739*/
17740WDI_Status
17741WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017742(
Jeff Johnson295189b2012-06-20 16:38:30 -070017743 WDI_ControlBlockType* pWDICtx,
17744 WDI_EventInfoType* pEventData
17745)
17746{
17747 WDI_Status wdiStatus;
17748 eHalStatus halStatus;
17749 WDI_DelTsRspCb wdiDelTsRspCb;
17750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17751
17752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017754 -------------------------------------------------------------------------*/
17755 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17756 ( NULL == pEventData->pEventData))
17757 {
17758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017759 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017762 }
17763
17764 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17765
17766 /*-------------------------------------------------------------------------
17767 Extract response and send it to UMAC
17768 -------------------------------------------------------------------------*/
17769 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017770 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017771
17772 /*Notify UMAC*/
17773 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17774
Jeff Johnsone7245742012-09-05 17:12:55 -070017775 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017776}/*WDI_ProcessDelTSpecRsp*/
17777
17778/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017779 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017780 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017781
17782 @param pWDICtx: pointer to the WLAN DAL context
17783 pEventData: pointer to the event information structure
17784
Jeff Johnson295189b2012-06-20 16:38:30 -070017785 @see
17786 @return Result of the function call
17787*/
17788WDI_Status
17789WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017790(
Jeff Johnson295189b2012-06-20 16:38:30 -070017791 WDI_ControlBlockType* pWDICtx,
17792 WDI_EventInfoType* pEventData
17793)
17794{
17795 WDI_Status wdiStatus;
17796 eHalStatus halStatus;
17797 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17799
17800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017802 -------------------------------------------------------------------------*/
17803 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17804 ( NULL == pEventData->pEventData))
17805 {
17806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017810 }
17811
17812 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17813
17814 /*-------------------------------------------------------------------------
17815 Extract response and send it to UMAC
17816 -------------------------------------------------------------------------*/
17817 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017818 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017819
17820 /*Notify UMAC*/
17821 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17822
Jeff Johnsone7245742012-09-05 17:12:55 -070017823 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017824}/*WDI_ProcessUpdateEDCAParamsRsp*/
17825
17826
17827/**
17828 @brief Process Add BA Rsp function (called when a response
17829 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017830
17831 @param pWDICtx: pointer to the WLAN DAL context
17832 pEventData: pointer to the event information structure
17833
Jeff Johnson295189b2012-06-20 16:38:30 -070017834 @see
17835 @return Result of the function call
17836*/
17837WDI_Status
17838WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017839(
Jeff Johnson295189b2012-06-20 16:38:30 -070017840 WDI_ControlBlockType* pWDICtx,
17841 WDI_EventInfoType* pEventData
17842)
17843{
17844 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17845
17846 tAddBASessionRspParams halBASessionRsp;
17847 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17848
Jeff Johnsone7245742012-09-05 17:12:55 -070017849
Jeff Johnson295189b2012-06-20 16:38:30 -070017850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17851
17852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017853 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017854 -------------------------------------------------------------------------*/
17855 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17856 ( NULL == pEventData->pEventData))
17857 {
17858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017859 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017860 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017862 }
17863
17864 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17865
17866 /*-------------------------------------------------------------------------
17867 Extract response and send it to UMAC
17868 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017869 wpalMemoryCopy( &halBASessionRsp,
17870 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017871 sizeof(halBASessionRsp));
17872
17873 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17874
Jeff Johnson43971f52012-07-17 12:26:56 -070017875 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017876 {
17877 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17878 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17879 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17880 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17881 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17882 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17883 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17884 }
17885
17886 /*Notify UMAC*/
17887 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17888
Jeff Johnsone7245742012-09-05 17:12:55 -070017889 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017890}/*WDI_ProcessAddSessionBARsp*/
17891
17892
17893/**
17894 @brief Process Del BA Rsp function (called when a response
17895 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017896
17897 @param pWDICtx: pointer to the WLAN DAL context
17898 pEventData: pointer to the event information structure
17899
Jeff Johnson295189b2012-06-20 16:38:30 -070017900 @see
17901 @return Result of the function call
17902*/
17903WDI_Status
17904WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017905(
Jeff Johnson295189b2012-06-20 16:38:30 -070017906 WDI_ControlBlockType* pWDICtx,
17907 WDI_EventInfoType* pEventData
17908)
17909{
17910 WDI_Status wdiStatus;
17911 eHalStatus halStatus;
17912 WDI_DelBARspCb wdiDelBARspCb;
17913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17914
17915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017917 -------------------------------------------------------------------------*/
17918 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17919 ( NULL == pEventData->pEventData))
17920 {
17921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017923 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017925 }
17926
17927 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17928
17929 /*-------------------------------------------------------------------------
17930 Extract response and send it to UMAC
17931 -------------------------------------------------------------------------*/
17932 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017933 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017934
17935 if ( eHAL_STATUS_SUCCESS == halStatus )
17936 {
17937 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17938 }
17939
17940 /*Notify UMAC*/
17941 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17942
Jeff Johnsone7245742012-09-05 17:12:55 -070017943 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017944}/*WDI_ProcessDelBARsp*/
17945
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017946#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017947/**
17948 @brief Process TSM Stats Rsp function (called when a response
17949 is being received over the bus from HAL)
17950
17951 @param pWDICtx: pointer to the WLAN DAL context
17952 pEventData: pointer to the event information structure
17953
17954 @see
17955 @return Result of the function call
17956*/
17957WDI_Status
17958WDI_ProcessTsmStatsRsp
17959(
17960 WDI_ControlBlockType* pWDICtx,
17961 WDI_EventInfoType* pEventData
17962)
17963{
17964 WDI_TsmRspCb wdiTsmStatsRspCb;
17965 tTsmStatsRspMsg halTsmStatsRspMsg;
17966 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17968
17969 /*-------------------------------------------------------------------------
17970 Sanity check
17971 -------------------------------------------------------------------------*/
17972 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17973 ( NULL == pEventData->pEventData))
17974 {
17975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017977 WDI_ASSERT(0);
17978 return WDI_STATUS_E_FAILURE;
17979 }
17980
17981 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17982
17983 /*-------------------------------------------------------------------------
17984 Unpack HAL Response Message - the header was already extracted by the
17985 main Response Handling procedure
17986 -------------------------------------------------------------------------*/
17987 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17988 pEventData->pEventData,
17989 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17990
17991 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17992 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17993 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17994 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17995 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17996 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17997 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17998 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17999 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18000 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18001 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18002 halTsmStatsRspMsg.tsmStatsRspParams.status);
18003
18004 /*Notify UMAC*/
18005 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18006
18007 return WDI_STATUS_SUCCESS;
18008}/*WDI_ProcessTsmStatsRsp*/
18009
18010#endif
18011
18012
18013
18014/**
18015 @brief Process Flush AC Rsp function (called when a response
18016 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018017
18018 @param pWDICtx: pointer to the WLAN DAL context
18019 pEventData: pointer to the event information structure
18020
Jeff Johnson295189b2012-06-20 16:38:30 -070018021 @see
18022 @return Result of the function call
18023*/
18024WDI_Status
18025WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018026(
Jeff Johnson295189b2012-06-20 16:38:30 -070018027 WDI_ControlBlockType* pWDICtx,
18028 WDI_EventInfoType* pEventData
18029)
18030{
18031 WDI_Status wdiStatus;
18032 eHalStatus halStatus;
18033 WDI_FlushAcRspCb wdiFlushAcRspCb;
18034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18035
18036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018037 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 -------------------------------------------------------------------------*/
18039 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18040 ( NULL == pEventData->pEventData))
18041 {
18042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018043 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018046 }
18047
18048 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18049
18050 /*-------------------------------------------------------------------------
18051 Extract response and send it to UMAC
18052 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018053 wpalMemoryCopy( &halStatus,
18054 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018055 sizeof(halStatus));
18056
Jeff Johnsone7245742012-09-05 17:12:55 -070018057 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018058
18059 /*Notify UMAC*/
18060 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18061
Jeff Johnsone7245742012-09-05 17:12:55 -070018062 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018063}/*WDI_ProcessFlushAcRsp*/
18064
18065/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018066 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018067 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018068
18069 @param pWDICtx: pointer to the WLAN DAL context
18070 pEventData: pointer to the event information structure
18071
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 @see
18073 @return Result of the function call
18074*/
18075WDI_Status
18076WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018077(
Jeff Johnson295189b2012-06-20 16:38:30 -070018078 WDI_ControlBlockType* pWDICtx,
18079 WDI_EventInfoType* pEventData
18080)
18081{
18082 WDI_Status wdiStatus;
18083 eHalStatus halStatus;
18084 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18086
18087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018088 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018089 -------------------------------------------------------------------------*/
18090 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18091 ( NULL == pEventData->pEventData))
18092 {
18093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018097 }
18098
18099 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18100
18101 /*-------------------------------------------------------------------------
18102 Extract response and send it to UMAC
18103 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018104 wpalMemoryCopy( &halStatus,
18105 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018106 sizeof(halStatus));
18107
Jeff Johnsone7245742012-09-05 17:12:55 -070018108 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018109
18110 /*Notify UMAC*/
18111 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18112
Jeff Johnsone7245742012-09-05 17:12:55 -070018113 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018114}/*WDI_ProcessBtAmpEventRsp*/
18115
18116
18117/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018118 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018119 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018120
18121 @param pWDICtx: pointer to the WLAN DAL context
18122 pEventData: pointer to the event information structure
18123
Jeff Johnson295189b2012-06-20 16:38:30 -070018124 @see
18125 @return Result of the function call
18126*/
18127WDI_Status
18128WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018129(
Jeff Johnson295189b2012-06-20 16:38:30 -070018130 WDI_ControlBlockType* pWDICtx,
18131 WDI_EventInfoType* pEventData
18132)
18133{
18134 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18135 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18136 tAddStaSelfRspMsg halAddStaSelfRsp;
18137 WDI_AddStaParams wdiAddSTAParam = {0};
18138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18139
18140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018141 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018142 -------------------------------------------------------------------------*/
18143 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18144 ( NULL == pEventData->pEventData))
18145 {
18146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018147 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018148 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018150 }
18151
Jeff Johnsone7245742012-09-05 17:12:55 -070018152 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018153 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18154
18155 /*-------------------------------------------------------------------------
18156 Extract response and send it to UMAC
18157 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018158 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18159 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018160 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18161
18162
Jeff Johnsone7245742012-09-05 17:12:55 -070018163 wdiAddSTASelfParams.wdiStatus =
18164 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018165
Jeff Johnsone7245742012-09-05 17:12:55 -070018166 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018167 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018168 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018169 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018170 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018171 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18172
18173 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18174 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18175 WDI_MAC_ADDR_LEN);
18176
18177
18178#ifdef HAL_SELF_STA_PER_BSS
18179
18180 /* At this point add the self-STA */
18181
18182 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18183 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18184 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18185
18186 //all DPU indices are the same for self STA
18187
18188 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018189 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018190 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18191 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18192 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18193 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18194 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18195
18196 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18197 WDI_MAC_ADDR_LEN);
18198
18199 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18200 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18201
Jeff Johnsone7245742012-09-05 17:12:55 -070018202 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018203 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18204 {
18205 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18206 }
18207#endif
18208
18209 /*Notify UMAC*/
18210 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18211
Jeff Johnsone7245742012-09-05 17:12:55 -070018212 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018213}/*WDI_ProcessAddSTASelfRsp*/
18214
18215
18216
18217/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018220
18221 @param pWDICtx: pointer to the WLAN DAL context
18222 pEventData: pointer to the event information structure
18223
Jeff Johnson295189b2012-06-20 16:38:30 -070018224 @see
18225 @return Result of the function call
18226*/
18227WDI_Status
18228WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018229(
Jeff Johnson295189b2012-06-20 16:38:30 -070018230 WDI_ControlBlockType* pWDICtx,
18231 WDI_EventInfoType* pEventData
18232)
18233{
18234 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18235 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18236 tDelStaSelfRspParams delStaSelfRspParams;
18237 wpt_uint8 ucStaIdx;
18238
18239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18240
18241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018243 -------------------------------------------------------------------------*/
18244 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18245 ( NULL == pEventData->pEventData))
18246 {
18247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018251 }
18252
18253 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18254
18255 /*-------------------------------------------------------------------------
18256 Extract response and send it to UMAC
18257 -------------------------------------------------------------------------*/
18258
Jeff Johnsone7245742012-09-05 17:12:55 -070018259 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018260 (wpt_uint8*)pEventData->pEventData,
18261 sizeof(tDelStaSelfRspParams));
18262
Jeff Johnsone7245742012-09-05 17:12:55 -070018263 wdiDelStaSelfRspParams.wdiStatus =
18264 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018265
Jeff Johnsone7245742012-09-05 17:12:55 -070018266 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018267 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18268 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18269 {
18270 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018271 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018272 delStaSelfRspParams.selfMacAddr,
18273 &ucStaIdx);
18274 if(WDI_STATUS_E_FAILURE == wdiStatus)
18275 {
18276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018277 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018280 }
18281 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18282 }
18283
18284 /*Notify UMAC*/
18285 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18286
18287 return WDI_STATUS_SUCCESS;
18288}
18289
Jeff Johnsone7245742012-09-05 17:12:55 -070018290#ifdef FEATURE_OEM_DATA_SUPPORT
18291/**
18292 @brief Start Oem Data Rsp function (called when a
18293 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018294
Jeff Johnsone7245742012-09-05 17:12:55 -070018295 @param pWDICtx: pointer to the WLAN DAL context
18296 pEventData: pointer to the event information structure
18297
18298 @see
18299 @return Result of the function call
18300*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018301
18302WDI_Status
18303WDI_ProcessStartOemDataRsp
18304(
18305 WDI_ControlBlockType* pWDICtx,
18306 WDI_EventInfoType* pEventData
18307)
18308{
18309 WDI_oemDataRspCb wdiOemDataRspCb;
18310 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18311 tStartOemDataRspParams* halStartOemDataRspParams;
18312
18313 /*-------------------------------------------------------------------------
18314 Sanity check
18315 -------------------------------------------------------------------------*/
18316 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18317 ( NULL == pEventData->pEventData))
18318 {
18319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018320 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018321 WDI_ASSERT(0);
18322 return WDI_STATUS_E_FAILURE;
18323 }
18324
18325 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18326
18327 /*-------------------------------------------------------------------------
18328 Extract response and send it to UMAC
18329 -------------------------------------------------------------------------*/
18330 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18331
18332
18333 //It is the responsibility of the application code to check for failure
18334 //conditions!
18335
18336 //Allocate memory for WDI OEM DATA RSP structure
18337 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18338
18339 if(NULL == wdiOemDataRspParams)
18340 {
18341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018342 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018343 pWDICtx, pEventData, pEventData->pEventData);
18344 WDI_ASSERT(0);
18345 return WDI_STATUS_E_FAILURE;
18346 }
18347
18348 /* Populate WDI structure members */
18349 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18350
18351 /*Notify UMAC*/
18352 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18353
18354 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18355 wpalMemoryFree(wdiOemDataRspParams);
18356
18357 return WDI_STATUS_SUCCESS;
18358}/*WDI_PrcoessStartOemDataRsp*/
18359#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018360
18361/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018362 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018363===========================================================================*/
18364
18365/**
18366 @brief Process Channel Switch Rsp function (called when a response
18367 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018368
18369 @param pWDICtx: pointer to the WLAN DAL context
18370 pEventData: pointer to the event information structure
18371
Jeff Johnson295189b2012-06-20 16:38:30 -070018372 @see
18373 @return Result of the function call
18374*/
18375WDI_Status
18376WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018377(
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 WDI_ControlBlockType* pWDICtx,
18379 WDI_EventInfoType* pEventData
18380)
18381{
18382 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18383 WDI_SwitchChRspCb wdiChSwitchRspCb;
18384 tSwitchChannelRspParams halSwitchChannelRsp;
18385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18386
18387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018389 -------------------------------------------------------------------------*/
18390 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18391 ( NULL == pEventData->pEventData))
18392 {
18393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018394 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018395 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018396 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018397 }
18398
18399 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18400
18401 /*-------------------------------------------------------------------------
18402 Extract response and send it to UMAC
18403 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018404 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018405 (wpt_uint8*)pEventData->pEventData,
18406 sizeof(halSwitchChannelRsp));
18407
Jeff Johnsone7245742012-09-05 17:12:55 -070018408 wdiSwitchChRsp.wdiStatus =
18409 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018410 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18411
18412#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018413 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018414#endif
18415
18416 /*Notify UMAC*/
18417 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18418
Jeff Johnsone7245742012-09-05 17:12:55 -070018419 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018420}/*WDI_ProcessChannelSwitchRsp*/
18421
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018422/**
18423 @brief Process Channel Switch Rsp function (called when a response
18424 is being received over the bus from HAL against
18425 WDI_ProcessChannelSwitchReq_V1)
18426
18427 @param pWDICtx: pointer to the WLAN DAL context
18428 pEventData: pointer to the event information structure
18429
18430 @see
18431 @return Result of the function call
18432*/
18433
18434WDI_Status
18435WDI_ProcessChannelSwitchRsp_V1
18436(
18437 WDI_ControlBlockType* pWDICtx,
18438 WDI_EventInfoType* pEventData
18439)
18440{
18441 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18442 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18443 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18445
18446 /*-------------------------------------------------------------------------
18447 Sanity check
18448 -------------------------------------------------------------------------*/
18449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18450 ( NULL == pEventData->pEventData))
18451 {
18452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18453 "%s: Invalid parameters", __func__);
18454 WDI_ASSERT(0);
18455 return WDI_STATUS_E_FAILURE;
18456 }
18457
18458 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18459
18460 /*-------------------------------------------------------------------------
18461 Extract response and send it to UMAC
18462 -------------------------------------------------------------------------*/
18463 wpalMemoryCopy( &halSwitchChannelRsp,
18464 (wpt_uint8*)pEventData->pEventData,
18465 sizeof(halSwitchChannelRsp));
18466
18467 wdiSwitchChRsp.wdiStatus =
18468 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18469 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18470
18471#ifdef WLAN_FEATURE_VOWIFI
18472 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18473#endif
18474
18475 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18476 if (( NULL == wdiChSwitchRspCb ) )
18477 {
18478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18479 "%s: ### Call back function is null", __func__);
18480 WDI_ASSERT(0);
18481 return WDI_STATUS_E_FAILURE;
18482 }
18483 /*Notify UMAC*/
18484 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18485
18486 return WDI_STATUS_SUCCESS;
18487}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018488
18489/**
18490 @brief Process Config STA Rsp function (called when a response
18491 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018492
18493 @param pWDICtx: pointer to the WLAN DAL context
18494 pEventData: pointer to the event information structure
18495
Jeff Johnson295189b2012-06-20 16:38:30 -070018496 @see
18497 @return Result of the function call
18498*/
18499WDI_Status
18500WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018501(
Jeff Johnson295189b2012-06-20 16:38:30 -070018502 WDI_ControlBlockType* pWDICtx,
18503 WDI_EventInfoType* pEventData
18504)
18505{
18506 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18507 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18508 WDI_AddStaParams wdiAddSTAParam;
18509
18510 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018511 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018512
Jeff Johnsone7245742012-09-05 17:12:55 -070018513 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18515
18516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018518 -------------------------------------------------------------------------*/
18519 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18520 ( NULL == pEventData->pEventData))
18521 {
18522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018523 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018526 }
18527
18528 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18529
18530 /*-------------------------------------------------------------------------
18531 Extract response and send it to UMAC
18532 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018533 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18534 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018535 sizeof(halConfigStaRsp.configStaRspParams));
18536
18537
18538 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18539 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18540 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18541 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18542 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18543
18544 /* MAC Address of STA - take from cache as it does not come back in the
18545 response*/
18546 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018547 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018548 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018549
18550 wdiCfgSTAParams.wdiStatus =
18551 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018552
18553 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18554 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18555 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18556
18557 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18558 {
18559 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18560 {
18561 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018562 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018563 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18564 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018565
Jeff Johnson295189b2012-06-20 16:38:30 -070018566 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018567 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018568 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018569 wdiAddSTAParam.ucHTCapable =
18570 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18571 wdiAddSTAParam.ucStaType =
18572 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018573 wdiAddSTAParam.ucRmfEnabled =
18574 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018575
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018577 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18578 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018579 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018580
18581 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18582 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18583 WDI_MAC_ADDR_LEN);
18584
18585 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18586 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18587 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018588
18589 if ( NULL == pBSSSes )
18590 {
18591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18592 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018593
Jeff Johnson295189b2012-06-20 16:38:30 -070018594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018595 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018596 }
18597
18598 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018599 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018600 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018601 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018602 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018603 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018604 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018605 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018606 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018607 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018608
Jeff Johnson295189b2012-06-20 16:38:30 -070018609 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18610 }
18611 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18612 {
18613 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18614
Jeff Johnsone7245742012-09-05 17:12:55 -070018615 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018616 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018617 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018618 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018619 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018620 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018621 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018622 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018623 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018624 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018625 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018626 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018627 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018628 halConfigStaRsp.configStaRspParams.ucUcastSig;
18629 }
18630 }
18631
18632 /*Notify UMAC*/
18633 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18634
Jeff Johnsone7245742012-09-05 17:12:55 -070018635 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018636}/*WDI_ProcessConfigStaRsp*/
18637
18638
18639/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018640 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018641 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018642
18643 @param pWDICtx: pointer to the WLAN DAL context
18644 pEventData: pointer to the event information structure
18645
Jeff Johnson295189b2012-06-20 16:38:30 -070018646 @see
18647 @return Result of the function call
18648*/
18649WDI_Status
18650WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018651(
Jeff Johnson295189b2012-06-20 16:38:30 -070018652 WDI_ControlBlockType* pWDICtx,
18653 WDI_EventInfoType* pEventData
18654)
18655{
18656 WDI_Status wdiStatus;
18657 eHalStatus halStatus;
18658 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18659
18660 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018661 wpt_uint8 ucCurrentBSSSesIdx = 0;
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
18676 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18677
18678 wpalMutexAcquire(&pWDICtx->wptMutex);
18679
18680 /*If the link is being transitioned to idle - the BSS is to be deleted
18681 - this type of ending a session is possible when UMAC has failed an
18682 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018683 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18685 {
18686 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018687 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018688 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018689 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18690 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18691 &pBSSSes);
18692
Jeff Johnson295189b2012-06-20 16:38:30 -070018693 /*-----------------------------------------------------------------------
18694 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018695 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018696 -----------------------------------------------------------------------*/
18697 if ( NULL == pBSSSes )
18698 {
18699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18700 "Set link response received outside association session");
18701 }
18702 else
18703 {
18704 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18705 will be del BSS coming after this to stop the beaconing & cleaning up the
18706 sessions*/
18707 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18708 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18709 {
18710 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018711 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018712 -----------------------------------------------------------------------*/
18713 WDI_DeleteSession(pWDICtx, pBSSSes);
18714
18715 /*-----------------------------------------------------------------------
18716 Check to see if this association is in progress - if so disable the
18717 flag as this has ended
18718 -----------------------------------------------------------------------*/
18719 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018720 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018721 /*Association no longer in progress */
18722 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18723 /*Association no longer in progress - prepare pending assoc for processing*/
18724 WDI_DequeueAssocRequest(pWDICtx);
18725 }
18726 }
18727 }
18728 }
18729 /* If the link state has been set to POST ASSOC, reset the "association in
18730 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018731 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018732 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18733 {
18734 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18735 WDI_DequeueAssocRequest(pWDICtx);
18736 }
18737
18738 wpalMutexRelease(&pWDICtx->wptMutex);
18739
18740 /*-------------------------------------------------------------------------
18741 Extract response and send it to UMAC
18742 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018743 wpalMemoryCopy( &halStatus,
18744 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018745 sizeof(halStatus));
18746
Jeff Johnsone7245742012-09-05 17:12:55 -070018747 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018748
18749 /*Notify UMAC*/
18750 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18751
Jeff Johnsone7245742012-09-05 17:12:55 -070018752 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018753}/*WDI_ProcessSetLinkStateRsp*/
18754
18755/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018756 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018757 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018758
18759 @param pWDICtx: pointer to the WLAN DAL context
18760 pEventData: pointer to the event information structure
18761
Jeff Johnson295189b2012-06-20 16:38:30 -070018762 @see
18763 @return Result of the function call
18764*/
18765WDI_Status
18766WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018767(
Jeff Johnson295189b2012-06-20 16:38:30 -070018768 WDI_ControlBlockType* pWDICtx,
18769 WDI_EventInfoType* pEventData
18770)
18771{
18772 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18773 WDI_GetStatsRspCb wdiGetStatsRspCb;
18774 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018775
Jeff Johnson295189b2012-06-20 16:38:30 -070018776 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18777
18778 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018779 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018780 -------------------------------------------------------------------------*/
18781 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18782 ( NULL == pEventData->pEventData))
18783 {
18784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018785 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018786 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018787 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018788 }
18789
18790 /*-------------------------------------------------------------------------
18791 Extract response and send it to UMAC
18792 -------------------------------------------------------------------------*/
18793 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18794
18795 /*allocate the stats response buffer */
18796 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18797 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18798 + sizeof(WDI_GetStatsRspParamsType));
18799
18800 if(NULL == wdiGetStatsRsp)
18801 {
18802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018803 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018804 pWDICtx, pEventData, pEventData->pEventData);
18805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018807 }
18808
18809 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18810
18811 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18812 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18813 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18814 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18815 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18816 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18817
18818 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18819 wpalMemoryCopy(wdiGetStatsRsp + 1,
18820 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18821 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18822
18823 /*Notify UMAC*/
18824 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18825
18826 wpalMemoryFree(wdiGetStatsRsp);
18827
Jeff Johnsone7245742012-09-05 17:12:55 -070018828 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018829}/*WDI_ProcessGetStatsRsp*/
18830
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018831#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018832/**
18833 @brief Process Get Roam Rssi Rsp function (called when a response is
18834 being received over the bus from HAL)
18835
18836 @param pWDICtx: pointer to the WLAN DAL context
18837 pEventData: pointer to the event information structure
18838
18839 @see
18840 @return Result of the function call
18841*/
18842WDI_Status
18843WDI_ProcessGetRoamRssiRsp
18844(
18845 WDI_ControlBlockType* pWDICtx,
18846 WDI_EventInfoType* pEventData
18847)
18848{
18849 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18850 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18851 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18853
18854 /*-------------------------------------------------------------------------
18855 Sanity check
18856 -------------------------------------------------------------------------*/
18857 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18858 ( NULL == pEventData->pEventData))
18859 {
18860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18861 "%s: Invalid parameters", __func__);
18862 WDI_ASSERT(0);
18863 return WDI_STATUS_E_FAILURE;
18864 }
18865
18866 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18867 if(NULL == wdiGetRoamRssiRspCb)
18868 {
18869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18870 "%s: call back function is NULL", __func__);
18871 WDI_ASSERT(0);
18872 return WDI_STATUS_E_FAILURE;
18873 }
18874
18875 /*-------------------------------------------------------------------------
18876 Extract response and send it to UMAC
18877 -------------------------------------------------------------------------*/
18878 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18879 pEventData->pEventData,
18880 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18881
18882 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18883 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18884 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18885
18886 /*Notify UMAC*/
18887 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18888
18889 return WDI_STATUS_SUCCESS;
18890}/*WDI_ProcessGetRoamRssiRsp*/
18891#endif
18892
Jeff Johnson295189b2012-06-20 16:38:30 -070018893
18894/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018895 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018896 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018897
18898 @param pWDICtx: pointer to the WLAN DAL context
18899 pEventData: pointer to the event information structure
18900
Jeff Johnson295189b2012-06-20 16:38:30 -070018901 @see
18902 @return Result of the function call
18903*/
18904WDI_Status
18905WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018906(
Jeff Johnson295189b2012-06-20 16:38:30 -070018907 WDI_ControlBlockType* pWDICtx,
18908 WDI_EventInfoType* pEventData
18909)
18910{
18911 WDI_Status wdiStatus;
18912 eHalStatus halStatus;
18913 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18915
18916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018917 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018918 -------------------------------------------------------------------------*/
18919 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18920 ( NULL == pEventData->pEventData))
18921 {
18922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018926 }
18927
18928 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18929
18930 /*-------------------------------------------------------------------------
18931 Extract response and send it to UMAC
18932 -------------------------------------------------------------------------*/
18933 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018934 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018935
18936 /*Notify UMAC*/
18937 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18938
Jeff Johnsone7245742012-09-05 17:12:55 -070018939 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018940}/*WDI_ProcessUpdateCfgRsp*/
18941
18942
18943
18944/**
18945 @brief Process Add BA Rsp function (called when a response
18946 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_ProcessAddBARsp
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_AddBARspCb wdiAddBARspCb;
18962
18963 tAddBARspParams halAddBARsp;
18964 WDI_AddBARspinfoType wdiAddBARsp;
18965
18966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18967
18968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018970 -------------------------------------------------------------------------*/
18971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18972 ( NULL == pEventData->pEventData))
18973 {
18974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018978 }
18979
18980 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18981
18982 /*-------------------------------------------------------------------------
18983 Extract response and send it to UMAC
18984 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018985 wpalMemoryCopy( &halAddBARsp,
18986 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018987 sizeof(halAddBARsp));
18988
18989 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18990
Jeff Johnson43971f52012-07-17 12:26:56 -070018991 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018992 {
18993 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18994 }
18995
18996 /*Notify UMAC*/
18997 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18998
Jeff Johnsone7245742012-09-05 17:12:55 -070018999 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019000}/*WDI_ProcessAddSessionBARsp*/
19001
19002/**
19003 @brief Process Add BA Rsp function (called when a response
19004 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019005
19006 @param pWDICtx: pointer to the WLAN DAL context
19007 pEventData: pointer to the event information structure
19008
Jeff Johnson295189b2012-06-20 16:38:30 -070019009 @see
19010 @return Result of the function call
19011*/
19012WDI_Status
19013WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019014(
Jeff Johnson295189b2012-06-20 16:38:30 -070019015 WDI_ControlBlockType* pWDICtx,
19016 WDI_EventInfoType* pEventData
19017)
19018{
19019 WDI_TriggerBARspCb wdiTriggerBARspCb;
19020
19021 tTriggerBARspParams* halTriggerBARsp;
19022 tTriggerBaRspCandidate* halBaCandidate;
19023 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19024 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19025 wpt_uint16 index;
19026 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019027 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19029
19030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019032 -------------------------------------------------------------------------*/
19033 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19034 ( NULL == pEventData->pEventData))
19035 {
19036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019040 }
19041
19042 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19043
19044 /*-------------------------------------------------------------------------
19045 Extract response and send it to UMAC
19046 -------------------------------------------------------------------------*/
19047 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19048
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019049 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19050
19051 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19052 {
19053 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019054 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019055 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019056
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019057 if(NULL == wdiTriggerBARsp)
19058 {
19059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019060 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019061 pWDICtx, pEventData, pEventData->pEventData);
19062 WDI_ASSERT(0);
19063 return WDI_STATUS_E_FAILURE;
19064 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019065
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019066 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19067
Jeff Johnson295189b2012-06-20 16:38:30 -070019068 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019069 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019070 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19071
19072 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19073 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19074
19075 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19076 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019077 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019078 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19079 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19080 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019081 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019082 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019083 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19085 }
19086 wdiTriggerBARspCandidate++;
19087 halBaCandidate++;
19088 }
19089 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019090 else
19091 {
19092 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19093
19094 if(NULL == wdiTriggerBARsp)
19095 {
19096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019097 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019098 pWDICtx, pEventData, pEventData->pEventData);
19099 WDI_ASSERT(0);
19100 return WDI_STATUS_E_FAILURE;
19101 }
19102
19103 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19104
19105 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019106
19107 /*Notify UMAC*/
19108 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19109
19110 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019111 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019112}/*WDI_ProcessAddSessionBARsp*/
19113
19114/**
19115 @brief Process Update Beacon Params Rsp function (called when a response
19116 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019117
19118 @param pWDICtx: pointer to the WLAN DAL context
19119 pEventData: pointer to the event information structure
19120
Jeff Johnson295189b2012-06-20 16:38:30 -070019121 @see
19122 @return Result of the function call
19123*/
19124WDI_Status
19125WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019126(
Jeff Johnson295189b2012-06-20 16:38:30 -070019127 WDI_ControlBlockType* pWDICtx,
19128 WDI_EventInfoType* pEventData
19129)
19130{
19131 WDI_Status wdiStatus;
19132 eHalStatus halStatus;
19133 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19135
19136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019137 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019138 -------------------------------------------------------------------------*/
19139 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19140 ( NULL == pEventData->pEventData))
19141 {
19142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019143 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019144 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019145 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019146 }
19147
19148 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19149
19150 /*-------------------------------------------------------------------------
19151 Extract response and send it to UMAC
19152 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019153 wpalMemoryCopy( &halStatus,
19154 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019155 sizeof(halStatus));
19156
Jeff Johnsone7245742012-09-05 17:12:55 -070019157 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019158
19159 /*Notify UMAC*/
19160 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19161
Jeff Johnsone7245742012-09-05 17:12:55 -070019162 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019163}/*WDI_ProcessUpdateBeaconParamsRsp*/
19164
19165/**
19166 @brief Process Send Beacon template Rsp function (called when a response
19167 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019168
19169 @param pWDICtx: pointer to the WLAN DAL context
19170 pEventData: pointer to the event information structure
19171
Jeff Johnson295189b2012-06-20 16:38:30 -070019172 @see
19173 @return Result of the function call
19174*/
19175WDI_Status
19176WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019177(
Jeff Johnson295189b2012-06-20 16:38:30 -070019178 WDI_ControlBlockType* pWDICtx,
19179 WDI_EventInfoType* pEventData
19180)
19181{
19182 WDI_Status wdiStatus;
19183 eHalStatus halStatus;
19184 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19186
19187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019188 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019189 -------------------------------------------------------------------------*/
19190 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19191 ( NULL == pEventData->pEventData))
19192 {
19193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019194 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019197 }
19198
19199 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19200
19201 /*-------------------------------------------------------------------------
19202 Extract response and send it to UMAC
19203 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019204 wpalMemoryCopy( &halStatus,
19205 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019206 sizeof(halStatus));
19207
Jeff Johnsone7245742012-09-05 17:12:55 -070019208 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019209
19210 /*Notify UMAC*/
19211 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19212
Jeff Johnsone7245742012-09-05 17:12:55 -070019213 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019214}/*WDI_ProcessSendBeaconParamsRsp*/
19215
Jeff Johnsone7245742012-09-05 17:12:55 -070019216
Jeff Johnson295189b2012-06-20 16:38:30 -070019217/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019218 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019219 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019220
19221 @param pWDICtx: pointer to the WLAN DAL context
19222 pEventData: pointer to the event information structure
19223
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 @see
19225 @return Result of the function call
19226*/
19227WDI_Status
19228WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019229(
Jeff Johnson295189b2012-06-20 16:38:30 -070019230 WDI_ControlBlockType* pWDICtx,
19231 WDI_EventInfoType* pEventData
19232)
19233{
19234 WDI_Status wdiStatus;
19235 eHalStatus halStatus;
19236 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19238
19239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019241 -------------------------------------------------------------------------*/
19242 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19243 ( NULL == pEventData->pEventData))
19244 {
19245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019249 }
19250
19251 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19252
19253 /*-------------------------------------------------------------------------
19254 Extract response and send it to UMAC
19255 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019256 wpalMemoryCopy( &halStatus,
19257 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019258 sizeof(halStatus));
19259
Jeff Johnsone7245742012-09-05 17:12:55 -070019260 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019261
19262 /*Notify UMAC*/
19263 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19264
Jeff Johnsone7245742012-09-05 17:12:55 -070019265 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019266}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19267
19268 /**
19269 @brief Process Set Max Tx Power Rsp function (called when a response
19270 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019271
19272 @param pWDICtx: pointer to the WLAN DAL context
19273 pEventData: pointer to the event information structure
19274
Jeff Johnson295189b2012-06-20 16:38:30 -070019275 @see
19276 @return Result of the function call
19277*/
19278WDI_Status
19279WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019280(
Jeff Johnson295189b2012-06-20 16:38:30 -070019281 WDI_ControlBlockType* pWDICtx,
19282 WDI_EventInfoType* pEventData
19283)
19284{
19285 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019286
Jeff Johnson295189b2012-06-20 16:38:30 -070019287 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019288
Jeff Johnson295189b2012-06-20 16:38:30 -070019289 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19291
19292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019294 -------------------------------------------------------------------------*/
19295 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19296 ( NULL == pEventData->pEventData))
19297 {
19298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019299 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019302 }
19303
19304 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19305
19306 /*-------------------------------------------------------------------------
19307 Extract response and send it to UMAC
19308 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019309 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19310 pEventData->pEventData,
19311 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019312
19313 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19314 {
19315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19316 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019318 }
19319
Jeff Johnsone7245742012-09-05 17:12:55 -070019320 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019321 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019322 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019323
19324 /*Notify UMAC*/
19325 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19326
Jeff Johnsone7245742012-09-05 17:12:55 -070019327 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019328}
19329
schang86c22c42013-03-13 18:41:24 -070019330 /**
19331 @brief Process Set Tx Power Rsp function (called when a response
19332 is being received over the bus from HAL)
19333
19334 @param pWDICtx: pointer to the WLAN DAL context
19335 pEventData: pointer to the event information structure
19336
19337 @see
19338 @return Result of the function call
19339*/
19340WDI_Status
19341WDI_ProcessSetTxPowerRsp
19342(
19343 WDI_ControlBlockType* pWDICtx,
19344 WDI_EventInfoType* pEventData
19345)
19346{
19347 tSetTxPwrRspMsg halTxpowerrsp;
19348 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19349 WDA_SetTxPowerRspCb wdiReqStatusCb;
19350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19351
19352 /*-------------------------------------------------------------------------
19353 Sanity check
19354 -------------------------------------------------------------------------*/
19355 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19356 ( NULL == pEventData->pEventData))
19357 {
19358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19359 "%s: Invalid parameters", __func__);
19360 WDI_ASSERT(0);
19361 return WDI_STATUS_E_FAILURE;
19362 }
19363
19364 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19365
19366 /*-------------------------------------------------------------------------
19367 Extract response and send it to UMAC
19368 -------------------------------------------------------------------------*/
19369 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19370 pEventData->pEventData,
19371 sizeof(halTxpowerrsp.setTxPwrRspParams));
19372
19373 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19374 {
19375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19376 "Error status returned in Set Tx Power Response ");
19377 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19378 return WDI_STATUS_E_FAILURE;
19379 }
19380
19381 wdiSetTxPowerRspMsg.wdiStatus =
19382 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19383
19384 /*Notify UMAC*/
19385 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19386
19387 return WDI_STATUS_SUCCESS;
19388}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019389
19390/**
19391 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19392 is being received over the bus from HAL)
19393
19394 @param pWDICtx: pointer to the WLAN DAL context
19395 pEventData: pointer to the event information structure
19396
19397 @see
19398 @return Result of the function call
19399*/
19400WDI_Status
19401WDI_ProcessSetMaxTxPowerPerBandRsp
19402(
19403 WDI_ControlBlockType* pWDICtx,
19404 WDI_EventInfoType* pEventData
19405)
19406{
19407 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19408 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19409 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19411
19412 /*-------------------------------------------------------------------------
19413 Sanity check
19414 -------------------------------------------------------------------------*/
19415 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19416 ( NULL == pEventData->pEventData))
19417 {
19418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19419 "%s: Invalid parameters", __func__);
19420 WDI_ASSERT(0);
19421 return WDI_STATUS_E_FAILURE;
19422 }
19423
19424 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19425
19426 /*-------------------------------------------------------------------------
19427 Extract response and send it to UMAC
19428 -------------------------------------------------------------------------*/
19429 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19430 pEventData->pEventData,
19431 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19432
19433 if (eHAL_STATUS_SUCCESS !=
19434 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19435 {
19436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19437 "Error status returned in Set Max Tx Power Per Band Response");
19438 return WDI_STATUS_E_FAILURE;
19439 }
19440
19441 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19442 WDI_HAL_2_WDI_STATUS(
19443 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19444
19445 /* Notify UMAC */
19446 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19447
19448 return WDI_STATUS_SUCCESS;
19449}
19450
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019451#ifdef FEATURE_WLAN_TDLS
19452/**
19453 @brief Process TDLS Link Establish Rsp function (called
19454 when a response is being received over the bus from HAL)
19455
19456 @param pWDICtx: pointer to the WLAN DAL context
19457 pEventData: pointer to the event information structure
19458
19459 @see
19460 @return Result of the function call
19461*/
19462WDI_Status
19463WDI_ProcessLinkEstablishReqRsp
19464(
19465 WDI_ControlBlockType* pWDICtx,
19466 WDI_EventInfoType* pEventData
19467)
19468{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019469 eHalStatus halStatus;
19470 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019471 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19472 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19473
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19475
19476 /*-------------------------------------------------------------------------
19477 Sanity check
19478 -------------------------------------------------------------------------*/
19479 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19480 ( NULL == pEventData->pEventData))
19481 {
19482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19483 "%s: Invalid parameters", __func__);
19484 WDI_ASSERT(0);
19485 return WDI_STATUS_E_FAILURE;
19486 }
19487
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019488 /*-------------------------------------------------------------------------
19489 Extract indication and send it to UMAC
19490 -------------------------------------------------------------------------*/
19491 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19492 pEventData->pEventData,
19493 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19494
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019495 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19496
19497 /*-------------------------------------------------------------------------
19498 Extract response and send it to UMAC
19499 -------------------------------------------------------------------------*/
19500 wpalMemoryCopy( &halStatus,
19501 pEventData->pEventData,
19502 sizeof(halStatus));
19503
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019504 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19505 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019506
19507 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019508 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019509
19510 return WDI_STATUS_SUCCESS;
19511}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019512
19513
19514
19515/**
19516 @brief Process TDLS Chan switch Rsp function (called
19517 when a response is being received over the bus from HAL)
19518
19519 @param pWDICtx: pointer to the WLAN DAL context
19520 pEventData: pointer to the event information structure
19521
19522 @see
19523 @return Result of the function call
19524*/
19525WDI_Status
19526WDI_ProcessChanSwitchReqRsp
19527(
19528 WDI_ControlBlockType* pWDICtx,
19529 WDI_EventInfoType* pEventData
19530)
19531{
19532 eHalStatus halStatus;
19533 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19534 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19535 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19536
19537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19538
19539 /*-------------------------------------------------------------------------
19540 Sanity check
19541 -------------------------------------------------------------------------*/
19542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19543 ( NULL == pEventData->pEventData))
19544 {
19545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19546 "%s: Invalid parameters", __func__);
19547 WDI_ASSERT(0);
19548 return WDI_STATUS_E_FAILURE;
19549 }
19550
19551 /*-------------------------------------------------------------------------
19552 Extract indication and send it to UMAC
19553 -------------------------------------------------------------------------*/
19554 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19555 pEventData->pEventData,
19556 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19557
19558 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19559
19560 /*-------------------------------------------------------------------------
19561 Extract response and send it to UMAC
19562 -------------------------------------------------------------------------*/
19563 wpalMemoryCopy( &halStatus,
19564 pEventData->pEventData,
19565 sizeof(halStatus));
19566
19567 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19568 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19569
19570 /*Notify UMAC*/
19571 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19572
19573 return WDI_STATUS_SUCCESS;
19574}/*WDI_ProcessChanSwitchReqRsp*/
19575
19576
19577
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019578#endif
schang86c22c42013-03-13 18:41:24 -070019579
Jeff Johnson295189b2012-06-20 16:38:30 -070019580/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019581 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019582 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019583
19584 @param pWDICtx: pointer to the WLAN DAL context
19585 pEventData: pointer to the event information structure
19586
Jeff Johnson295189b2012-06-20 16:38:30 -070019587 @see
19588 @return Result of the function call
19589*/
19590WDI_Status
19591WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019592(
Jeff Johnson295189b2012-06-20 16:38:30 -070019593 WDI_ControlBlockType* pWDICtx,
19594 WDI_EventInfoType* pEventData
19595)
19596{
19597 WDI_Status wdiStatus;
19598 eHalStatus halStatus;
19599 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19601
19602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019603 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019604 -------------------------------------------------------------------------*/
19605 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19606 ( NULL == pEventData->pEventData))
19607 {
19608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019612 }
19613
19614 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19615
19616 /*-------------------------------------------------------------------------
19617 Extract response and send it to UMAC
19618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019619 wpalMemoryCopy( &halStatus,
19620 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019621 sizeof(halStatus));
19622
Jeff Johnsone7245742012-09-05 17:12:55 -070019623 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019624
19625 /*Notify UMAC*/
19626 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19627
Jeff Johnsone7245742012-09-05 17:12:55 -070019628 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019629}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019630/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019631 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019633
19634 @param pWDICtx: pointer to the WLAN DAL context
19635 pEventData: pointer to the event information structure
19636
Jeff Johnson295189b2012-06-20 16:38:30 -070019637 @see
19638 @return Result of the function call
19639*/
19640WDI_Status
19641WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019642(
Jeff Johnson295189b2012-06-20 16:38:30 -070019643 WDI_ControlBlockType* pWDICtx,
19644 WDI_EventInfoType* pEventData
19645)
19646{
19647 WDI_Status wdiStatus;
19648 eHalStatus halStatus;
19649 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019650 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19652
19653 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019654 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019655 -------------------------------------------------------------------------*/
19656 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19657 ( NULL == pEventData->pEventData))
19658 {
19659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019663 }
19664
19665 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19666
19667 /*-------------------------------------------------------------------------
19668 Extract response and send it to UMAC
19669 -------------------------------------------------------------------------*/
19670 halStatus = *((eHalStatus*)pEventData->pEventData);
19671
Jeff Johnsone7245742012-09-05 17:12:55 -070019672 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019673
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019674 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19675 * Other module states are taken care by PMC.
19676 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19677 */
19678 if (wdiStatus != WDI_STATUS_SUCCESS) {
19679
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19681 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19682 halStatus);
19683 /* Call Back is not required as we are putting the DXE in FULL
19684 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019685 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19686
19687 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019689 "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 -080019690 WDI_ASSERT(0);
19691 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019692 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019693 /*Notify UMAC*/
19694 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19695
Jeff Johnsone7245742012-09-05 17:12:55 -070019696 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019697}/*WDI_ProcessEnterImpsRsp*/
19698
19699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019700 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019701 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019702
19703 @param pWDICtx: pointer to the WLAN DAL context
19704 pEventData: pointer to the event information structure
19705
Jeff Johnson295189b2012-06-20 16:38:30 -070019706 @see
19707 @return Result of the function call
19708*/
19709WDI_Status
19710WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019711(
Jeff Johnson295189b2012-06-20 16:38:30 -070019712 WDI_ControlBlockType* pWDICtx,
19713 WDI_EventInfoType* pEventData
19714)
19715{
19716 WDI_Status wdiStatus;
19717 eHalStatus halStatus;
19718 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019719 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19721
19722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019723 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019724 -------------------------------------------------------------------------*/
19725 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19726 ( NULL == pEventData->pEventData))
19727 {
19728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019729 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019732 }
19733
19734 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19735
19736 /*-------------------------------------------------------------------------
19737 Extract response and send it to UMAC
19738 -------------------------------------------------------------------------*/
19739 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019740 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019741
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019742 if (halStatus != eHAL_STATUS_SUCCESS)
19743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19744 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19745
Jeff Johnson295189b2012-06-20 16:38:30 -070019746 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019747 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19748 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19749 {
19750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019751 "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 -080019752 WDI_ASSERT(0);
19753 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019754 /*Notify UMAC*/
19755 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19756
Jeff Johnsone7245742012-09-05 17:12:55 -070019757 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019758}/*WDI_ProcessExitImpsRsp*/
19759
19760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019761 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019762 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019763
19764 @param pWDICtx: pointer to the WLAN DAL context
19765 pEventData: pointer to the event information structure
19766
Jeff Johnson295189b2012-06-20 16:38:30 -070019767 @see
19768 @return Result of the function call
19769*/
19770WDI_Status
19771WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019772(
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 WDI_ControlBlockType* pWDICtx,
19774 WDI_EventInfoType* pEventData
19775)
19776{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019777 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19778 tHalEnterBmpsRspParams halEnterBmpsRsp;
19779 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19780 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019781 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19783
19784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019786 -------------------------------------------------------------------------*/
19787 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19788 ( NULL == pEventData->pEventData))
19789 {
19790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019794 }
19795
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019797 Extract response and send it to UMAC
19798 -------------------------------------------------------------------------*/
19799 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19800 {
19801 wpalMemoryCopy( &halEnterBmpsRsp,
19802 pEventData->pEventData,
19803 sizeof(halEnterBmpsRsp));
19804
19805 //Used to print debug message
19806 halStatus = halEnterBmpsRsp.status;
19807 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19808 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19809 }
19810 else
19811 {
19812 halStatus = *((eHalStatus*)pEventData->pEventData);
19813 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19814 }
19815
19816 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019817
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019818 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19819 * Other module states are taken care by PMC.
19820 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19821 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019822 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19823 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019824
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019826 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19827 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019828 /* Call Back is not required as we are putting the DXE in FULL
19829 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019830 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19831 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19832 {
19833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019834 "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 -080019835 WDI_ASSERT(0);
19836 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019837 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019838 }
19839
Jeff Johnson295189b2012-06-20 16:38:30 -070019840 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019841 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019842
Jeff Johnsone7245742012-09-05 17:12:55 -070019843 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019844}/*WDI_ProcessEnterBmpsRsp*/
19845
19846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019847 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019848 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019849
19850 @param pWDICtx: pointer to the WLAN DAL context
19851 pEventData: pointer to the event information structure
19852
Jeff Johnson295189b2012-06-20 16:38:30 -070019853 @see
19854 @return Result of the function call
19855*/
19856WDI_Status
19857WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019858(
Jeff Johnson295189b2012-06-20 16:38:30 -070019859 WDI_ControlBlockType* pWDICtx,
19860 WDI_EventInfoType* pEventData
19861)
19862{
Jeff Johnson295189b2012-06-20 16:38:30 -070019863 eHalStatus halStatus;
19864 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019865 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019866 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19867 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19883
19884 /*-------------------------------------------------------------------------
19885 Extract response and send it to UMAC
19886 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019887
19888 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19889 {
19890 wpalMemoryCopy( &halExitBmpsRsp,
19891 pEventData->pEventData,
19892 sizeof(halExitBmpsRsp));
19893
19894 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19895 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19896 }
19897 else
19898 {
19899 halStatus = *((eHalStatus*)pEventData->pEventData);
19900 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19901 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019902
19903 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019904 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19905 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19906 {
19907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019908 "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 -080019909 WDI_ASSERT(0);
19910 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019911 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19912
19913 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019914 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019915
Jeff Johnsone7245742012-09-05 17:12:55 -070019916 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019917}/*WDI_ProcessExitBmpsRsp*/
19918
19919/**
19920 @brief Process Enter UAPSD Rsp function (called when a response
19921 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019922
19923 @param pWDICtx: pointer to the WLAN DAL context
19924 pEventData: pointer to the event information structure
19925
Jeff Johnson295189b2012-06-20 16:38:30 -070019926 @see
19927 @return Result of the function call
19928*/
19929WDI_Status
19930WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019931(
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 WDI_ControlBlockType* pWDICtx,
19933 WDI_EventInfoType* pEventData
19934)
19935{
Jeff Johnson295189b2012-06-20 16:38:30 -070019936 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019937 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019938 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019939 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19940
Jeff Johnson295189b2012-06-20 16:38:30 -070019941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19942
19943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019945 -------------------------------------------------------------------------*/
19946 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19947 ( NULL == pEventData->pEventData))
19948 {
19949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019950 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019953 }
19954
19955 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19956
19957 /*-------------------------------------------------------------------------
19958 Extract response and send it to UMAC
19959 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019960 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19961 {
19962 wpalMemoryCopy( &halEnterUapsdRsp,
19963 pEventData->pEventData,
19964 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019965
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019966 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19967 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19968 }
19969 else
19970 {
19971 halStatus = *((eHalStatus*)pEventData->pEventData);
19972 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19973 }
19974
19975 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019976 {
19977 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19978 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19979 // the traffic to decide when to suspend the trigger frames when there is no traffic
19980 // activity on the trigger enabled ACs
19981 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19982
19983#ifdef WLAN_PERF
19984 // Increment the BD signature to refresh the fast path BD utilization
19985 pWDICtx->uBdSigSerialNum++;
19986#endif
19987 }
19988
19989 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019990 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019991
Jeff Johnsone7245742012-09-05 17:12:55 -070019992 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019993}/*WDI_ProcessEnterUapsdRsp*/
19994
19995/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019996 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019997 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019998
19999 @param pWDICtx: pointer to the WLAN DAL context
20000 pEventData: pointer to the event information structure
20001
Jeff Johnson295189b2012-06-20 16:38:30 -070020002 @see
20003 @return Result of the function call
20004*/
20005WDI_Status
20006WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020007(
Jeff Johnson295189b2012-06-20 16:38:30 -070020008 WDI_ControlBlockType* pWDICtx,
20009 WDI_EventInfoType* pEventData
20010)
20011{
Jeff Johnson295189b2012-06-20 16:38:30 -070020012 eHalStatus halStatus;
20013 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020014 tHalExitUapsdRspParams halExitUapsdRsp;
20015 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20017
20018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020019 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 -------------------------------------------------------------------------*/
20021 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20022 ( NULL == pEventData->pEventData))
20023 {
20024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020028 }
20029
20030 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20031
20032 /*-------------------------------------------------------------------------
20033 Extract response and send it to UMAC
20034 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020035 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20036 {
20037 wpalMemoryCopy( &halExitUapsdRsp,
20038 pEventData->pEventData,
20039 sizeof(halExitUapsdRsp));
20040
20041 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20042 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20043 }
20044 else
20045 {
20046 halStatus = *((eHalStatus*)pEventData->pEventData);
20047 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20048 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020049 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20050 // directly instead of the FW WQ.
20051 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20052
20053#ifdef WLAN_PERF
20054 // Increment the BD signature to refresh the fast path BD utilization
20055 pWDICtx->uBdSigSerialNum++;
20056#endif
20057
20058 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020059 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020060
Jeff Johnsone7245742012-09-05 17:12:55 -070020061 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020062}/*WDI_ProcessExitUapsdRsp*/
20063
20064/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020065 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020067
20068 @param pWDICtx: pointer to the WLAN DAL context
20069 pEventData: pointer to the event information structure
20070
Jeff Johnson295189b2012-06-20 16:38:30 -070020071 @see
20072 @return Result of the function call
20073*/
20074WDI_Status
20075WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020076(
Jeff Johnson295189b2012-06-20 16:38:30 -070020077 WDI_ControlBlockType* pWDICtx,
20078 WDI_EventInfoType* pEventData
20079)
20080{
20081 WDI_Status wdiStatus;
20082 eHalStatus halStatus;
20083 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20085
20086 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020087 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020088 -------------------------------------------------------------------------*/
20089 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20090 ( NULL == pEventData->pEventData))
20091 {
20092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020093 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020096 }
20097
20098 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20099
20100 /*-------------------------------------------------------------------------
20101 Extract response and send it to UMAC
20102 -------------------------------------------------------------------------*/
20103 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020104 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020105
20106 /*Notify UMAC*/
20107 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20108
Jeff Johnsone7245742012-09-05 17:12:55 -070020109 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020110}/*WDI_ProcessSetUapsdAcParamsRsp*/
20111
20112/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020113 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020114 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020115
20116 @param pWDICtx: pointer to the WLAN DAL context
20117 pEventData: pointer to the event information structure
20118
Jeff Johnson295189b2012-06-20 16:38:30 -070020119 @see
20120 @return Result of the function call
20121*/
20122WDI_Status
20123WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020124(
Jeff Johnson295189b2012-06-20 16:38:30 -070020125 WDI_ControlBlockType* pWDICtx,
20126 WDI_EventInfoType* pEventData
20127)
20128{
20129 WDI_Status wdiStatus;
20130 eHalStatus halStatus;
20131 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20132 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20133
20134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020135 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020136 -------------------------------------------------------------------------*/
20137 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20138 ( NULL == pEventData->pEventData))
20139 {
20140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020141 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020142 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020143 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020144 }
20145
20146 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20147
20148 /*-------------------------------------------------------------------------
20149 Extract response and send it to UMAC
20150 -------------------------------------------------------------------------*/
20151 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020152 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020153
20154 /*Notify UMAC*/
20155 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20156
Jeff Johnsone7245742012-09-05 17:12:55 -070020157 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020158}/*WDI_ProcessUpdateUapsdParamsRsp*/
20159
20160/**
20161 @brief Process Configure RXP filter Rsp function (called when a
20162 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020163
20164 @param pWDICtx: pointer to the WLAN DAL context
20165 pEventData: pointer to the event information structure
20166
Jeff Johnson295189b2012-06-20 16:38:30 -070020167 @see
20168 @return Result of the function call
20169*/
20170WDI_Status
20171WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020172(
Jeff Johnson295189b2012-06-20 16:38:30 -070020173 WDI_ControlBlockType* pWDICtx,
20174 WDI_EventInfoType* pEventData
20175)
20176{
20177 WDI_Status wdiStatus;
20178 eHalStatus halStatus;
20179 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
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 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20195
20196 /*-------------------------------------------------------------------------
20197 Extract response and send it to UMAC
20198 -------------------------------------------------------------------------*/
20199 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020200 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020201
20202 /*Notify UMAC*/
20203 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20204
Jeff Johnsone7245742012-09-05 17:12:55 -070020205 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020206}/*WDI_ProcessConfigureRxpFilterRsp*/
20207
20208/**
20209 @brief Process Set beacon filter Rsp function (called when a
20210 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020211
20212 @param pWDICtx: pointer to the WLAN DAL context
20213 pEventData: pointer to the event information structure
20214
Jeff Johnson295189b2012-06-20 16:38:30 -070020215 @see
20216 @return Result of the function call
20217*/
20218WDI_Status
20219WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020220(
Jeff Johnson295189b2012-06-20 16:38:30 -070020221 WDI_ControlBlockType* pWDICtx,
20222 WDI_EventInfoType* pEventData
20223)
20224{
20225 WDI_Status wdiStatus;
20226 eHalStatus halStatus;
20227 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20229
20230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 -------------------------------------------------------------------------*/
20233 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20234 ( NULL == pEventData->pEventData))
20235 {
20236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020240 }
20241
20242 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20243
20244 /*-------------------------------------------------------------------------
20245 Extract response and send it to UMAC
20246 -------------------------------------------------------------------------*/
20247 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020248 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020249
20250 /*Notify UMAC*/
20251 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20252
Jeff Johnsone7245742012-09-05 17:12:55 -070020253 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020254}/*WDI_ProcessSetBeaconFilterRsp*/
20255
20256/**
20257 @brief Process remove beacon filter Rsp function (called when a
20258 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020259
20260 @param pWDICtx: pointer to the WLAN DAL context
20261 pEventData: pointer to the event information structure
20262
Jeff Johnson295189b2012-06-20 16:38:30 -070020263 @see
20264 @return Result of the function call
20265*/
20266WDI_Status
20267WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020268(
Jeff Johnson295189b2012-06-20 16:38:30 -070020269 WDI_ControlBlockType* pWDICtx,
20270 WDI_EventInfoType* pEventData
20271)
20272{
20273 WDI_Status wdiStatus;
20274 eHalStatus halStatus;
20275 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20277
20278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020280 -------------------------------------------------------------------------*/
20281 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20282 ( NULL == pEventData->pEventData))
20283 {
20284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020288 }
20289
20290 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20291
20292 /*-------------------------------------------------------------------------
20293 Extract response and send it to UMAC
20294 -------------------------------------------------------------------------*/
20295 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020296 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020297
20298 /*Notify UMAC*/
20299 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20300
Jeff Johnsone7245742012-09-05 17:12:55 -070020301 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020302}/*WDI_ProcessRemBeaconFilterRsp*/
20303
20304/**
20305 @brief Process set RSSI thresholds Rsp function (called when a
20306 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020307
20308 @param pWDICtx: pointer to the WLAN DAL context
20309 pEventData: pointer to the event information structure
20310
Jeff Johnson295189b2012-06-20 16:38:30 -070020311 @see
20312 @return Result of the function call
20313*/
20314WDI_Status
20315WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020316(
Jeff Johnson295189b2012-06-20 16:38:30 -070020317 WDI_ControlBlockType* pWDICtx,
20318 WDI_EventInfoType* pEventData
20319)
20320{
20321 WDI_Status wdiStatus;
20322 eHalStatus halStatus;
20323 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20325
20326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 -------------------------------------------------------------------------*/
20329 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20330 ( NULL == pEventData->pEventData))
20331 {
20332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020336 }
20337
20338 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20339
20340 /*-------------------------------------------------------------------------
20341 Extract response and send it to UMAC
20342 -------------------------------------------------------------------------*/
20343 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020344 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020345
20346 /*Notify UMAC*/
20347 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20348
Jeff Johnsone7245742012-09-05 17:12:55 -070020349 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020350}/*WDI_ProcessSetRSSIThresoldsRsp*/
20351
20352/**
20353 @brief Process host offload Rsp function (called when a
20354 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020355
20356 @param pWDICtx: pointer to the WLAN DAL context
20357 pEventData: pointer to the event information structure
20358
Jeff Johnson295189b2012-06-20 16:38:30 -070020359 @see
20360 @return Result of the function call
20361*/
20362WDI_Status
20363WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020364(
Jeff Johnson295189b2012-06-20 16:38:30 -070020365 WDI_ControlBlockType* pWDICtx,
20366 WDI_EventInfoType* pEventData
20367)
20368{
20369 WDI_Status wdiStatus;
20370 eHalStatus halStatus;
20371 WDI_HostOffloadCb wdiHostOffloadCb;
20372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20373
20374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020375 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020376 -------------------------------------------------------------------------*/
20377 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20378 ( NULL == pEventData->pEventData))
20379 {
20380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020381 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020384 }
20385
20386 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20387
20388 /*-------------------------------------------------------------------------
20389 Extract response and send it to UMAC
20390 -------------------------------------------------------------------------*/
20391 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020392 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020393
20394 /*Notify UMAC*/
20395 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20396
Jeff Johnsone7245742012-09-05 17:12:55 -070020397 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020398}/*WDI_ProcessHostOffloadRsp*/
20399
20400/**
20401 @brief Process keep alive Rsp function (called when a
20402 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020403
20404 @param pWDICtx: pointer to the WLAN DAL context
20405 pEventData: pointer to the event information structure
20406
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 @see
20408 @return Result of the function call
20409*/
20410WDI_Status
20411WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020412(
Jeff Johnson295189b2012-06-20 16:38:30 -070020413 WDI_ControlBlockType* pWDICtx,
20414 WDI_EventInfoType* pEventData
20415)
20416{
20417 WDI_Status wdiStatus;
20418 eHalStatus halStatus;
20419 WDI_KeepAliveCb wdiKeepAliveCb;
20420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20422 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20423
20424
20425 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020426 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020427 -------------------------------------------------------------------------*/
20428 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20429 ( NULL == pEventData->pEventData))
20430 {
20431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020432 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020435 }
20436
Jeff Johnsone7245742012-09-05 17:12:55 -070020437 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20438
Jeff Johnson295189b2012-06-20 16:38:30 -070020439 /*-------------------------------------------------------------------------
20440 Extract response and send it to UMAC
20441 -------------------------------------------------------------------------*/
20442 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020443 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020444
20445 /*Notify UMAC*/
20446 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20447
Jeff Johnsone7245742012-09-05 17:12:55 -070020448 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020449}/*WDI_ProcessKeepAliveRsp*/
20450
20451/**
20452 @brief Process wowl add ptrn Rsp function (called when a
20453 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020454
20455 @param pWDICtx: pointer to the WLAN DAL context
20456 pEventData: pointer to the event information structure
20457
Jeff Johnson295189b2012-06-20 16:38:30 -070020458 @see
20459 @return Result of the function call
20460*/
20461WDI_Status
20462WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020463(
Jeff Johnson295189b2012-06-20 16:38:30 -070020464 WDI_ControlBlockType* pWDICtx,
20465 WDI_EventInfoType* pEventData
20466)
20467{
Jeff Johnson295189b2012-06-20 16:38:30 -070020468 eHalStatus halStatus;
20469 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020470 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20471 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20472
Jeff Johnson295189b2012-06-20 16:38:30 -070020473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20474
20475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020476 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020477 -------------------------------------------------------------------------*/
20478 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20479 ( NULL == pEventData->pEventData))
20480 {
20481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020485 }
20486
20487 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20488
20489 /*-------------------------------------------------------------------------
20490 Extract response and send it to UMAC
20491 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020492 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20493 {
20494 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20495 pEventData->pEventData,
20496 sizeof(halAddWowlBcastPtrRsp));
20497
20498 wdiWowlAddBcPtrRsp.wdiStatus =
20499 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20500 }
20501 else
20502 {
20503 halStatus = *((eHalStatus*)pEventData->pEventData);
20504 wdiWowlAddBcPtrRsp.wdiStatus =
20505 WDI_HAL_2_WDI_STATUS(halStatus);
20506 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020507
20508 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020509 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020510
Jeff Johnsone7245742012-09-05 17:12:55 -070020511 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020512}/*WDI_ProcessWowlAddBcPtrnRsp*/
20513
20514/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020515 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020517
20518 @param pWDICtx: pointer to the WLAN DAL context
20519 pEventData: pointer to the event information structure
20520
Jeff Johnson295189b2012-06-20 16:38:30 -070020521 @see
20522 @return Result of the function call
20523*/
20524WDI_Status
20525WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020526(
Jeff Johnson295189b2012-06-20 16:38:30 -070020527 WDI_ControlBlockType* pWDICtx,
20528 WDI_EventInfoType* pEventData
20529)
20530{
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 eHalStatus halStatus;
20532 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020533 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20534 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20536
20537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020538 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020539 -------------------------------------------------------------------------*/
20540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20541 ( NULL == pEventData->pEventData))
20542 {
20543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020547 }
20548
20549 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20550
20551 /*-------------------------------------------------------------------------
20552 Extract response and send it to UMAC
20553 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020554 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20555 {
20556 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20557 pEventData->pEventData,
20558 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020559
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020560 wdiWowlDelBcstPtrRsp.wdiStatus =
20561 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20562 }
20563 else
20564 {
20565 halStatus = *((eHalStatus*)pEventData->pEventData);
20566 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20567 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020568 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020569 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020570
Jeff Johnsone7245742012-09-05 17:12:55 -070020571 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020572}/*WDI_ProcessWowlDelBcPtrnRsp*/
20573
20574/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020575 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020576 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020577
20578 @param pWDICtx: pointer to the WLAN DAL context
20579 pEventData: pointer to the event information structure
20580
Jeff Johnson295189b2012-06-20 16:38:30 -070020581 @see
20582 @return Result of the function call
20583*/
20584WDI_Status
20585WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020586(
Jeff Johnson295189b2012-06-20 16:38:30 -070020587 WDI_ControlBlockType* pWDICtx,
20588 WDI_EventInfoType* pEventData
20589)
20590{
Jeff Johnson295189b2012-06-20 16:38:30 -070020591 eHalStatus halStatus;
20592 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020593 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20594 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20596
20597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020598 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020599 -------------------------------------------------------------------------*/
20600 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20601 ( NULL == pEventData->pEventData))
20602 {
20603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020604 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020607 }
20608
20609 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20610
20611 /*-------------------------------------------------------------------------
20612 Extract response and send it to UMAC
20613 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020614 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20615 {
20616 wpalMemoryCopy( &halEnterWowlRspParams,
20617 (wpt_uint8*)pEventData->pEventData,
20618 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020619
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020620 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20621 wdiwowlEnterRsp.status =
20622 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20623 }
20624 else
20625 {
20626 halStatus = *((eHalStatus*)pEventData->pEventData);
20627 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20628 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020629 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020630 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020631
Jeff Johnsone7245742012-09-05 17:12:55 -070020632 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020633}/*WDI_ProcessWowlEnterRsp*/
20634
20635/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020636 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020637 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020638
20639 @param pWDICtx: pointer to the WLAN DAL context
20640 pEventData: pointer to the event information structure
20641
Jeff Johnson295189b2012-06-20 16:38:30 -070020642 @see
20643 @return Result of the function call
20644*/
20645WDI_Status
20646WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020647(
Jeff Johnson295189b2012-06-20 16:38:30 -070020648 WDI_ControlBlockType* pWDICtx,
20649 WDI_EventInfoType* pEventData
20650)
20651{
Jeff Johnson295189b2012-06-20 16:38:30 -070020652 eHalStatus halStatus;
20653 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020654 tHalExitWowlRspParams halExitWowlRspParams;
20655 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20656
Jeff Johnson295189b2012-06-20 16:38:30 -070020657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20658
20659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020660 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020661 -------------------------------------------------------------------------*/
20662 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20663 ( NULL == pEventData->pEventData))
20664 {
20665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 }
20670
20671 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20672
20673 /*-------------------------------------------------------------------------
20674 Extract response and send it to UMAC
20675 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020676 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20677 {
20678 wpalMemoryCopy( &halExitWowlRspParams,
20679 pEventData->pEventData,
20680 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020681
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020682 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20683 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20684
20685 }
20686 else
20687 {
20688 halStatus = *((eHalStatus*)pEventData->pEventData);
20689 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20690 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020691 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020692 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020693
Jeff Johnsone7245742012-09-05 17:12:55 -070020694 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020695}/*WDI_ProcessWowlExitRsp*/
20696
20697/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020699 (called when a response is being received over the bus
20700 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020701
20702 @param pWDICtx: pointer to the WLAN DAL context
20703 pEventData: pointer to the event information structure
20704
Jeff Johnson295189b2012-06-20 16:38:30 -070020705 @see
20706 @return Result of the function call
20707*/
20708WDI_Status
20709WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020710(
Jeff Johnson295189b2012-06-20 16:38:30 -070020711 WDI_ControlBlockType* pWDICtx,
20712 WDI_EventInfoType* pEventData
20713)
20714{
20715 WDI_Status wdiStatus;
20716 eHalStatus halStatus;
20717 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20719
20720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020722 -------------------------------------------------------------------------*/
20723 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20724 ( NULL == pEventData->pEventData))
20725 {
20726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020730 }
20731
20732 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20733
20734 /*-------------------------------------------------------------------------
20735 Extract response and send it to UMAC
20736 -------------------------------------------------------------------------*/
20737 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020738 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020739
20740 /*Notify UMAC*/
20741 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20742
Jeff Johnsone7245742012-09-05 17:12:55 -070020743 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020744}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20745
20746
20747/**
20748 @brief Process Nv download(called when a response
20749 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020750
20751 @param pWDICtx: pointer to the WLAN DAL context
20752 pEventData: pointer to the event information structure
20753
Jeff Johnson295189b2012-06-20 16:38:30 -070020754 @see
20755 @return Result of the function call
20756*/
20757WDI_Status
20758WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020759(
Jeff Johnson295189b2012-06-20 16:38:30 -070020760 WDI_ControlBlockType* pWDICtx,
20761 WDI_EventInfoType* pEventData
20762)
20763{
20764
20765 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20766 tHalNvImgDownloadRspParams halNvDownloadRsp;
20767 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20768
20769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020770 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020771 -------------------------------------------------------------------------*/
20772 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20773 ( NULL == pEventData->pEventData))
20774 {
20775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020779 }
20780
20781 /*-------------------------------------------------------------------------
20782 Extract response and send it to UMAC
20783 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020784 wpalMemoryCopy( &halNvDownloadRsp,
20785 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020786 sizeof(halNvDownloadRsp));
20787
20788 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20789
20790 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020791 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20792 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 {
20794 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020795 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020796 }
20797 else
20798 {
20799 /*Reset the Nv related global information in WDI context information */
20800 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20801 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20802 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20803 /*call WDA callback function for last fragment */
20804 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20805 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20806 }
20807
Jeff Johnsone7245742012-09-05 17:12:55 -070020808 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020809}
20810#ifdef WLAN_FEATURE_VOWIFI_11R
20811/**
20812 @brief Process Add TSpec Rsp function (called when a response
20813 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020814
20815 @param pWDICtx: pointer to the WLAN DAL context
20816 pEventData: pointer to the event information structure
20817
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 @see
20819 @return Result of the function call
20820*/
20821WDI_Status
20822WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020823(
Jeff Johnson295189b2012-06-20 16:38:30 -070020824 WDI_ControlBlockType* pWDICtx,
20825 WDI_EventInfoType* pEventData
20826)
20827{
20828 WDI_Status wdiStatus;
20829 tAggrAddTsRspParams aggrAddTsRsp;
20830 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20832
20833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020834 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020835 -------------------------------------------------------------------------*/
20836 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20837 ( NULL == pEventData->pEventData))
20838 {
20839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020843 }
20844
20845 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20846
20847 /*-------------------------------------------------------------------------
20848 Extract response and send it to UMAC
20849 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020850 wpalMemoryCopy( &aggrAddTsRsp,
20851 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020852 sizeof(aggrAddTsRsp));
20853
20854 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020855 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020856
20857 /*Notify UMAC*/
20858 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20859
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020861}/*WDI_ProcessAddTSpecRsp*/
20862#endif /* WLAN_FEATURE_VOWIFI_11R */
20863
20864/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020865 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020866 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020867
20868 @param pWDICtx: pointer to the WLAN DAL context
20869 pEventData: pointer to the event information structure
20870
Jeff Johnson295189b2012-06-20 16:38:30 -070020871 @see
20872 @return Result of the function call
20873*/
20874WDI_Status
20875WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020876(
Jeff Johnson295189b2012-06-20 16:38:30 -070020877 WDI_ControlBlockType* pWDICtx,
20878 WDI_EventInfoType* pEventData
20879)
20880{
20881 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20882 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20883 tHalHostResumeRspParams hostResumeRspMsg;
20884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20885
20886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 -------------------------------------------------------------------------*/
20889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20890 ( NULL == pEventData->pEventData))
20891 {
20892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020896 }
20897
20898 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20899
20900 /*-------------------------------------------------------------------------
20901 Extract response and send it to UMAC
20902 -------------------------------------------------------------------------*/
20903
Jeff Johnsone7245742012-09-05 17:12:55 -070020904 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020905 (wpt_uint8*)pEventData->pEventData,
20906 sizeof(hostResumeRspMsg));
20907
Jeff Johnsone7245742012-09-05 17:12:55 -070020908 wdiResumeRspParams.wdiStatus =
20909 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020910
20911 /*Notify UMAC*/
20912 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20913
20914 return WDI_STATUS_SUCCESS;
20915}
20916
20917/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020918 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020919 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020920
20921 @param pWDICtx: pointer to the WLAN DAL context
20922 pEventData: pointer to the event information structure
20923
Jeff Johnson295189b2012-06-20 16:38:30 -070020924 @see
20925 @return Result of the function call
20926*/
20927WDI_Status
20928WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020929(
Jeff Johnson295189b2012-06-20 16:38:30 -070020930 WDI_ControlBlockType* pWDICtx,
20931 WDI_EventInfoType* pEventData
20932)
20933{
20934 WDI_Status wdiStatus;
20935 eHalStatus halStatus;
20936 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20938
20939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 -------------------------------------------------------------------------*/
20942 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20943 ( NULL == pEventData->pEventData))
20944 {
20945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020946 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020949 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020950
20951 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020952
20953 /*-------------------------------------------------------------------------
20954 Extract response and send it to UMAC
20955 -------------------------------------------------------------------------*/
20956 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020957 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020958
20959 /*Notify UMAC*/
20960 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20961
Jeff Johnsone7245742012-09-05 17:12:55 -070020962 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020963}/*WDI_ProcessSetTxPerTrackingRsp*/
20964
20965/*==========================================================================
20966 Indications from HAL
20967 ==========================================================================*/
20968/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020969 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020970 indication of this kind is being received over the bus
20971 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020972
20973 @param pWDICtx: pointer to the WLAN DAL context
20974 pEventData: pointer to the event information structure
20975
Jeff Johnson295189b2012-06-20 16:38:30 -070020976 @see
20977 @return Result of the function call
20978*/
20979WDI_Status
20980WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020981(
Jeff Johnson295189b2012-06-20 16:38:30 -070020982 WDI_ControlBlockType* pWDICtx,
20983 WDI_EventInfoType* pEventData
20984)
20985{
20986 WDI_LowLevelIndType wdiInd;
20987 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20989
20990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020991 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020992 -------------------------------------------------------------------------*/
20993 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20994 ( NULL == pEventData->pEventData))
20995 {
20996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020997 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020998 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020999 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 }
21001
21002 /*-------------------------------------------------------------------------
21003 Extract indication and send it to UMAC
21004 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021005 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21006 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021007 sizeof(tHalRSSINotification));
21008
21009 /*Fill in the indication parameters*/
21010 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21011 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21012 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21013 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21014 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21015 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21016 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21017 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21018 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21019 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21020 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21021 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21022 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021023 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21024 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021025
ltimariub77f24b2013-01-24 18:54:33 -080021026 if ( pWDICtx->wdiLowLevelIndCB )
21027 {
21028 /*Notify UMAC of indication*/
21029 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21030 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021031
21032 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021033}/*WDI_ProcessLowRSSIInd*/
21034
21035
21036/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021037 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021038 an indication of this kind is being received over the
21039 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021040
21041 @param pWDICtx: pointer to the WLAN DAL context
21042 pEventData: pointer to the event information structure
21043
Jeff Johnson295189b2012-06-20 16:38:30 -070021044 @see
21045 @return Result of the function call
21046*/
21047WDI_Status
21048WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021049(
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 WDI_ControlBlockType* pWDICtx,
21051 WDI_EventInfoType* pEventData
21052)
21053{
21054 WDI_Status wdiStatus;
21055 eHalStatus halStatus;
21056 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021057 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21059
21060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021061 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021062 -------------------------------------------------------------------------*/
21063 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21064 ( NULL == pEventData->pEventData))
21065 {
21066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021067 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021068 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021070 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021071 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021072 /*-------------------------------------------------------------------------
21073 Extract indication and send it to UMAC
21074 -------------------------------------------------------------------------*/
21075 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21076 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021077 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021078
21079 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021080 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021081 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21082 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021083 if ( pWDICtx->wdiLowLevelIndCB )
21084 {
21085 /*Notify UMAC*/
21086 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21087 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021088
21089 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021090}/*WDI_ProcessMissedBeaconInd*/
21091
21092
21093/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021094 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021095 an indication of this kind is being received over the
21096 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021097
21098 @param pWDICtx: pointer to the WLAN DAL context
21099 pEventData: pointer to the event information structure
21100
Jeff Johnson295189b2012-06-20 16:38:30 -070021101 @see
21102 @return Result of the function call
21103*/
21104WDI_Status
21105WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021106(
Jeff Johnson295189b2012-06-20 16:38:30 -070021107 WDI_ControlBlockType* pWDICtx,
21108 WDI_EventInfoType* pEventData
21109)
21110{
21111 WDI_Status wdiStatus;
21112 eHalStatus halStatus;
21113 WDI_LowLevelIndType wdiInd;
21114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21115
21116 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021118 -------------------------------------------------------------------------*/
21119 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21120 ( NULL == pEventData->pEventData))
21121 {
21122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021123 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021124 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021126 }
21127
21128 /*-------------------------------------------------------------------------
21129 Extract indication and send it to UMAC
21130 -------------------------------------------------------------------------*/
21131 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21132 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021134
21135 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021136 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021137 /* ! TO DO - fill in from HAL struct:
21138 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21139
ltimariub77f24b2013-01-24 18:54:33 -080021140 if ( pWDICtx->wdiLowLevelIndCB )
21141 {
21142 /*Notify UMAC*/
21143 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21144 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021145
21146 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021147}/*WDI_ProcessUnkAddrFrameInd*/
21148
21149
21150/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021151 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021152 indication of this kind is being received over the bus
21153 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021154
21155 @param pWDICtx: pointer to the WLAN DAL context
21156 pEventData: pointer to the event information structure
21157
Jeff Johnson295189b2012-06-20 16:38:30 -070021158 @see
21159 @return Result of the function call
21160*/
21161WDI_Status
21162WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021163(
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 WDI_ControlBlockType* pWDICtx,
21165 WDI_EventInfoType* pEventData
21166)
21167{
21168 WDI_LowLevelIndType wdiInd;
21169 tpSirMicFailureInd pHalMicFailureInd;
21170
21171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21172
21173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021175 -------------------------------------------------------------------------*/
21176 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21177 ( NULL == pEventData->pEventData))
21178 {
21179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021183 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021184
Jeff Johnson295189b2012-06-20 16:38:30 -070021185 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21186 /*-------------------------------------------------------------------------
21187 Extract indication and send it to UMAC
21188 -------------------------------------------------------------------------*/
21189
21190 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021191 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021192 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21193 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21194 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21195 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21196 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21197 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21198 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21199 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021200 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021201 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021202 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021203 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021204 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021205 pHalMicFailureInd->info.keyId;
21206 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21207 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21208 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21209 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021210
21211 if ( pWDICtx->wdiLowLevelIndCB )
21212 {
21213 /*Notify UMAC*/
21214 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21215 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021216
21217 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021218}/*WDI_ProcessMicFailureInd*/
21219
21220
21221/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021222 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021223 an indication of this kind is being received over the
21224 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021225
21226 @param pWDICtx: pointer to the WLAN DAL context
21227 pEventData: pointer to the event information structure
21228
Jeff Johnson295189b2012-06-20 16:38:30 -070021229 @see
21230 @return Result of the function call
21231*/
21232WDI_Status
21233WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021234(
Jeff Johnson295189b2012-06-20 16:38:30 -070021235 WDI_ControlBlockType* pWDICtx,
21236 WDI_EventInfoType* pEventData
21237)
21238{
21239 WDI_Status wdiStatus;
21240 eHalStatus halStatus;
21241 WDI_LowLevelIndType wdiInd;
21242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21243
21244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021245 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021246 -------------------------------------------------------------------------*/
21247 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21248 ( NULL == pEventData->pEventData))
21249 {
21250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021251 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021254 }
21255
21256 /*-------------------------------------------------------------------------
21257 Extract indication and send it to UMAC
21258 -------------------------------------------------------------------------*/
21259
21260 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21261 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021263
21264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21265 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021266
Jeff Johnson295189b2012-06-20 16:38:30 -070021267 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021268 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21269 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021270
ltimariub77f24b2013-01-24 18:54:33 -080021271 if ( pWDICtx->wdiLowLevelIndCB )
21272 {
21273 /*Notify UMAC*/
21274 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21275 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021276
21277 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021278}/*WDI_ProcessFatalErrorInd*/
21279
21280/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021281 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021282 an indication of this kind is being received over the
21283 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021284
21285 @param pWDICtx: pointer to the WLAN DAL context
21286 pEventData: pointer to the event information structure
21287
Jeff Johnson295189b2012-06-20 16:38:30 -070021288 @see
21289 @return Result of the function call
21290*/
21291WDI_Status
21292WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021293(
Jeff Johnson295189b2012-06-20 16:38:30 -070021294 WDI_ControlBlockType* pWDICtx,
21295 WDI_EventInfoType* pEventData
21296)
21297{
21298 tDeleteStaContextParams halDelSTACtx;
21299 WDI_LowLevelIndType wdiInd;
21300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21301
21302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 -------------------------------------------------------------------------*/
21305 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21306 ( NULL == pEventData->pEventData))
21307 {
21308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021309 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021312 }
21313
21314 /*-------------------------------------------------------------------------
21315 Extract indication and send it to UMAC
21316 -------------------------------------------------------------------------*/
21317
21318 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021319 wpalMemoryCopy( &halDelSTACtx,
21320 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021321 sizeof(halDelSTACtx));
21322
21323 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021324 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021325
21326 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21327 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21328 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21329 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21330
Jeff Johnsone7245742012-09-05 17:12:55 -070021331 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021332 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021333 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021334 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021335 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21336 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021337
ltimariub77f24b2013-01-24 18:54:33 -080021338 if ( pWDICtx->wdiLowLevelIndCB )
21339 {
21340 /*Notify UMAC*/
21341 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21342 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021343
21344 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021345}/*WDI_ProcessDelSTAInd*/
21346
21347/**
21348*@brief Process Coex Indication function (called when
21349 an indication of this kind is being received over the
21350 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021351
21352 @param pWDICtx: pointer to the WLAN DAL context
21353 pEventData: pointer to the event information structure
21354
Jeff Johnson295189b2012-06-20 16:38:30 -070021355 @see
21356 @return Result of the function call
21357*/
21358WDI_Status
21359WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021360(
Jeff Johnson295189b2012-06-20 16:38:30 -070021361 WDI_ControlBlockType* pWDICtx,
21362 WDI_EventInfoType* pEventData
21363)
21364{
21365 WDI_LowLevelIndType wdiInd;
21366 tCoexIndMsg halCoexIndMsg;
21367 wpt_uint32 index;
21368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21369
21370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021371 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021372 -------------------------------------------------------------------------*/
21373 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21374 ( NULL == pEventData->pEventData ))
21375 {
21376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021378 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021380 }
21381
21382 /*-------------------------------------------------------------------------
21383 Extract indication and send it to UMAC
21384 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021385 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21386 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021387 sizeof(halCoexIndMsg.coexIndParams) );
21388
21389 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021390 wdiInd.wdiIndicationType = WDI_COEX_IND;
21391 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021392 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21393 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021394 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021395 }
21396
21397 // DEBUG
21398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21399 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021400 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21401 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21402 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21403 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21404 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021405
ltimariub77f24b2013-01-24 18:54:33 -080021406 if ( pWDICtx->wdiLowLevelIndCB )
21407 {
21408 /*Notify UMAC*/
21409 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21410 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021411
21412 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021413}/*WDI_ProcessCoexInd*/
21414
21415/**
21416*@brief Process Tx Complete Indication function (called when
21417 an indication of this kind is being received over the
21418 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021419
21420 @param pWDICtx: pointer to the WLAN DAL context
21421 pEventData: pointer to the event information structure
21422
Jeff Johnson295189b2012-06-20 16:38:30 -070021423 @see
21424 @return Result of the function call
21425*/
21426WDI_Status
21427WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021428(
Jeff Johnson295189b2012-06-20 16:38:30 -070021429 WDI_ControlBlockType* pWDICtx,
21430 WDI_EventInfoType* pEventData
21431)
21432{
21433 WDI_LowLevelIndType wdiInd;
21434 tTxComplIndMsg halTxComplIndMsg;
21435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21436
21437 /*-------------------------------------------------------------------------
21438 Sanity check
21439 -------------------------------------------------------------------------*/
21440 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21441 ( NULL == pEventData->pEventData ))
21442 {
21443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021444 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021445 WDI_ASSERT( 0 );
21446 return WDI_STATUS_E_FAILURE;
21447 }
21448
21449 /*-------------------------------------------------------------------------
21450 Extract indication and send it to UMAC
21451 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021452 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21453 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021454 sizeof(halTxComplIndMsg.txComplParams) );
21455
21456 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021457 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021458
21459 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21460 &halTxComplIndMsg.txComplParams,
21461 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021462
ltimariub77f24b2013-01-24 18:54:33 -080021463 if ( pWDICtx->wdiLowLevelIndCB )
21464 {
21465 /*Notify UMAC*/
21466 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21467 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021468
21469 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021470}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021471#ifdef FEATURE_WLAN_TDLS
21472/**
21473*@brief Process TDLS Indication function (called when
21474 an indication of this kind is being received over the
21475 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021476
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021477 @param pWDICtx: pointer to the WLAN DAL context
21478 pEventData: pointer to the event information structure
21479
21480 @see
21481 @return Result of the function call
21482*/
21483WDI_Status
21484WDI_ProcessTdlsInd
21485(
21486 WDI_ControlBlockType* pWDICtx,
21487 WDI_EventInfoType* pEventData
21488)
21489{
21490 WDI_LowLevelIndType wdiInd;
21491 tTdlsIndMsg halTdlsIndMsg;
21492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21493
21494 /*-------------------------------------------------------------------------
21495 Sanity check
21496 -------------------------------------------------------------------------*/
21497 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21498 ( NULL == pEventData->pEventData ))
21499 {
21500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21501 "%s: Invalid parameters", __func__);
21502 WDI_ASSERT( 0 );
21503 return WDI_STATUS_E_FAILURE;
21504 }
21505
21506 /*-------------------------------------------------------------------------
21507 Extract indication and send it to UMAC
21508 -------------------------------------------------------------------------*/
21509 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21510 pEventData->pEventData,
21511 sizeof(halTdlsIndMsg.tdlsIndParams) );
21512
21513 /*Fill in the indication parameters*/
21514 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21515
21516 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21517 = halTdlsIndMsg.tdlsIndParams.status;
21518
21519 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21520 = halTdlsIndMsg.tdlsIndParams.staIdx;
21521
21522 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21523 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21524
Atul Mittalbb2aad02014-09-22 19:09:36 +053021525 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21526 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021527 /*Notify UMAC*/
21528 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21529
21530 return WDI_STATUS_SUCCESS;
21531}/*WDI_ProcessTdlsInd*/
21532#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021533/**
Viral Modid86bde22012-12-10 13:09:21 -080021534*@brief Process Noa Start Indication function (called when
21535 an indication of this kind is being received over the
21536 bus from HAL)
21537
21538 @param pWDICtx: pointer to the WLAN DAL context
21539 pEventData: pointer to the event information structure
21540
21541 @see
21542 @return Result of the function call
21543*/
21544WDI_Status
21545WDI_ProcessP2pNoaStartInd
21546(
21547 WDI_ControlBlockType* pWDICtx,
21548 WDI_EventInfoType* pEventData
21549)
21550{
21551 WDI_LowLevelIndType wdiInd;
21552 tNoaStartIndMsg halNoaStartIndMsg;
21553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21554
21555 /*-------------------------------------------------------------------------
21556 Sanity check
21557 -------------------------------------------------------------------------*/
21558 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21559 ( NULL == pEventData->pEventData ))
21560 {
21561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21562 "%s: Invalid parameters", __func__);
21563 WDI_ASSERT( 0 );
21564 return WDI_STATUS_E_FAILURE;
21565 }
21566
21567 /*-------------------------------------------------------------------------
21568 Extract indication and send it to UMAC
21569 -------------------------------------------------------------------------*/
21570 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21571 pEventData->pEventData,
21572 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21573
21574 /*Fill in the indication parameters*/
21575 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21576
21577 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21578 = halNoaStartIndMsg.noaStartIndParams.status;
21579
21580 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21581 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21582
21583 /*Notify UMAC*/
21584 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21585
21586 return WDI_STATUS_SUCCESS;
21587}/*WDI_ProcessNoaAttrInd*/
21588
21589/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021590*@brief Process Noa Attr Indication function (called when
21591 an indication of this kind is being received over the
21592 bus from HAL)
21593
21594 @param pWDICtx: pointer to the WLAN DAL context
21595 pEventData: pointer to the event information structure
21596
21597 @see
21598 @return Result of the function call
21599*/
21600WDI_Status
21601WDI_ProcessP2pNoaAttrInd
21602(
21603 WDI_ControlBlockType* pWDICtx,
21604 WDI_EventInfoType* pEventData
21605)
21606{
21607 WDI_LowLevelIndType wdiInd;
21608 tNoaAttrIndMsg halNoaAttrIndMsg;
21609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21610
21611 /*-------------------------------------------------------------------------
21612 Sanity check
21613 -------------------------------------------------------------------------*/
21614 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21615 ( NULL == pEventData->pEventData ))
21616 {
21617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021619 WDI_ASSERT( 0 );
21620 return WDI_STATUS_E_FAILURE;
21621 }
21622
21623 /*-------------------------------------------------------------------------
21624 Extract indication and send it to UMAC
21625 -------------------------------------------------------------------------*/
21626 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21627 pEventData->pEventData,
21628 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21629
21630 /*Fill in the indication parameters*/
21631 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021632
Jeff Johnson295189b2012-06-20 16:38:30 -070021633 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21634 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021635
Jeff Johnson295189b2012-06-20 16:38:30 -070021636 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21637 = halNoaAttrIndMsg.noaAttrIndParams.index;
21638 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21639 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21640 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21641 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021642
Jeff Johnson295189b2012-06-20 16:38:30 -070021643 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21644 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21645 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21646 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21647 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21648 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21649 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21650 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021651
Jeff Johnson295189b2012-06-20 16:38:30 -070021652 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21653 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21654 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21655 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21656 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21657 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21658 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21659 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21660
ltimariub77f24b2013-01-24 18:54:33 -080021661 if ( pWDICtx->wdiLowLevelIndCB )
21662 {
21663 /*Notify UMAC*/
21664 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21665 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021666
21667 return WDI_STATUS_SUCCESS;
21668}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021669
21670/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021671 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021672 an indication of this kind is being received over the
21673 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021674
21675 @param pWDICtx: pointer to the WLAN DAL context
21676 pEventData: pointer to the event information structure
21677
Jeff Johnson295189b2012-06-20 16:38:30 -070021678 @see
21679 @return Result of the function call
21680*/
21681WDI_Status
21682WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021683(
Jeff Johnson295189b2012-06-20 16:38:30 -070021684 WDI_ControlBlockType* pWDICtx,
21685 WDI_EventInfoType* pEventData
21686)
21687{
21688 WDI_LowLevelIndType wdiInd;
21689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021690
Jeff Johnson295189b2012-06-20 16:38:30 -070021691 /*-------------------------------------------------------------------------
21692 Extract indication and send it to UMAC
21693 -------------------------------------------------------------------------*/
21694 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021695 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21696
ltimariub77f24b2013-01-24 18:54:33 -080021697 if ( pWDICtx->wdiLowLevelIndCB )
21698 {
21699 /*Notify UMAC*/
21700 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21701 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021702
Jeff Johnsone7245742012-09-05 17:12:55 -070021703 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021704}/*WDI_ProcessTxPerHitInd*/
21705
Jeff Johnson295189b2012-06-20 16:38:30 -070021706/**
Yue Mab9c86f42013-08-14 15:59:08 -070021707 @brief Process Periodic Tx Pattern Fw Indication function
21708
21709 @param pWDICtx: pointer to the WLAN DAL context
21710 pEventData: pointer to the event information structure
21711
21712 @see
21713 @return Result of the function call
21714*/
21715WDI_Status
21716WDI_ProcessPeriodicTxPtrnFwInd
21717(
21718 WDI_ControlBlockType* pWDICtx,
21719 WDI_EventInfoType* pEventData
21720)
21721{
21722 WDI_LowLevelIndType wdiInd;
21723
21724 /*-------------------------------------------------------------------------
21725 Sanity check
21726 -------------------------------------------------------------------------*/
21727 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21728 (NULL == pEventData->pEventData))
21729 {
21730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21731 "%s: Invalid parameters", __func__);
21732 WDI_ASSERT(0);
21733 return WDI_STATUS_E_FAILURE;
21734 }
21735
21736 /*-------------------------------------------------------------------------
21737 Extract indication and send it to UMAC
21738 -------------------------------------------------------------------------*/
21739 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21740 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21741 sizeof(tHalPeriodicTxPtrnFwInd));
21742
21743 if (pWDICtx->wdiLowLevelIndCB)
21744 {
21745 /*Notify UMAC*/
21746 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21747 }
21748
21749 return WDI_STATUS_SUCCESS;
21750}
21751
21752/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 @brief WDI_ProcessFTMCommandReq
21754 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021755
21756 @param pWDICtx: pointer to the WLAN DAL context
21757 pEventData: pointer to the event information structure
21758
Jeff Johnson295189b2012-06-20 16:38:30 -070021759 @see
21760 @return Result of the function call
21761*/
21762WDI_Status
21763WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021764(
Jeff Johnson295189b2012-06-20 16:38:30 -070021765 WDI_ControlBlockType* pWDICtx,
21766 WDI_EventInfoType* pEventData
21767)
21768{
21769 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21770 wpt_uint8 *ftmCommandBuffer = NULL;
21771 wpt_uint16 dataOffset;
21772 wpt_uint16 bufferSize;
21773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021774 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021775 -------------------------------------------------------------------------*/
21776 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21777 ( NULL == pEventData->pEventData))
21778
21779 {
21780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021781 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021784 }
21785
21786 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21787
21788 /* Get MSG Buffer */
21789 WDI_GetMessageBuffer(pWDICtx,
21790 WDI_FTM_CMD_REQ,
21791 ftmCommandReq->bodyLength,
21792 &ftmCommandBuffer,
21793 &dataOffset,
21794 &bufferSize);
21795
21796 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21797 ftmCommandReq->FTMCommandBody,
21798 ftmCommandReq->bodyLength);
21799
21800 /* Send MSG */
21801 return WDI_SendMsg(pWDICtx,
21802 ftmCommandBuffer,
21803 bufferSize,
21804 pEventData->pCBfnc,
21805 pEventData->pUserData,
21806 WDI_FTM_CMD_RESP);
21807}
21808
21809/**
21810 @brief WDI_ProcessFTMCommandRsp
21811 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021812
21813 @param pWDICtx: pointer to the WLAN DAL context
21814 pEventData: pointer to the event information structure
21815
Jeff Johnson295189b2012-06-20 16:38:30 -070021816 @see
21817 @return Result of the function call
21818*/
21819WDI_Status
21820WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021821(
Jeff Johnson295189b2012-06-20 16:38:30 -070021822 WDI_ControlBlockType* pWDICtx,
21823 WDI_EventInfoType* pEventData
21824)
21825{
21826 WDI_FTMCommandRspCb ftmCMDRspCb;
21827 tProcessPttRspParams *ftmCMDRspData = NULL;
21828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21829
21830 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021831 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021832 -------------------------------------------------------------------------*/
21833 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21834 ( NULL == pEventData->pEventData))
21835 {
21836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021837 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021838 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021840 }
21841
21842 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21843
21844 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21845
Jeff Johnsone7245742012-09-05 17:12:55 -070021846 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21847 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021848 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21849
21850 /*Notify UMAC*/
21851 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21852
Jeff Johnsone7245742012-09-05 17:12:55 -070021853 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021854}
Jeff Johnson295189b2012-06-20 16:38:30 -070021855/**
21856 @brief WDI_ProcessHalDumpCmdReq
21857 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021858
21859 @param pWDICtx: pointer to the WLAN DAL context
21860 pEventData: pointer to the event information structure
21861
Jeff Johnson295189b2012-06-20 16:38:30 -070021862 @see
21863 @return Result of the function call
21864*/
21865WDI_Status
21866WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021867(
Jeff Johnson295189b2012-06-20 16:38:30 -070021868 WDI_ControlBlockType* pWDICtx,
21869 WDI_EventInfoType* pEventData
21870)
21871{
21872 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21873 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21874 wpt_uint16 usDataOffset = 0;
21875 wpt_uint16 usSendSize = 0;
21876 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021877 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021878
21879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021881 -------------------------------------------------------------------------*/
21882 if (( NULL == pEventData ) ||
21883 ( NULL == pEventData->pEventData) ||
21884 ( NULL == pEventData->pCBfnc ))
21885 {
21886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021887 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021890 }
21891
21892 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21893 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21894
21895 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021896 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021897 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021898 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021899 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021900 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021901 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021902 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021903 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021904 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021905 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021906
Jeff Johnson295189b2012-06-20 16:38:30 -070021907 /*-----------------------------------------------------------------------
21908 Get message buffer
21909 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021910 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021911 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21912 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021913 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021914 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21915 {
21916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021917 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021918 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021921 }
21922
Jeff Johnsone7245742012-09-05 17:12:55 -070021923 wpalMemoryCopy( pSendBuffer+usDataOffset,
21924 &halDumpCmdReqMsg.dumpCmdReqParams,
21925 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021926
21927 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021928 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021929
21930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021931 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021932 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021933 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21934 wdiHALDumpCmdRspCb, pEventData->pUserData,
21935 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021936}
21937
21938/**
21939 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021940 Process hal Dump Command Response from HAL, simply route to HDD
21941
21942 @param pWDICtx: pointer to the WLAN DAL context
21943 pEventData: pointer to the event information structure
21944
Jeff Johnson295189b2012-06-20 16:38:30 -070021945 @see
21946 @return Result of the function call
21947*/
21948WDI_Status
21949WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021950(
Jeff Johnson295189b2012-06-20 16:38:30 -070021951 WDI_ControlBlockType* pWDICtx,
21952 WDI_EventInfoType* pEventData
21953)
21954{
21955 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021956 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21958
21959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021961 -------------------------------------------------------------------------*/
21962 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21963 ( NULL == pEventData->pEventData))
21964 {
21965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021969 }
21970
Jeff Johnsone7245742012-09-05 17:12:55 -070021971 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021972
21973 /*Initialize the WDI Response structure */
21974 wdiHALDumpCmdRsp.usBufferLen = 0;
21975 wdiHALDumpCmdRsp.pBuffer = NULL;
21976
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021977 wpalMemoryCopy( &halDumpCmdRspParams,
21978 pEventData->pEventData,
21979 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021980
21981 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021982 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021983
21984 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021985 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021986 {
21987 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021988 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21989 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21990
21991 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21992 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021993 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021994 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021995
Jeff Johnson295189b2012-06-20 16:38:30 -070021996 /*Notify UMAC*/
21997 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21998
21999 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22000 {
22001 /* Free the allocated buffer */
22002 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22003 }
22004 return WDI_STATUS_SUCCESS;
22005}
22006
22007/*==========================================================================
22008 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022009
Jeff Johnson295189b2012-06-20 16:38:30 -070022010 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022011 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022012==========================================================================*/
22013/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022014 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022015 when it wishes to send up a notification like the ones
22016 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022017
Jeff Johnson295189b2012-06-20 16:38:30 -070022018 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022019
22020 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022021 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022022 wctsNotifyCBData: the callback data of the user
22023
Jeff Johnson295189b2012-06-20 16:38:30 -070022024 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022025
22026 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022027*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022028void
Jeff Johnson295189b2012-06-20 16:38:30 -070022029WDI_NotifyMsgCTSCB
22030(
Jeff Johnsone7245742012-09-05 17:12:55 -070022031 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022032 WCTS_NotifyEventType wctsEvent,
22033 void* wctsNotifyCBData
22034)
22035{
Jeff Johnsone7245742012-09-05 17:12:55 -070022036 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22038
22039 if (NULL == pWDICtx )
22040 {
22041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022044 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022045 }
22046
22047 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22048 {
22049 /* callback presumably occurred after close */
22050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022051 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022052 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022053 }
22054
22055 if ( WCTS_EVENT_OPEN == wctsEvent )
22056 {
22057 /*Flag must be set atomically as it is checked from incoming request
22058 functions*/
22059 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022060 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022061
22062 /*Nothing to do - so try to dequeue any pending request that may have
22063 occurred while we were trying to establish this*/
22064 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022065 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022066 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022067 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022068 {
22069 /*Flag must be set atomically as it is checked from incoming request
22070 functions*/
22071 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022072 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022073
22074 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022075 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022076 wpalMutexRelease(&pWDICtx->wptMutex);
22077
22078 /*Notify that the Control Channel is closed */
22079 wpalEventSet(&pWDICtx->wctsActionEvent);
22080 }
22081
22082}/*WDI_NotifyMsgCTSCB*/
22083
22084
22085/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022086 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022087 when it wishes to send up a packet received over the
22088 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022089
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022091
22092 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022093 pMsg: the packet
22094 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022095 wctsRxMsgCBData: the callback data of the user
22096
Jeff Johnson295189b2012-06-20 16:38:30 -070022097 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022098
22099 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022100*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022101void
22102WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022103(
Jeff Johnsone7245742012-09-05 17:12:55 -070022104 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022105 void* pMsg,
22106 wpt_uint32 uLen,
22107 void* wctsRxMsgCBData
22108)
22109{
Jeff Johnsone7245742012-09-05 17:12:55 -070022110 tHalMsgHeader *pHalMsgHeader;
22111 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022112 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22114
22115 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022118 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022119 ( uLen < sizeof(tHalMsgHeader)))
22120 {
22121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022122 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022123 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022125 }
22126
22127 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22128 {
22129 /* callback presumably occurred after close */
22130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022131 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022132 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022133 }
22134
Jeff Johnsone7245742012-09-05 17:12:55 -070022135 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022136 context - so no serialization is necessary here
22137 ! - revisit this assumption */
22138
22139 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22140
22141 if ( uLen != pHalMsgHeader->msgLen )
22142 {
22143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22144 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022145 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022146 wpalWlanReload();
22147
Jeff Johnsone7245742012-09-05 17:12:55 -070022148 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022149 }
22150
22151 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22152
22153 /*The message itself starts after the header*/
22154 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22155 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22156 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22157 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22158
22159
22160 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22161 {
22162 /*Stop the timer as the response was received */
22163 /*!UT - check for potential race conditions between stop and response */
22164 wpalTimerStop(&pWDICtx->wptResponseTimer);
22165 }
22166 /* Check if we receive a response message which is not expected */
22167 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22168 {
22169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22170 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22171 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022172 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022173 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22174 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022175
22176 if (gWDICb.bEnableSSR == false)
22177 {
22178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22179 "SSR is not enabled on WDI timeout");
22180 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22181 return;
22182 }
22183 wpalWcnssResetIntr();
22184 /* if this timer fires, it means Riva did not receive the FIQ */
22185 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22186
Jeff Johnson295189b2012-06-20 16:38:30 -070022187 return;
22188 }
22189
22190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22191 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22192
22193 /*Post response event to the state machine*/
22194 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22195
22196}/*WDI_RXMsgCTSCB*/
22197
22198
22199/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022200 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022201========================================================================*/
22202
22203/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022204 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022206
Jeff Johnson295189b2012-06-20 16:38:30 -070022207 @param pWDICtx - pointer to the control block
22208
22209 @return Result of the function call
22210*/
22211WPT_INLINE WDI_Status
22212WDI_CleanCB
22213(
22214 WDI_ControlBlockType* pWDICtx
22215)
22216{
22217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22218
22219 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022220 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022221
Jeff Johnsone7245742012-09-05 17:12:55 -070022222 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022223 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22224 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22225
22226 WDI_ResetAssocSessions( pWDICtx );
22227
22228 return WDI_STATUS_SUCCESS;
22229}/*WDI_CleanCB*/
22230
22231
22232/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022233 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022234
Jeff Johnsone7245742012-09-05 17:12:55 -070022235
22236 @param pWDICtx: pointer to the WLAN DAL context
22237 pEventData: pointer to the event information structure
22238
Jeff Johnson295189b2012-06-20 16:38:30 -070022239 @see
22240 @return Result of the function call
22241*/
22242WPT_INLINE WDI_Status
22243WDI_ProcessRequest
22244(
22245 WDI_ControlBlockType* pWDICtx,
22246 WDI_EventInfoType* pEventData
22247)
22248{
22249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22250
Jeff Johnsone7245742012-09-05 17:12:55 -070022251 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022252 already checked these pointers*/
22253
22254 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22255 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022256 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022258 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022259 WDI_getReqMsgString(pEventData->wdiRequest),
22260 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22261 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22262 }
22263 else
22264 {
22265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022266 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022267 pEventData->wdiRequest);
22268 return WDI_STATUS_E_NOT_IMPLEMENT;
22269 }
22270}/*WDI_ProcessRequest*/
22271
22272
22273/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022274 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022275 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022276 prefixes it with a send message header
22277
22278 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022279 wdiReqType: type of the request being sent
22280 uBufferLen: message buffer len
22281 pMsgBuffer: resulting allocated buffer
22282 pusDataOffset: offset in the buffer where the caller
22283 can start copying its message data
22284 puBufferSize: the resulting buffer size (offset+buff
22285 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022286
Jeff Johnson295189b2012-06-20 16:38:30 -070022287 @see
22288 @return Result of the function call
22289*/
22290WDI_Status
22291WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022292(
22293 WDI_ControlBlockType* pWDICtx,
22294 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022295 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022296 wpt_uint8** pMsgBuffer,
22297 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022298 wpt_uint16* pusBufferSize
22299)
22300{
22301 tHalMsgHeader halMsgHeader;
22302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22303
Jeff Johnsone7245742012-09-05 17:12:55 -070022304 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022305 again*/
22306
22307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022308 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022309 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022310 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22312 if ( NULL == *pMsgBuffer )
22313 {
22314 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22315 "Unable to allocate message buffer for req %s (%d)",
22316 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022317 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022319 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022320 }
22321
22322 /*-------------------------------------------------------------------------
22323 Fill in the message header
22324 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022325 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22326 /* Fill msgVersion */
22327#ifdef WLAN_FEATURE_11AC
22328 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022329 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022330 else
22331#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022332 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022333
Jeff Johnsone7245742012-09-05 17:12:55 -070022334 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22335 *pusDataOffset = sizeof(halMsgHeader);
22336 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22337
22338 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022339}/*WDI_GetMessageBuffer*/
22340
22341
22342/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022343 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022344 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022345 the CB
22346
22347 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022348 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022349
Jeff Johnson295189b2012-06-20 16:38:30 -070022350 usSendSize size of the buffer to be sent
22351 pRspCb: response callback - save in the WDI
22352 CB
22353 pUserData: user data associated with the
22354 callback
22355 wdiExpectedResponse: the code of the response that is
22356 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022357
Jeff Johnson295189b2012-06-20 16:38:30 -070022358 @see
22359 @return Result of the function call
22360*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022361WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022362WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022363(
22364 WDI_ControlBlockType* pWDICtx,
22365 wpt_uint8* pSendBuffer,
22366 wpt_uint32 usSendSize,
22367 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022368 void* pUserData,
22369 WDI_ResponseEnumType wdiExpectedResponse
22370)
22371{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022372 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022373 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22375
22376 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022377 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022378 ------------------------------------------------------------------------*/
22379 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022380 pWDICtx->pfncRspCB = pRspCb;
22381 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022382
22383 /*-----------------------------------------------------------------------
22384 Call the CTS to send this message over - free message afterwards
22385 - notify transport failure
22386 Note: CTS is reponsible for freeing the message buffer.
22387 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022388 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22389 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22390 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022391 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022393 "Failed to send message with expected response %s (%d)"
22394 " over the bus - catastrophic failure",
22395 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22396 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022397
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022398 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22399 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022400 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022401 else
22402 {
22403 /* even when message was placed in CTS deferred Q, we will treat it
22404 success but log this info
22405 */
22406 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22407 {
22408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22409 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22410 "response %s (%d)",
22411 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22412 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022413 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022414 }
22415 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022416
Jeff Johnsond13512a2012-07-17 11:42:19 -070022417 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022418 if ( NULL != pWDICtx->wdiReqStatusCB )
22419 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022420 /*Inform originator whether request went through or not*/
22421 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22422 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022423 pWDICtx->wdiReqStatusCB = NULL;
22424 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022425 callback(wdiStatus, callbackContext);
22426
22427 /*For WDI requests which have registered a request callback,
22428 inform the WDA caller of the same via setting the return value
22429 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22430 end up repeating the functonality in the req callback for the
22431 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022432 if (wdiStatus != WDI_STATUS_SUCCESS)
22433 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022434 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022435 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022436 }
22437
Jeff Johnsond13512a2012-07-17 11:42:19 -070022438 if ( wdiStatus == WDI_STATUS_SUCCESS )
22439 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022440 /*Start timer for the expected response */
22441 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022442
22443 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022444 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022445 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022446 }
22447 else
22448 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022449 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022450 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22451 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022452
Jeff Johnsond13512a2012-07-17 11:42:19 -070022453 return wdiStatus;
22454
Jeff Johnson295189b2012-06-20 16:38:30 -070022455}/*WDI_SendMsg*/
22456
22457
22458
22459/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022460 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022461 the bus using the control transport and saves some info
22462 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022463
22464 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022465 pSendBuffer: buffer to be sent
22466 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022467
Jeff Johnson295189b2012-06-20 16:38:30 -070022468 @see
22469 @return Result of the function call
22470*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022471WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022472WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022473(
22474 WDI_ControlBlockType* pWDICtx,
22475 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 wpt_uint32 usSendSize
22477)
22478{
22479 wpt_uint32 uStatus ;
22480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22481
22482 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022483 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022484 Note: CTS is reponsible for freeing the message buffer.
22485 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022486 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022487 (void*)pSendBuffer, usSendSize );
22488
22489 /*Inform Upper MAC about the outcome of the request*/
22490 if ( NULL != pWDICtx->wdiReqStatusCB )
22491 {
22492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22493 "Send indication status : %d", uStatus);
22494
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022495 /* even if CTS placed indication into its deferred Q, we treat it
22496 * as success and let CTS drain its queue as per smd interrupt to CTS
22497 */
22498 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 -070022499 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022500 }
22501
22502 /*If sending of the message failed - it is considered catastrophic and
22503 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022504 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22505 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22506
Jeff Johnson295189b2012-06-20 16:38:30 -070022507 {
22508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022509 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022510
22511 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22512 return WDI_STATUS_E_FAILURE;
22513 }
22514
Jeff Johnsone7245742012-09-05 17:12:55 -070022515 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022516}/*WDI_SendIndication*/
22517
22518
22519/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022520 @brief WDI_DetectedDeviceError - called internally by DAL when
22521 it has detected a failure in the device
22522
22523 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022524 usErrorCode: error code detected by WDI or received
22525 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022526
Jeff Johnson295189b2012-06-20 16:38:30 -070022527 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022528 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022529*/
22530void
22531WDI_DetectedDeviceError
22532(
22533 WDI_ControlBlockType* pWDICtx,
22534 wpt_uint16 usErrorCode
22535)
22536{
22537 WDI_LowLevelIndType wdiInd;
22538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22539
22540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22541 "Device Error detected code: %d - transitioning to stopped state",
22542 usErrorCode);
22543
Katya Nigamf02ad012014-05-05 16:12:49 +053022544 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22545
Jeff Johnson295189b2012-06-20 16:38:30 -070022546 wpalMutexAcquire(&pWDICtx->wptMutex);
22547
22548 WDI_STATableStop(pWDICtx);
22549
22550 WDI_ResetAssocSessions(pWDICtx);
22551
22552 /*Set the expected state transition to stopped - because the device
22553 experienced a failure*/
22554 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22555
22556 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022557 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022558
Jeff Johnsone7245742012-09-05 17:12:55 -070022559 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022560
22561 /*TO DO: - there should be an attempt to reset the device here*/
22562
22563 wpalMutexRelease(&pWDICtx->wptMutex);
22564
22565 /*------------------------------------------------------------------------
22566 Notify UMAC if a handler is registered
22567 ------------------------------------------------------------------------*/
22568 if (pWDICtx->wdiLowLevelIndCB)
22569 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022570 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22571 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022572
22573 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22574 }
22575}/*WDI_DetectedDeviceError*/
22576
22577/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022578 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022579 we started on send message has expire - this should
22580 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022581 reply - trigger catastrophic failure
22582 @param
22583
Jeff Johnson295189b2012-06-20 16:38:30 -070022584 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022585
22586 @see
22587 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022588*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022589void
Jeff Johnson295189b2012-06-20 16:38:30 -070022590WDI_ResponseTimerCB
22591(
22592 void *pUserData
22593)
22594{
22595 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22597
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022598 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022599 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022601 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022603 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 }
22605
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022606 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022607 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022608 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022609
22610 /* If response timer is running at this time that means this timer
22611 * event is not for the last request but rather last-to-last request and
22612 * this timer event has come after we recevied respone for last-to-last
22613 * message
22614 */
22615 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22616 {
22617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22618 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022619 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022620 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22622 "uArchTimeStampTmrStart: %llu seconds, "
22623 "uArchTimeStampTmrExp: %llu seconds",
22624 pWDICtx->uArchTimeStampRspTmrStart,
22625 pWDICtx->uArchTimeStampRspTmrExp);
22626
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022627 return;
22628 }
22629
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022630 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022631 {
22632
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022634 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022635 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022636 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022637 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22638 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22640 "uArchTimeStampTmrStart: %llu seconds, "
22641 "uArchTimeStampTmrExp: %llu seconds",
22642 pWDICtx->uArchTimeStampRspTmrStart,
22643 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022644
22645 /* WDI timeout means Riva is not responding or SMD communication to Riva
22646 * is not happening. The only possible way to recover from this error
22647 * is to initiate SSR from APPS.
22648 * There is also an option to re-enable wifi, which will eventually
22649 * trigger SSR
22650 */
22651 if (gWDICb.bEnableSSR == false)
22652 {
22653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22654 "SSR is not enabled on WDI timeout");
22655 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22656 return;
22657 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022658#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022659 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053022660 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053022661 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022662 if(wpalIsSsrPanicOnFailure())
22663 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022664 } else {
22665 /* if this timer fires, it means Riva did not receive the FIQ */
22666 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022667 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022668#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022669 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22670 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022671#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022672 }
22673 else
22674 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022676 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022677 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022678 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22679 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22681 "uArchTimeStampTmrStart: %llu seconds, "
22682 "uArchTimeStampTmrExp: %llu seconds",
22683 pWDICtx->uArchTimeStampRspTmrStart,
22684 pWDICtx->uArchTimeStampRspTmrExp);
22685
Jeff Johnson295189b2012-06-20 16:38:30 -070022686 }
22687
22688 return;
22689
22690}/*WDI_ResponseTimerCB*/
22691
22692
22693/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022694 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022695
Jeff Johnsone7245742012-09-05 17:12:55 -070022696
22697 @param pWDICtx: pointer to the WLAN DAL context
22698 pEventData: pointer to the event information structure
22699
Jeff Johnson295189b2012-06-20 16:38:30 -070022700 @see
22701 @return Result of the function call
22702*/
22703WPT_INLINE WDI_Status
22704WDI_ProcessResponse
22705(
22706 WDI_ControlBlockType* pWDICtx,
22707 WDI_EventInfoType* pEventData
22708)
22709{
22710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22711
Jeff Johnsone7245742012-09-05 17:12:55 -070022712 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022713 already checked these pointers
22714 ! - revisit this assumption */
22715 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22716 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022717 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022719 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022720 WDI_getRespMsgString(pEventData->wdiResponse),
22721 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22722 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22723 }
22724 else
22725 {
22726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022727 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022728 pEventData->wdiResponse);
22729 return WDI_STATUS_E_NOT_IMPLEMENT;
22730 }
22731}/*WDI_ProcessResponse*/
22732
22733
22734/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022735 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022736=========================================================================*/
22737
22738/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022739 @brief Utility function used by the DAL Core to help queue a
22740 request that cannot be processed right away.
22741 @param
22742
Jeff Johnson295189b2012-06-20 16:38:30 -070022743 pWDICtx: - pointer to the WDI control block
22744 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022745 queued
22746
22747 @see
22748 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022749*/
22750WDI_Status
22751WDI_QueuePendingReq
22752(
22753 WDI_ControlBlockType* pWDICtx,
22754 WDI_EventInfoType* pEventData
22755)
22756{
Jeff Johnsone7245742012-09-05 17:12:55 -070022757 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022758 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022759 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22761
22762 if ( NULL == pEventDataQueue )
22763 {
22764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022765 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 WDI_ASSERT(0);
22767 return WDI_STATUS_MEM_FAILURE;
22768 }
22769
22770 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22771 pEventDataQueue->pUserData = pEventData->pUserData;
22772 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22773 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022774 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022775
22776 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22777 {
22778 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022779
Jeff Johnson295189b2012-06-20 16:38:30 -070022780 if ( NULL == pEventInfo )
22781 {
22782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022783 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 WDI_ASSERT(0);
22785 wpalMemoryFree(pEventDataQueue);
22786 return WDI_STATUS_MEM_FAILURE;
22787 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022788
Jeff Johnson295189b2012-06-20 16:38:30 -070022789 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22790
22791 }
22792 pEventDataQueue->pEventData = pEventInfo;
22793
22794 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022795 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022796
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022797 if (eWLAN_PAL_STATUS_E_FAILURE ==
22798 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22799 {
22800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22801 "pEventDataQueue wpal_list_insert_back failed");
22802 WDI_ASSERT(0);
22803 wpalMemoryFree(pEventDataQueue);
22804 wpalMemoryFree(pEventInfo);
22805 return WDI_STATUS_MEM_FAILURE;
22806 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022807
22808 return WDI_STATUS_SUCCESS;
22809}/*WDI_QueuePendingReq*/
22810
22811/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022812 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022813 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022814 @param
22815
22816 pMsg - pointer to the message
22817
22818 @see
22819 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022820*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022821void
Jeff Johnson295189b2012-06-20 16:38:30 -070022822WDI_PALCtrlMsgCB
22823(
22824 wpt_msg *pMsg
22825)
22826{
22827 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022828 WDI_ControlBlockType* pWDICtx = NULL;
22829 WDI_Status wdiStatus;
22830 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022831 void* pUserData;
22832 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22833
22834 if (( NULL == pMsg )||
22835 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22836 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22837 {
22838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022839 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022841 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022842 }
22843
22844 /*Transition back to the state that we had before serialization
22845 - serialization transitions us to BUSY to stop any incomming requests
22846 ! TO DO L: possible race condition here if a request comes in between the
22847 state transition and the post function*/
22848
Jeff Johnsone7245742012-09-05 17:12:55 -070022849 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022850
22851 /*-----------------------------------------------------------------------
22852 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022853 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022854 -----------------------------------------------------------------------*/
22855 switch ( pEventData->wdiRequest )
22856 {
22857
Jeff Johnsone7245742012-09-05 17:12:55 -070022858 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022859 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22860 break;
22861
Jeff Johnson295189b2012-06-20 16:38:30 -070022862 case WDI_NV_DOWNLOAD_REQ:
22863 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22864 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22865 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22866 {
22867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022868 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022869 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22870 }
22871 else
22872 {
22873 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22874 }
22875
22876 break;
22877
22878 default:
22879 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22880 break;
22881 }/*switch ( pEventData->wdiRequest )*/
22882
22883 if ( WDI_STATUS_SUCCESS != wdiStatus )
22884 {
22885 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22886
22887 if ( NULL != pfnReqStatusCB )
22888 {
22889 /*Fail the request*/
22890 pfnReqStatusCB( wdiStatus, pUserData);
22891 }
22892 }
22893
22894 /* Free data - that was allocated when queueing*/
22895 if( pEventData != NULL )
22896 {
22897 if( pEventData->pEventData != NULL )
22898 {
22899 wpalMemoryFree(pEventData->pEventData);
22900 }
22901 wpalMemoryFree(pEventData);
22902 }
22903
22904 if( pMsg != NULL )
22905 {
22906 wpalMemoryFree(pMsg);
22907 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022908
Jeff Johnson295189b2012-06-20 16:38:30 -070022909}/*WDI_PALCtrlMsgCB*/
22910
22911/**
22912 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022913 and schedule for execution a pending request
22914 @param
22915
Jeff Johnson295189b2012-06-20 16:38:30 -070022916 pWDICtx: - pointer to the WDI control block
22917 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022918 queued
22919
22920 @see
22921 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022922*/
22923WDI_Status
22924WDI_DequeuePendingReq
22925(
22926 WDI_ControlBlockType* pWDICtx
22927)
22928{
Jeff Johnsone7245742012-09-05 17:12:55 -070022929 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022930 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022931 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22933
Jeff Johnsone7245742012-09-05 17:12:55 -070022934 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022935
22936 if ( NULL == pNode )
22937 {
22938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022939 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022940 return WDI_STATUS_SUCCESS;
22941 }
22942
22943 /*The node actually points to the 1st element inside the Event Data struct -
22944 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022945 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022946
22947 /*Serialize processing in the control thread
22948 !TO DO: - check to see if these are all the messages params that need
22949 to be filled in*/
22950 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22951
22952 if ( NULL == palMsg )
22953 {
22954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022955 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022957 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022958 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022959 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022960 palMsg->callback = WDI_PALCtrlMsgCB;
22961 palMsg->ptr = pEventData;
22962
22963 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022964 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022965 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022966
Jeff Johnson295189b2012-06-20 16:38:30 -070022967 /*Transition back to BUSY as we need to handle a queued request*/
22968 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022969
Jeff Johnson295189b2012-06-20 16:38:30 -070022970 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22971
22972 return WDI_STATUS_PENDING;
22973}/*WDI_DequeuePendingReq*/
22974
22975
22976/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022977 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022978 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022979 away.- The assoc requests will be queued by BSSID
22980 @param
22981
Jeff Johnson295189b2012-06-20 16:38:30 -070022982 pWDICtx: - pointer to the WDI control block
22983 pEventData: pointer to the evnt info that needs to be queued
22984 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022985
22986 @see
22987 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022988*/
22989WDI_Status
22990WDI_QueueNewAssocRequest
22991(
22992 WDI_ControlBlockType* pWDICtx,
22993 WDI_EventInfoType* pEventData,
22994 wpt_macAddr macBSSID
22995)
22996{
Jeff Johnsone7245742012-09-05 17:12:55 -070022997 wpt_uint8 i;
22998 WDI_BSSSessionType* pSession = NULL;
22999 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023000 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023001 void* pEventInfo;
23002 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023004
Jeff Johnsone7245742012-09-05 17:12:55 -070023005
23006 /*------------------------------------------------------------------------
23007 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023008 ------------------------------------------------------------------------*/
23009 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23010 {
23011 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23012 {
23013 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023014 pSession = &pWDICtx->aBSSSessions[i];
23015 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023016 }
23017 }
23018
23019 if ( i >= WDI_MAX_BSS_SESSIONS )
23020 {
23021 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023023 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023024
Jeff Johnson295189b2012-06-20 16:38:30 -070023025 /*------------------------------------------------------------------------
23026 Fill in the BSSID for this session and set the usage flag
23027 ------------------------------------------------------------------------*/
23028 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023029 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023030
23031 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023032 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023033 ------------------------------------------------------------------------*/
23034 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23035 if ( NULL == pEventDataQueue )
23036 {
23037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023038 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023039 WDI_ASSERT(0);
23040 return WDI_STATUS_MEM_FAILURE;
23041 }
23042
23043 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23044 if ( NULL == pSessionIdElement )
23045 {
23046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023047 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023048 WDI_ASSERT(0);
23049 wpalMemoryFree(pEventDataQueue);
23050 return WDI_STATUS_MEM_FAILURE;
23051 }
23052
23053 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23054 if ( NULL == pEventInfo )
23055 {
23056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023057 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023058 WDI_ASSERT(0);
23059 wpalMemoryFree(pSessionIdElement);
23060 wpalMemoryFree(pEventDataQueue);
23061 return WDI_STATUS_MEM_FAILURE;
23062 }
23063
23064 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23065 pEventDataQueue->pUserData = pEventData->pUserData;
23066 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23067 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023068 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023069
23070 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23071 pEventDataQueue->pEventData = pEventInfo;
23072
23073 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023074 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023075
23076 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023077 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023078
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023079 if (eWLAN_PAL_STATUS_E_FAILURE ==
23080 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23081 {
23082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23083 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23084 WDI_ASSERT(0);
23085 wpalMemoryFree(pSessionIdElement);
23086 wpalMemoryFree(pEventDataQueue);
23087 wpalMemoryFree(pEventInfo);
23088 return WDI_STATUS_MEM_FAILURE;
23089 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023090
23091 /*We need to maintain a separate list that keeps track of the order in which
23092 the new assoc requests are being queued such that we can start processing
23093 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023094 pSessionIdElement->ucIndex = i;
23095 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023096
23097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23098 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023099 if (eWLAN_PAL_STATUS_E_FAILURE ==
23100 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23101 {
23102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23103 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23104 WDI_ASSERT(0);
23105 wpalMemoryFree(pSessionIdElement);
23106 wpalMemoryFree(pEventDataQueue);
23107 wpalMemoryFree(pEventInfo);
23108 return WDI_STATUS_MEM_FAILURE;
23109 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023110
23111 /*Return pending as this is what the status of the request is since it has
23112 been queued*/
23113 return WDI_STATUS_PENDING;
23114}/*WDI_QueueNewAssocRequest*/
23115
23116/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023117 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023118 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023119 away.- The assoc requests will be queued by BSSID
23120 @param
23121
Jeff Johnson295189b2012-06-20 16:38:30 -070023122 pWDICtx: - pointer to the WDI control block
23123 pSession: - session in which to queue
23124 pEventData: pointer to the event info that needs to be
23125 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023126
23127 @see
23128 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023129*/
23130WDI_Status
23131WDI_QueueAssocRequest
23132(
23133 WDI_ControlBlockType* pWDICtx,
23134 WDI_BSSSessionType* pSession,
23135 WDI_EventInfoType* pEventData
23136)
23137{
Jeff Johnsone7245742012-09-05 17:12:55 -070023138 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023139 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023140 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023142
23143 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023144 Sanity check
23145 ------------------------------------------------------------------------*/
23146 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23147 {
23148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023149 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023150
Jeff Johnsone7245742012-09-05 17:12:55 -070023151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023152 }
23153
23154 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023155 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023156 ------------------------------------------------------------------------*/
23157 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23158 if ( NULL == pEventDataQueue )
23159 {
23160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023161 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023162 WDI_ASSERT(0);
23163 return WDI_STATUS_MEM_FAILURE;
23164 }
23165
23166 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23167 if ( NULL == pEventInfo )
23168 {
23169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23170 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023171 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023172 WDI_ASSERT(0);
23173 wpalMemoryFree(pEventDataQueue);
23174 return WDI_STATUS_MEM_FAILURE;
23175 }
23176
23177 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23178 pEventDataQueue->pUserData = pEventData->pUserData;
23179 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23180 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023181 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023182 pEventDataQueue->pEventData = pEventInfo;
23183
23184 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23185
23186 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023187 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023188
23189 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023190 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023191
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023192 if (eWLAN_PAL_STATUS_E_FAILURE ==
23193 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23194 {
23195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23196 "%s: Cannot allocate memory for queueing event data info",
23197 __func__);
23198 WDI_ASSERT(0);
23199 wpalMemoryFree(pEventDataQueue);
23200 wpalMemoryFree(pEventInfo);
23201 return WDI_STATUS_MEM_FAILURE;
23202 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023203
23204 /*The result of this operation is pending because the request has been
23205 queued and it will be processed at a later moment in time */
23206 return WDI_STATUS_PENDING;
23207}/*WDI_QueueAssocRequest*/
23208
23209/**
23210 @brief Utility function used by the DAL Core to help dequeue
23211 an association request that was pending
23212 The request will be queued up in front of the main
23213 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023214 @param
23215
Jeff Johnson295189b2012-06-20 16:38:30 -070023216 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023217
23218
23219 @see
23220 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023221*/
23222WDI_Status
23223WDI_DequeueAssocRequest
23224(
23225 WDI_ControlBlockType* pWDICtx
23226)
23227{
Jeff Johnsone7245742012-09-05 17:12:55 -070023228 wpt_list_node* pNode = NULL;
23229 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023230 WDI_BSSSessionType* pSession;
23231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023232
23233 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023234 Sanity check
23235 ------------------------------------------------------------------------*/
23236 if ( NULL == pWDICtx )
23237 {
23238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023239 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023240
Jeff Johnsone7245742012-09-05 17:12:55 -070023241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023242 }
23243
23244 /*------------------------------------------------------------------------
23245 An association has been completed => a new association can occur
23246 Check to see if there are any pending associations ->
23247 If so , transfer all the pending requests into the busy queue for
23248 processing
23249 These requests have arrived prior to the requests in the busy queue
23250 (bc they needed to be processed in order to be placed in this queue)
23251 => they will be placed at the front of the busy queue
23252 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023253 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023254
23255 if ( NULL == pNode )
23256 {
23257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023258 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023259 return WDI_STATUS_SUCCESS;
23260 }
23261
23262 /*The node actually points to the 1st element inside the Session Id struct -
23263 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023264 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023265
23266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23267 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23268
23269 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23270 {
23271 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023272
Jeff Johnson295189b2012-06-20 16:38:30 -070023273 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023274 the front of the main waiting queue for subsequent execution*/
23275 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023276 while ( NULL != pNode )
23277 {
23278 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023279 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23280 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023281 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023282 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023283 }
23284 else
23285 {
23286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023287 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023288 WPAL_ASSERT(0);
23289 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023291 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023292
Jeff Johnson295189b2012-06-20 16:38:30 -070023293 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23294 wpalMemoryFree(pSessionIdElement);
23295 return WDI_STATUS_SUCCESS;
23296}/*WDI_DequeueAssocRequest*/
23297
23298/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023299 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023300 pending requests - all req cb will be called with
23301 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023302 @param
23303
Jeff Johnson295189b2012-06-20 16:38:30 -070023304 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023305
23306 @see
23307 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023308*/
23309WDI_Status
23310WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023311(
Jeff Johnson295189b2012-06-20 16:38:30 -070023312 WDI_ControlBlockType* pWDICtx
23313)
23314{
Jeff Johnsone7245742012-09-05 17:12:55 -070023315 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023316 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023317 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023318 void* pUserData;
23319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23320
Jeff Johnsone7245742012-09-05 17:12:55 -070023321 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023322
23323 /*------------------------------------------------------------------------
23324 Go through all the requests and fail them - this will only be called
23325 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023326 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023327 ------------------------------------------------------------------------*/
23328 while( pNode )
23329 {
23330 /*The node actually points to the 1st element inside the Event Data struct -
23331 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023332 pEventDataQueue = (WDI_EventInfoType*)pNode;
23333
Jeff Johnson295189b2012-06-20 16:38:30 -070023334 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23335 if ( NULL != pfnReqStatusCB )
23336 {
23337 /*Fail the request*/
23338 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23339 }
23340 /* Free data - that was allocated when queueing */
23341 if ( pEventDataQueue->pEventData != NULL )
23342 {
23343 wpalMemoryFree(pEventDataQueue->pEventData);
23344 }
23345 wpalMemoryFree(pEventDataQueue);
23346
23347 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23348 {
23349 break;
23350 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023351 }
23352
Jeff Johnson295189b2012-06-20 16:38:30 -070023353 return WDI_STATUS_SUCCESS;
23354}/*WDI_ClearPendingRequests*/
23355
23356/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023357 @brief Helper routine used to init the BSS Sessions in the WDI control block
23358
23359
23360 @param pWDICtx: pointer to the WLAN DAL context
23361
Jeff Johnson295189b2012-06-20 16:38:30 -070023362 @see
23363*/
23364void
23365WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023366(
Jeff Johnson295189b2012-06-20 16:38:30 -070023367 WDI_ControlBlockType* pWDICtx
23368)
23369{
Jeff Johnsone7245742012-09-05 17:12:55 -070023370 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23372
23373 /*-------------------------------------------------------------------------
23374 No Sanity check
23375 -------------------------------------------------------------------------*/
23376 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23377 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023378 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023379 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23380 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23381 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23382 }
23383}/*WDI_ResetAssocSessions*/
23384
23385/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023386 @brief Helper routine used to find a session based on the BSSID
23387
23388
23389 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023390 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023391 pSession: pointer to the session (if found)
23392
Jeff Johnson295189b2012-06-20 16:38:30 -070023393 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023394 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023395*/
23396wpt_uint8
23397WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023398(
Jeff Johnson295189b2012-06-20 16:38:30 -070023399 WDI_ControlBlockType* pWDICtx,
23400 wpt_macAddr macBSSID,
23401 WDI_BSSSessionType** ppSession
23402)
23403{
Jeff Johnsone7245742012-09-05 17:12:55 -070023404 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023405 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23406
23407 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023408 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023409 -------------------------------------------------------------------------*/
23410 if ( NULL == ppSession )
23411 {
23412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023413 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023414 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023415 }
23416
Jeff Johnsone7245742012-09-05 17:12:55 -070023417 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023418
Jeff Johnsone7245742012-09-05 17:12:55 -070023419 /*------------------------------------------------------------------------
23420 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023421 ------------------------------------------------------------------------*/
23422 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23423 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023424 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23425 (eWLAN_PAL_TRUE ==
23426 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23427 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023428 {
23429 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023430 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023431 return i;
23432 }
23433 }
23434
Jeff Johnsone7245742012-09-05 17:12:55 -070023435 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023436}/*WDI_FindAssocSession*/
23437
23438/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023439 @brief Helper routine used to find a session based on the BSSID
23440
23441
23442 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023443 ucBSSIdx: BSS Index of the session
23444 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023445
Jeff Johnson295189b2012-06-20 16:38:30 -070023446 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023447 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023448*/
23449wpt_uint8
23450WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023451(
Jeff Johnson295189b2012-06-20 16:38:30 -070023452 WDI_ControlBlockType* pWDICtx,
23453 wpt_uint16 ucBSSIdx,
23454 WDI_BSSSessionType** ppSession
23455)
23456{
Jeff Johnsone7245742012-09-05 17:12:55 -070023457 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23459
23460 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023461 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023462 -------------------------------------------------------------------------*/
23463 if ( NULL == ppSession )
23464 {
23465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023466 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023467 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023468 }
23469
Jeff Johnsone7245742012-09-05 17:12:55 -070023470 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023471
Jeff Johnsone7245742012-09-05 17:12:55 -070023472 /*------------------------------------------------------------------------
23473 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023474 ------------------------------------------------------------------------*/
23475 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23476 {
23477 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23478 {
23479 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023480 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023481 return i;
23482 }
23483 }
23484
Jeff Johnsone7245742012-09-05 17:12:55 -070023485 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023486}/*WDI_FindAssocSessionByBSSIdx*/
23487
23488/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023489 @brief Helper routine used to find a session based on the BSSID
23490
23491
23492 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023493 ucBSSIdx: BSS Index of the session
23494 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023495
Jeff Johnson295189b2012-06-20 16:38:30 -070023496 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023497 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023498*/
23499wpt_uint8
23500WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023501(
Jeff Johnson295189b2012-06-20 16:38:30 -070023502 WDI_ControlBlockType* pWDICtx,
23503 wpt_uint16 usIdx,
23504 WDI_BSSSessionType** ppSession
23505)
23506{
23507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23508
23509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023511 -------------------------------------------------------------------------*/
23512 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23513 {
23514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023515 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023516 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023517 }
23518
23519 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023520 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023521
23522 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023523
Jeff Johnson295189b2012-06-20 16:38:30 -070023524}/*WDI_FindAssocSessionByBSSIdx*/
23525
23526/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023527 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023528 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023529
23530
23531 @param pWDICtx: pointer to the WLAN DAL context
23532 pSession: pointer to the session (if found)
23533
Jeff Johnson295189b2012-06-20 16:38:30 -070023534 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023535 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023536*/
23537wpt_uint8
23538WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023539(
Jeff Johnson295189b2012-06-20 16:38:30 -070023540 WDI_ControlBlockType* pWDICtx,
23541 WDI_BSSSessionType** ppSession
23542)
23543{
Jeff Johnsone7245742012-09-05 17:12:55 -070023544 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023547 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023548 -------------------------------------------------------------------------*/
23549 if ( NULL == ppSession )
23550 {
23551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023552 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023553 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023554 }
23555
Jeff Johnsone7245742012-09-05 17:12:55 -070023556 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023557
Jeff Johnsone7245742012-09-05 17:12:55 -070023558 /*------------------------------------------------------------------------
23559 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023560 ------------------------------------------------------------------------*/
23561 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23562 {
23563 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23564 {
23565 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023566 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023567 return i;
23568 }
23569 }
23570
Jeff Johnsone7245742012-09-05 17:12:55 -070023571 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023572}/*WDI_FindEmptySession*/
23573
23574
23575/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023576 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023577 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023578
23579
23580 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023581 macBSSID: pointer to BSSID. If NULL, get all the session.
23582 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23583 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23584 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023585 @see
23586 @return Number of sessions in use
23587*/
23588wpt_uint8
23589WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023590(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023591 WDI_ControlBlockType* pWDICtx,
23592 wpt_macAddr macBSSID,
23593 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023594)
23595{
Jeff Johnsone7245742012-09-05 17:12:55 -070023596 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023597 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023598
23599 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023600 Count all sessions in use
23601 ------------------------------------------------------------------------*/
23602 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23603 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023604 if ( macBSSID && skipBSSID &&
23605 (eWLAN_PAL_TRUE ==
23606 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23607 WDI_MAC_ADDR_LEN)))
23608 {
23609 continue;
23610 }
23611 else if ( pWDICtx->aBSSSessions[i].bInUse )
23612 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023613 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023614 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023615 }
23616
Jeff Johnsone7245742012-09-05 17:12:55 -070023617 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023618}/*WDI_GetActiveSessionsCount*/
23619
23620/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023621 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023622 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023623
23624
23625 @param pWDICtx: pointer to the WLAN DAL context
23626 pSession: pointer to the session (if found)
23627
Jeff Johnson295189b2012-06-20 16:38:30 -070023628 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023629 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023630*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023631void
Jeff Johnson295189b2012-06-20 16:38:30 -070023632WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023633(
Jeff Johnson295189b2012-06-20 16:38:30 -070023634 WDI_ControlBlockType* pWDICtx,
23635 WDI_BSSSessionType* ppSession
23636)
23637{
23638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023639 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023640 -------------------------------------------------------------------------*/
23641 if ( NULL == ppSession )
23642 {
23643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023644 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023645 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023646 }
23647
Jeff Johnsone7245742012-09-05 17:12:55 -070023648 /*------------------------------------------------------------------------
23649 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023650 ------------------------------------------------------------------------*/
23651 wpal_list_destroy(&ppSession->wptPendingQueue);
23652 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023653 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23654 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023655 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23656 wpal_list_init(&ppSession->wptPendingQueue);
23657
23658}/*WDI_DeleteSession*/
23659
23660/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023661 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023662 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023663 @param
23664
Jeff Johnson295189b2012-06-20 16:38:30 -070023665 WDI_AddStaParams: - pointer to the WDI Add STA params
23666 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023667
23668 @see
23669 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023670*/
23671void
23672WDI_AddBcastSTAtoSTATable
23673(
23674 WDI_ControlBlockType* pWDICtx,
23675 WDI_AddStaParams * staParams,
23676 wpt_uint16 usBcastStaIdx
23677)
23678{
23679 WDI_AddStaParams wdiAddSTAParam = {0};
23680 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23682
23683 /*---------------------------------------------------------------------
23684 Sanity check
23685 ---------------------------------------------------------------------*/
23686 if ( NULL == staParams )
23687 {
23688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023689 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023690
Jeff Johnsone7245742012-09-05 17:12:55 -070023691 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023692 }
23693
23694 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23695 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23696 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23697 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23698 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23699 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23700 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23701 WDI_MAC_ADDR_LEN );
23702 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23703 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23704 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23705 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23706 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23707 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23708 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023709
Jeff Johnson295189b2012-06-20 16:38:30 -070023710 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23711}
23712
23713/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023714 @brief NV blob will be divided into fragments of size 4kb and
23715 Sent to HAL
23716
23717 @param pWDICtx: pointer to the WLAN DAL context
23718 pEventData: pointer to the event information structure
23719
Jeff Johnson295189b2012-06-20 16:38:30 -070023720 @see
23721 @return Result of the function call
23722 */
23723
23724WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023725(
Jeff Johnson295189b2012-06-20 16:38:30 -070023726 WDI_ControlBlockType* pWDICtx,
23727 WDI_EventInfoType* pEventData
23728)
23729{
23730
23731 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23732 wpt_uint8* pSendBuffer = NULL;
23733 wpt_uint16 usDataOffset = 0;
23734 wpt_uint16 usSendSize = 0;
23735 wpt_uint16 usCurrentFragmentSize =0;
23736 wpt_uint8* pSrcBuffer = NULL;
23737 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23738 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23739
23740 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23741 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23742 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23743
Jeff Johnsone7245742012-09-05 17:12:55 -070023744 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023745 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23746
23747 /* Update the current Fragment Number */
23748 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23749
23750 /*Update the HAL REQ structure */
23751 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23752 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23753 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23754
23755 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023756 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023757 image will be sent to HAL*/
23758
Jeff Johnsone7245742012-09-05 17:12:55 -070023759 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023760 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023761 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023762 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023763 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023764 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23765 usCurrentFragmentSize = FRAGMENT_SIZE;
23766
23767 /*Update the HAL REQ structure */
23768 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23769 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23770
23771 }
23772 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023773 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023774 usCurrentFragmentSize = FRAGMENT_SIZE;
23775
23776 /*Update the HAL REQ structure */
23777 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23778 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23779 }
23780
23781 /*-----------------------------------------------------------------------
23782 Get message buffer
23783 -----------------------------------------------------------------------*/
23784 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23785 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23786 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023787 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023788 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23789 {
23790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023791 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023792 pEventData, pwdiNvDownloadReqParams);
23793 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023795 }
23796
23797 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023798 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023799 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23800
23801 /* Appending the NV image fragment */
23802 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23803 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23804 usCurrentFragmentSize);
23805
23806 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023807 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023808
Jeff Johnsone7245742012-09-05 17:12:55 -070023809 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23810 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023811 WDI_NV_DOWNLOAD_RESP);
23812
23813}
Jeff Johnsone7245742012-09-05 17:12:55 -070023814/*============================================================================
23815 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023816 ============================================================================*/
23817/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023818 @brief Helper routine used to find a session based on the BSSID
23819 @param pContext: pointer to the WLAN DAL context
23820 @param pDPContext: pointer to the Datapath context
23821
Jeff Johnson295189b2012-06-20 16:38:30 -070023822 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023823 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023824*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023825WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023826WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23827{
23828 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23829
23830 pCB->pDPContext = pDPContext;
23831 return;
23832}
23833
23834/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023835 @brief Helper routine used to find a session based on the BSSID
23836
23837
23838 @param pContext: pointer to the WLAN DAL context
23839
Jeff Johnson295189b2012-06-20 16:38:30 -070023840 @see
23841 @return pointer to Datapath context
23842*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023843WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023844WDI_DS_GetDatapathContext (void *pContext)
23845{
23846 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23847 return pCB->pDPContext;
23848}
23849/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023850 @brief Helper routine used to find a session based on the BSSID
23851
23852
23853 @param pContext: pointer to the WLAN DAL context
23854 @param pDTDriverContext: pointer to the Transport Driver context
23855
Jeff Johnson295189b2012-06-20 16:38:30 -070023856 @see
23857 @return void
23858*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023859WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023860WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23861{
23862 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23863
23864 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023865 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023866}
23867
23868/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023869 @brief Helper routine used to find a session based on the BSSID
23870
23871
23872 @param pWDICtx: pointer to the WLAN DAL context
23873
Jeff Johnson295189b2012-06-20 16:38:30 -070023874 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023875 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023876*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023877WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023878WDT_GetTransportDriverContext (void *pContext)
23879{
23880 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023881 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023882}
23883
Jeff Johnsone7245742012-09-05 17:12:55 -070023884/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023885 Helper inline converters
23886 ============================================================================*/
23887/*Convert WDI driver type into HAL driver type*/
23888WPT_STATIC WPT_INLINE WDI_Status
23889WDI_HAL_2_WDI_STATUS
23890(
23891 eHalStatus halStatus
23892)
23893{
Jeff Johnsone7245742012-09-05 17:12:55 -070023894 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023895 the chances of getting inlined*/
23896 switch( halStatus )
23897 {
23898 case eHAL_STATUS_SUCCESS:
23899 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23900 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23901 return WDI_STATUS_SUCCESS;
23902 case eHAL_STATUS_FAILURE:
23903 return WDI_STATUS_E_FAILURE;
23904 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023905 return WDI_STATUS_MEM_FAILURE;
23906 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023907 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023908 default:
23909 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23910 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023911
Jeff Johnsone7245742012-09-05 17:12:55 -070023912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023913}/*WDI_HAL_2_WDI_STATUS*/
23914
23915/*Convert WDI request type into HAL request type*/
23916WPT_STATIC WPT_INLINE tHalHostMsgType
23917WDI_2_HAL_REQ_TYPE
23918(
23919 WDI_RequestEnumType wdiReqType
23920)
23921{
Jeff Johnsone7245742012-09-05 17:12:55 -070023922 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023923 the chances of getting inlined*/
23924 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023925 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023926 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023927 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023928 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023929 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023930 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023931 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023932 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023933 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023934 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023935 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023936 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023937 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023938 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023939 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023941 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023942 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023943 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023944 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023945 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023946 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023947 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023948 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023949 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023950 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023951 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023952 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023953 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023954 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023955 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023956 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023957 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023958 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023959 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023960 return WLAN_HAL_RMV_STAKEY_REQ;
23961 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023962 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023963 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023964 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023965 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023966 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023967 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023968 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023969 case WDI_DEL_BA_REQ:
23970 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023971#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023972 case WDI_TSM_STATS_REQ:
23973 return WLAN_HAL_TSM_STATS_REQ;
23974#endif
23975 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023976 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023977 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023978 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023979 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023980 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023981 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023982 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023983 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023984 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023985 case WDI_ADD_BA_SESSION_REQ:
23986 return WLAN_HAL_ADD_BA_SESSION_REQ;
23987 case WDI_TRIGGER_BA_REQ:
23988 return WLAN_HAL_TRIGGER_BA_REQ;
23989 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023990 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023991 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023992 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023993 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23994 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23995 case WDI_SET_MAX_TX_POWER_REQ:
23996 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023997 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23998 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023999 case WDI_SET_TX_POWER_REQ:
24000 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024001 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24002 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024003#ifdef FEATURE_WLAN_TDLS
24004 case WDI_TDLS_LINK_ESTABLISH_REQ:
24005 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024006 case WDI_TDLS_CHAN_SWITCH_REQ:
24007 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024008#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024009 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024010 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024011 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024012 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024013 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024014 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024015 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024016 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024017 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024018 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024019 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024020 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024021 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024022 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024023 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024024 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024025 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024026 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024027 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024028 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024029 case WDI_REM_BEACON_FILTER_REQ:
24030 return WLAN_HAL_REM_BCN_FILTER_REQ;
24031 case WDI_SET_RSSI_THRESHOLDS_REQ:
24032 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24033 case WDI_HOST_OFFLOAD_REQ:
24034 return WLAN_HAL_HOST_OFFLOAD_REQ;
24035 case WDI_WOWL_ADD_BC_PTRN_REQ:
24036 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24037 case WDI_WOWL_DEL_BC_PTRN_REQ:
24038 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24039 case WDI_WOWL_ENTER_REQ:
24040 return WLAN_HAL_ENTER_WOWL_REQ;
24041 case WDI_WOWL_EXIT_REQ:
24042 return WLAN_HAL_EXIT_WOWL_REQ;
24043 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24044 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24045 case WDI_NV_DOWNLOAD_REQ:
24046 return WLAN_HAL_DOWNLOAD_NV_REQ;
24047 case WDI_FLUSH_AC_REQ:
24048 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24049 case WDI_BTAMP_EVENT_REQ:
24050 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24051#ifdef WLAN_FEATURE_VOWIFI_11R
24052 case WDI_AGGR_ADD_TS_REQ:
24053 return WLAN_HAL_AGGR_ADD_TS_REQ;
24054#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024055 case WDI_FTM_CMD_REQ:
24056 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024057 case WDI_ADD_STA_SELF_REQ:
24058 return WLAN_HAL_ADD_STA_SELF_REQ;
24059 case WDI_DEL_STA_SELF_REQ:
24060 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024061#ifdef FEATURE_OEM_DATA_SUPPORT
24062 case WDI_START_OEM_DATA_REQ:
24063 return WLAN_HAL_START_OEM_DATA_REQ;
24064#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024065 case WDI_HOST_RESUME_REQ:
24066 return WLAN_HAL_HOST_RESUME_REQ;
24067 case WDI_HOST_SUSPEND_IND:
24068 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024069 case WDI_TRAFFIC_STATS_IND:
24070 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024071#ifdef WLAN_FEATURE_11W
24072 case WDI_EXCLUDE_UNENCRYPTED_IND:
24073 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24074#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024075 case WDI_KEEP_ALIVE_REQ:
24076 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024077#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024078 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24079 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024080#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024081#ifdef FEATURE_WLAN_SCAN_PNO
24082 case WDI_SET_PREF_NETWORK_REQ:
24083 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24084 case WDI_SET_RSSI_FILTER_REQ:
24085 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24086 case WDI_UPDATE_SCAN_PARAMS_REQ:
24087 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24088#endif // FEATURE_WLAN_SCAN_PNO
24089 case WDI_SET_TX_PER_TRACKING_REQ:
24090 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24091#ifdef WLAN_FEATURE_PACKET_FILTERING
24092 case WDI_8023_MULTICAST_LIST_REQ:
24093 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24094 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024095 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024096 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24097 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24098 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24099 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24100#endif // WLAN_FEATURE_PACKET_FILTERING
24101 case WDI_HAL_DUMP_CMD_REQ:
24102 return WLAN_HAL_DUMP_COMMAND_REQ;
24103#ifdef WLAN_FEATURE_GTK_OFFLOAD
24104 case WDI_GTK_OFFLOAD_REQ:
24105 return WLAN_HAL_GTK_OFFLOAD_REQ;
24106 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24107 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24108#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24109
24110 case WDI_INIT_SCAN_CON_REQ:
24111 return WLAN_HAL_INIT_SCAN_CON_REQ;
24112 case WDI_SET_POWER_PARAMS_REQ:
24113 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24114 case WDI_SET_TM_LEVEL_REQ:
24115 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24116 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24117 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024118#ifdef WLAN_FEATURE_11AC
24119 case WDI_UPDATE_VHT_OP_MODE_REQ:
24120 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24121#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024122 case WDI_GET_ROAM_RSSI_REQ:
24123 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024124 case WDI_DHCP_START_IND:
24125 return WLAN_HAL_DHCP_START_IND;
24126 case WDI_DHCP_STOP_IND:
24127 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024128#ifdef FEATURE_WLAN_LPHB
24129 case WDI_LPHB_CFG_REQ:
24130 return WLAN_HAL_LPHB_CFG_REQ;
24131#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024132 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24133 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24134 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24135 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24136
Rajeev79dbe4c2013-10-05 11:03:42 +053024137#ifdef FEATURE_WLAN_BATCH_SCAN
24138 case WDI_SET_BATCH_SCAN_REQ:
24139 return WLAN_HAL_BATCHSCAN_SET_REQ;
24140 case WDI_STOP_BATCH_SCAN_IND:
24141 return WLAN_HAL_BATCHSCAN_STOP_IND;
24142 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24143 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24144#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024145 case WDI_RATE_UPDATE_IND:
24146 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024147 case WDI_START_HT40_OBSS_SCAN_IND:
24148 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24149 case WDI_STOP_HT40_OBSS_SCAN_IND:
24150 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024151 case WDI_UPDATE_CHAN_REQ:
24152 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024153 case WDI_CH_SWITCH_REQ_V1:
24154 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024155 case WDI_GET_BCN_MISS_RATE_REQ:
24156 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024157
24158#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24159 case WDI_LL_STATS_SET_REQ:
24160 return WLAN_HAL_LL_SET_STATS_REQ;
24161 case WDI_LL_STATS_GET_REQ:
24162 return WLAN_HAL_LL_GET_STATS_REQ;
24163 case WDI_LL_STATS_CLEAR_REQ:
24164 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24165#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024166#ifdef WLAN_FEATURE_EXTSCAN
24167 case WDI_EXTSCAN_START_REQ:
24168 return WLAN_HAL_EXT_SCAN_START_REQ;
24169 case WDI_EXTSCAN_STOP_REQ:
24170 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24171 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24172 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24173 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24174 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24175 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24176 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24177 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24178 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
24179 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
24180 return WLAN_HAL_SIG_RSSI_SET_REQ;
24181 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
24182 return WLAN_HAL_SIG_RSSI_RESET_REQ;
24183#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024184 case WDI_SPOOF_MAC_ADDR_REQ:
24185 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024186 case WDI_GET_FW_STATS_REQ:
24187 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024188 case WDI_ENCRYPT_MSG_REQ:
24189 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024190 case WDI_FW_LOGGING_INIT_REQ:
24191 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024192 case WDI_GET_FRAME_LOG_REQ:
24193 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024194 case WDI_NAN_REQUEST:
24195 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024196 case WDI_SET_RTS_CTS_HTVHT_IND:
24197 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024198 case WDI_MON_START_REQ:
24199 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24200 case WDI_MON_STOP_REQ:
24201 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024202 case WDI_FW_LOGGING_DXE_DONE_IND:
24203 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024204 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024205 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024206 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024207
Jeff Johnson295189b2012-06-20 16:38:30 -070024208}/*WDI_2_HAL_REQ_TYPE*/
24209
24210/*Convert WDI response type into HAL response type*/
24211WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24212HAL_2_WDI_RSP_TYPE
24213(
24214 tHalHostMsgType halMsg
24215)
24216{
Jeff Johnsone7245742012-09-05 17:12:55 -070024217 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024218 the chances of getting inlined*/
24219 switch( halMsg )
24220 {
24221 case WLAN_HAL_START_RSP:
24222 return WDI_START_RESP;
24223 case WLAN_HAL_STOP_RSP:
24224 return WDI_STOP_RESP;
24225 case WLAN_HAL_INIT_SCAN_RSP:
24226 return WDI_INIT_SCAN_RESP;
24227 case WLAN_HAL_START_SCAN_RSP:
24228 return WDI_START_SCAN_RESP;
24229 case WLAN_HAL_END_SCAN_RSP:
24230 return WDI_END_SCAN_RESP;
24231 case WLAN_HAL_FINISH_SCAN_RSP:
24232 return WDI_FINISH_SCAN_RESP;
24233 case WLAN_HAL_CONFIG_STA_RSP:
24234 return WDI_CONFIG_STA_RESP;
24235 case WLAN_HAL_DELETE_STA_RSP:
24236 return WDI_DEL_STA_RESP;
24237 case WLAN_HAL_CONFIG_BSS_RSP:
24238 return WDI_CONFIG_BSS_RESP;
24239 case WLAN_HAL_DELETE_BSS_RSP:
24240 return WDI_DEL_BSS_RESP;
24241 case WLAN_HAL_JOIN_RSP:
24242 return WDI_JOIN_RESP;
24243 case WLAN_HAL_POST_ASSOC_RSP:
24244 return WDI_POST_ASSOC_RESP;
24245 case WLAN_HAL_SET_BSSKEY_RSP:
24246 return WDI_SET_BSS_KEY_RESP;
24247 case WLAN_HAL_SET_STAKEY_RSP:
24248 return WDI_SET_STA_KEY_RESP;
24249 case WLAN_HAL_RMV_BSSKEY_RSP:
24250 return WDI_RMV_BSS_KEY_RESP;
24251 case WLAN_HAL_RMV_STAKEY_RSP:
24252 return WDI_RMV_STA_KEY_RESP;
24253 case WLAN_HAL_SET_BCASTKEY_RSP:
24254 return WDI_SET_STA_BCAST_KEY_RESP;
24255 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24256 // return WDI_RMV_STA_BCAST_KEY_RESP;
24257 case WLAN_HAL_ADD_TS_RSP:
24258 return WDI_ADD_TS_RESP;
24259 case WLAN_HAL_DEL_TS_RSP:
24260 return WDI_DEL_TS_RESP;
24261 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24262 return WDI_UPD_EDCA_PRMS_RESP;
24263 case WLAN_HAL_ADD_BA_RSP:
24264 return WDI_ADD_BA_RESP;
24265 case WLAN_HAL_DEL_BA_RSP:
24266 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024267#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024268 case WLAN_HAL_TSM_STATS_RSP:
24269 return WDI_TSM_STATS_RESP;
24270#endif
24271 case WLAN_HAL_CH_SWITCH_RSP:
24272 return WDI_CH_SWITCH_RESP;
24273 case WLAN_HAL_SET_LINK_ST_RSP:
24274 return WDI_SET_LINK_ST_RESP;
24275 case WLAN_HAL_GET_STATS_RSP:
24276 return WDI_GET_STATS_RESP;
24277 case WLAN_HAL_UPDATE_CFG_RSP:
24278 return WDI_UPDATE_CFG_RESP;
24279 case WLAN_HAL_ADD_BA_SESSION_RSP:
24280 return WDI_ADD_BA_SESSION_RESP;
24281 case WLAN_HAL_TRIGGER_BA_RSP:
24282 return WDI_TRIGGER_BA_RESP;
24283 case WLAN_HAL_UPDATE_BEACON_RSP:
24284 return WDI_UPD_BCON_PRMS_RESP;
24285 case WLAN_HAL_SEND_BEACON_RSP:
24286 return WDI_SND_BCON_RESP;
24287 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24288 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24289 /*Indications*/
24290 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24291 return WDI_HAL_RSSI_NOTIFICATION_IND;
24292 case WLAN_HAL_MISSED_BEACON_IND:
24293 return WDI_HAL_MISSED_BEACON_IND;
24294 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24295 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24296 case WLAN_HAL_MIC_FAILURE_IND:
24297 return WDI_HAL_MIC_FAILURE_IND;
24298 case WLAN_HAL_FATAL_ERROR_IND:
24299 return WDI_HAL_FATAL_ERROR_IND;
24300 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24301 return WDI_HAL_DEL_STA_IND;
24302 case WLAN_HAL_COEX_IND:
24303 return WDI_HAL_COEX_IND;
24304 case WLAN_HAL_OTA_TX_COMPL_IND:
24305 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024306 case WLAN_HAL_P2P_NOA_ATTR_IND:
24307 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024308 case WLAN_HAL_P2P_NOA_START_IND:
24309 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024310 case WLAN_HAL_DEL_BA_IND:
24311 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024312 case WLAN_HAL_TX_PER_HIT_IND:
24313 return WDI_HAL_TX_PER_HIT_IND;
24314 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24315 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024316 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24317 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024318 case WLAN_HAL_SET_TX_POWER_RSP:
24319 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024320 case WLAN_HAL_SET_P2P_GONOA_RSP:
24321 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024322#ifdef FEATURE_WLAN_TDLS
24323 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24324 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024325 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24326 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024327 case WLAN_HAL_TDLS_IND:
24328 return WDI_HAL_TDLS_IND;
24329#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024330 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024331 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024332 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024333 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024334 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024335 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024336 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024337 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024338 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024339 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024340 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024341 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024342 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024343 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024344 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024345 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024346 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024347 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024348 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24349 return WDI_SET_BEACON_FILTER_RESP;
24350 case WLAN_HAL_REM_BCN_FILTER_RSP:
24351 return WDI_REM_BEACON_FILTER_RESP;
24352 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24353 return WDI_SET_RSSI_THRESHOLDS_RESP;
24354 case WLAN_HAL_HOST_OFFLOAD_RSP:
24355 return WDI_HOST_OFFLOAD_RESP;
24356 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24357 return WDI_WOWL_ADD_BC_PTRN_RESP;
24358 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24359 return WDI_WOWL_DEL_BC_PTRN_RESP;
24360 case WLAN_HAL_ENTER_WOWL_RSP:
24361 return WDI_WOWL_ENTER_RESP;
24362 case WLAN_HAL_EXIT_WOWL_RSP:
24363 return WDI_WOWL_EXIT_RESP;
24364 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24365 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24366 case WLAN_HAL_DOWNLOAD_NV_RSP:
24367 return WDI_NV_DOWNLOAD_RESP;
24368 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24369 return WDI_FLUSH_AC_RESP;
24370 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24371 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024372 case WLAN_HAL_PROCESS_PTT_RSP:
24373 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024374 case WLAN_HAL_ADD_STA_SELF_RSP:
24375 return WDI_ADD_STA_SELF_RESP;
24376case WLAN_HAL_DEL_STA_SELF_RSP:
24377 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024378#ifdef FEATURE_OEM_DATA_SUPPORT
24379 case WLAN_HAL_START_OEM_DATA_RSP:
24380 return WDI_START_OEM_DATA_RESP;
24381#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024382 case WLAN_HAL_HOST_RESUME_RSP:
24383 return WDI_HOST_RESUME_RESP;
24384 case WLAN_HAL_KEEP_ALIVE_RSP:
24385 return WDI_KEEP_ALIVE_RESP;
24386#ifdef FEATURE_WLAN_SCAN_PNO
24387 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24388 return WDI_SET_PREF_NETWORK_RESP;
24389 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024390 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024391 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24392 return WDI_UPDATE_SCAN_PARAMS_RESP;
24393 case WLAN_HAL_PREF_NETW_FOUND_IND:
24394 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24395#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024396#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024397 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24398 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024399#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024400 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24401 return WDI_SET_TX_PER_TRACKING_RESP;
24402#ifdef WLAN_FEATURE_PACKET_FILTERING
24403 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24404 return WDI_8023_MULTICAST_LIST_RESP;
24405 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24406 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24407 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24408 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24409 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24410 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24411#endif // WLAN_FEATURE_PACKET_FILTERING
24412
24413 case WLAN_HAL_DUMP_COMMAND_RSP:
24414 return WDI_HAL_DUMP_CMD_RESP;
24415 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24416 return WDI_SET_POWER_PARAMS_RESP;
24417#ifdef WLAN_FEATURE_VOWIFI_11R
24418 case WLAN_HAL_AGGR_ADD_TS_RSP:
24419 return WDI_AGGR_ADD_TS_RESP;
24420#endif
24421
24422#ifdef WLAN_FEATURE_GTK_OFFLOAD
24423 case WLAN_HAL_GTK_OFFLOAD_RSP:
24424 return WDI_GTK_OFFLOAD_RESP;
24425 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24426 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24427#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24428#ifdef WLAN_WAKEUP_EVENTS
24429 case WLAN_HAL_WAKE_REASON_IND:
24430 return WDI_HAL_WAKE_REASON_IND;
24431#endif // WLAN_WAKEUP_EVENTS
24432
24433 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24434 return WDI_SET_TM_LEVEL_RESP;
24435 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24436 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024437#ifdef WLAN_FEATURE_11AC
24438 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24439 return WDI_UPDATE_VHT_OP_MODE_RESP;
24440#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024441#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024442 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24443 return WDI_GET_ROAM_RSSI_RESP;
24444#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024445
Leo Chang9056f462013-08-01 19:21:11 -070024446#ifdef FEATURE_WLAN_LPHB
24447 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024448 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024449 case WLAN_HAL_LPHB_CFG_RSP:
24450 return WDI_LPHB_CFG_RESP;
24451#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024452
24453 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24454 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024455 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24456 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024457
Rajeev79dbe4c2013-10-05 11:03:42 +053024458#ifdef FEATURE_WLAN_BATCH_SCAN
24459 case WLAN_HAL_BATCHSCAN_SET_RSP:
24460 return WDI_SET_BATCH_SCAN_RESP;
24461 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24462 return WDI_BATCHSCAN_RESULT_IND;
24463#endif // FEATURE_WLAN_BATCH_SCAN
24464
Leo Chang0b0e45a2013-12-15 15:18:55 -080024465#ifdef FEATURE_WLAN_CH_AVOID
24466 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24467 return WDI_HAL_CH_AVOID_IND;
24468#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024469 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24470 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024471 case WLAN_HAL_PRINT_REG_INFO_IND:
24472 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024473 case WLAN_HAL_CH_SWITCH_V1_RSP:
24474 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024475 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24476 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024477#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24478 case WLAN_HAL_LL_SET_STATS_RSP:
24479 return WDI_LL_STATS_SET_RSP;
24480 case WLAN_HAL_LL_GET_STATS_RSP:
24481 return WDI_LL_STATS_GET_RSP;
24482 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24483 return WDI_LL_STATS_CLEAR_RSP;
24484 case WLAN_HAL_LL_NOTIFY_STATS:
24485 return WDI_HAL_LL_STATS_RESULTS_IND;
24486#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024487#ifdef WLAN_FEATURE_EXTSCAN
24488 case WLAN_HAL_EXT_SCAN_START_RSP:
24489 return WDI_EXTSCAN_START_RSP;
24490 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24491 return WDI_EXTSCAN_STOP_RSP;
24492 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24493 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24494 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24495 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24496 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24497 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24498 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24499 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
24500 case WLAN_HAL_SIG_RSSI_SET_RSP:
24501 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
24502 case WLAN_HAL_SIG_RSSI_RESET_RSP:
24503 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
24504 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24505 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24506 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24507 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24508 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24509 return WDI_HAL_EXTSCAN_RESULT_IND;
24510 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24511 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
24512 case WLAN_HAL_SIG_RSSI_RESULT_IND:
24513 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
24514#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024515 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24516 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024517 case WLAN_HAL_FW_STATS_RSP:
24518 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024519 case WLAN_HAL_ENCRYPT_DATA_RSP:
24520 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024521 case WLAN_HAL_FW_LOGGING_INIT_RSP:
24522 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024523 case WLAN_HAL_GET_FRAME_LOG_RSP:
24524 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024525 case WLAN_HAL_NAN_RSP:
24526 return WDI_NAN_RESPONSE;
24527 case WLAN_HAL_NAN_EVT:
24528 return WDI_HAL_NAN_EVENT;
Katya Nigamf0511f62015-05-05 16:40:57 +053024529 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
24530 return WDI_MON_START_RSP;
24531 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
24532 return WDI_MON_STOP_RSP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024533 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024534 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024535 }
24536
24537}/*HAL_2_WDI_RSP_TYPE*/
24538
24539
24540/*Convert WDI driver type into HAL driver type*/
24541WPT_STATIC WPT_INLINE tDriverType
24542WDI_2_HAL_DRV_TYPE
24543(
24544 WDI_DriverType wdiDriverType
24545)
24546{
Jeff Johnsone7245742012-09-05 17:12:55 -070024547 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024548 the chances of getting inlined*/
24549 switch( wdiDriverType )
24550 {
24551 case WDI_DRIVER_TYPE_PRODUCTION:
24552 return eDRIVER_TYPE_PRODUCTION;
24553 case WDI_DRIVER_TYPE_MFG:
24554 return eDRIVER_TYPE_MFG;
24555 case WDI_DRIVER_TYPE_DVT:
24556 return eDRIVER_TYPE_DVT;
24557 }
24558
Jeff Johnsone7245742012-09-05 17:12:55 -070024559 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024560}/*WDI_2_HAL_DRV_TYPE*/
24561
24562
24563/*Convert WDI stop reason into HAL stop reason*/
24564WPT_STATIC WPT_INLINE tHalStopType
24565WDI_2_HAL_STOP_REASON
24566(
24567 WDI_StopType wdiDriverType
24568)
24569{
Jeff Johnsone7245742012-09-05 17:12:55 -070024570 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024571 the chances of getting inlined*/
24572 switch( wdiDriverType )
24573 {
24574 case WDI_STOP_TYPE_SYS_RESET:
24575 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024576 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24577 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024578 case WDI_STOP_TYPE_RF_KILL:
24579 return HAL_STOP_TYPE_RF_KILL;
24580 }
24581
Jeff Johnsone7245742012-09-05 17:12:55 -070024582 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024583}/*WDI_2_HAL_STOP_REASON*/
24584
24585
24586/*Convert WDI scan mode type into HAL scan mode type*/
24587WPT_STATIC WPT_INLINE eHalSysMode
24588WDI_2_HAL_SCAN_MODE
24589(
24590 WDI_ScanMode wdiScanMode
24591)
24592{
Jeff Johnsone7245742012-09-05 17:12:55 -070024593 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024594 the chances of getting inlined*/
24595 switch( wdiScanMode )
24596 {
24597 case WDI_SCAN_MODE_NORMAL:
24598 return eHAL_SYS_MODE_NORMAL;
24599 case WDI_SCAN_MODE_LEARN:
24600 return eHAL_SYS_MODE_LEARN;
24601 case WDI_SCAN_MODE_SCAN:
24602 return eHAL_SYS_MODE_SCAN;
24603 case WDI_SCAN_MODE_PROMISC:
24604 return eHAL_SYS_MODE_PROMISC;
24605 case WDI_SCAN_MODE_SUSPEND_LINK:
24606 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024607 case WDI_SCAN_MODE_ROAM_SCAN:
24608 return eHAL_SYS_MODE_ROAM_SCAN;
24609 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24610 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024611 }
24612
Jeff Johnsone7245742012-09-05 17:12:55 -070024613 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024614}/*WDI_2_HAL_SCAN_MODE*/
24615
24616/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024617WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024618WDI_2_HAL_SEC_CH_OFFSET
24619(
24620 WDI_HTSecondaryChannelOffset wdiSecChOffset
24621)
24622{
Jeff Johnsone7245742012-09-05 17:12:55 -070024623 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024624 the chances of getting inlined*/
24625 switch( wdiSecChOffset )
24626 {
24627 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024628 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024629 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024630 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024631 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024632 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24633#ifdef WLAN_FEATURE_11AC
24634 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24635 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24636 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24637 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24638 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24639 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24640 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24641 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24642 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24643 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24644 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24645 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24646 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24647 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24648#endif
24649 default:
24650 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024651 }
24652
Jeff Johnsone7245742012-09-05 17:12:55 -070024653 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024654}/*WDI_2_HAL_SEC_CH_OFFSET*/
24655
24656/*Convert WDI BSS type into HAL BSS type*/
24657WPT_STATIC WPT_INLINE tSirBssType
24658WDI_2_HAL_BSS_TYPE
24659(
24660 WDI_BssType wdiBSSType
24661)
24662{
Jeff Johnsone7245742012-09-05 17:12:55 -070024663 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024664 the chances of getting inlined*/
24665 switch( wdiBSSType )
24666 {
24667 case WDI_INFRASTRUCTURE_MODE:
24668 return eSIR_INFRASTRUCTURE_MODE;
24669 case WDI_INFRA_AP_MODE:
24670 return eSIR_INFRA_AP_MODE;
24671 case WDI_IBSS_MODE:
24672 return eSIR_IBSS_MODE;
24673 case WDI_BTAMP_STA_MODE:
24674 return eSIR_BTAMP_STA_MODE;
24675 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024676 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024677 case WDI_BSS_AUTO_MODE:
24678 return eSIR_AUTO_MODE;
24679 }
24680
Jeff Johnsone7245742012-09-05 17:12:55 -070024681 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024682}/*WDI_2_HAL_BSS_TYPE*/
24683
24684/*Convert WDI NW type into HAL NW type*/
24685WPT_STATIC WPT_INLINE tSirNwType
24686WDI_2_HAL_NW_TYPE
24687(
24688 WDI_NwType wdiNWType
24689)
24690{
Jeff Johnsone7245742012-09-05 17:12:55 -070024691 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024692 the chances of getting inlined*/
24693 switch( wdiNWType )
24694 {
24695 case WDI_11A_NW_TYPE:
24696 return eSIR_11A_NW_TYPE;
24697 case WDI_11B_NW_TYPE:
24698 return eSIR_11B_NW_TYPE;
24699 case WDI_11G_NW_TYPE:
24700 return eSIR_11G_NW_TYPE;
24701 case WDI_11N_NW_TYPE:
24702 return eSIR_11N_NW_TYPE;
24703 }
24704
Jeff Johnsone7245742012-09-05 17:12:55 -070024705 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024706}/*WDI_2_HAL_NW_TYPE*/
24707
24708/*Convert WDI chanel bonding type into HAL cb type*/
24709WPT_STATIC WPT_INLINE ePhyChanBondState
24710WDI_2_HAL_CB_STATE
24711(
24712 WDI_PhyChanBondState wdiCbState
24713)
24714{
Jeff Johnsone7245742012-09-05 17:12:55 -070024715 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024716 the chances of getting inlined*/
24717 switch ( wdiCbState )
24718 {
24719 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24720 return PHY_SINGLE_CHANNEL_CENTERED;
24721 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24722 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24723 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24724 return PHY_DOUBLE_CHANNEL_CENTERED;
24725 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24726 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024727#ifdef WLAN_FEATURE_11AC
24728 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24729 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24730 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24731 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24732 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24733 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24734 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24735 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24736 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24737 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24738 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24739 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24740 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24741 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24742#endif
24743 case WDI_MAX_CB_STATE:
24744 default:
24745 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024746 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024747
Jeff Johnson295189b2012-06-20 16:38:30 -070024748 return PHY_CHANNEL_BONDING_STATE_MAX;
24749}/*WDI_2_HAL_CB_STATE*/
24750
24751/*Convert WDI chanel bonding type into HAL cb type*/
24752WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24753WDI_2_HAL_HT_OPER_MODE
24754(
24755 WDI_HTOperatingMode wdiHTOperMode
24756)
24757{
Jeff Johnsone7245742012-09-05 17:12:55 -070024758 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024759 the chances of getting inlined*/
24760 switch ( wdiHTOperMode )
24761 {
24762 case WDI_HT_OP_MODE_PURE:
24763 return eSIR_HT_OP_MODE_PURE;
24764 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24765 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24766 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24767 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24768 case WDI_HT_OP_MODE_MIXED:
24769 return eSIR_HT_OP_MODE_MIXED;
24770 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024771
Jeff Johnson295189b2012-06-20 16:38:30 -070024772 return eSIR_HT_OP_MODE_MAX;
24773}/*WDI_2_HAL_HT_OPER_MODE*/
24774
24775/*Convert WDI mimo PS type into HAL mimo PS type*/
24776WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24777WDI_2_HAL_MIMO_PS
24778(
24779 WDI_HTMIMOPowerSaveState wdiHTOperMode
24780)
24781{
Jeff Johnsone7245742012-09-05 17:12:55 -070024782 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024783 the chances of getting inlined*/
24784 switch ( wdiHTOperMode )
24785 {
24786 case WDI_HT_MIMO_PS_STATIC:
24787 return eSIR_HT_MIMO_PS_STATIC;
24788 case WDI_HT_MIMO_PS_DYNAMIC:
24789 return eSIR_HT_MIMO_PS_DYNAMIC;
24790 case WDI_HT_MIMO_PS_NA:
24791 return eSIR_HT_MIMO_PS_NA;
24792 case WDI_HT_MIMO_PS_NO_LIMIT:
24793 return eSIR_HT_MIMO_PS_NO_LIMIT;
24794 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024795
Jeff Johnson295189b2012-06-20 16:38:30 -070024796 return eSIR_HT_MIMO_PS_MAX;
24797}/*WDI_2_HAL_MIMO_PS*/
24798
24799/*Convert WDI ENC type into HAL ENC type*/
24800WPT_STATIC WPT_INLINE tAniEdType
24801WDI_2_HAL_ENC_TYPE
24802(
24803 WDI_EncryptType wdiEncType
24804)
24805{
Jeff Johnsone7245742012-09-05 17:12:55 -070024806 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024807 the chances of getting inlined*/
24808 switch ( wdiEncType )
24809 {
24810 case WDI_ENCR_NONE:
24811 return eSIR_ED_NONE;
24812
24813 case WDI_ENCR_WEP40:
24814 return eSIR_ED_WEP40;
24815
24816 case WDI_ENCR_WEP104:
24817 return eSIR_ED_WEP104;
24818
24819 case WDI_ENCR_TKIP:
24820 return eSIR_ED_TKIP;
24821
24822 case WDI_ENCR_CCMP:
24823 return eSIR_ED_CCMP;
24824
24825 case WDI_ENCR_AES_128_CMAC:
24826 return eSIR_ED_AES_128_CMAC;
24827#if defined(FEATURE_WLAN_WAPI)
24828 case WDI_ENCR_WPI:
24829 return eSIR_ED_WPI;
24830#endif
24831 default:
24832 return eSIR_ED_NOT_IMPLEMENTED;
24833 }
24834
24835}/*WDI_2_HAL_ENC_TYPE*/
24836
24837/*Convert WDI WEP type into HAL WEP type*/
24838WPT_STATIC WPT_INLINE tAniWepType
24839WDI_2_HAL_WEP_TYPE
24840(
24841 WDI_WepType wdiWEPType
24842)
24843{
Jeff Johnsone7245742012-09-05 17:12:55 -070024844 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024845 the chances of getting inlined*/
24846 switch ( wdiWEPType )
24847 {
24848 case WDI_WEP_STATIC:
24849 return eSIR_WEP_STATIC;
24850
24851 case WDI_WEP_DYNAMIC:
24852 return eSIR_WEP_DYNAMIC;
24853 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024854
Jeff Johnson295189b2012-06-20 16:38:30 -070024855 return eSIR_WEP_MAX;
24856}/*WDI_2_HAL_WEP_TYPE*/
24857
24858WPT_STATIC WPT_INLINE tSirLinkState
24859WDI_2_HAL_LINK_STATE
24860(
24861 WDI_LinkStateType wdiLinkState
24862)
24863{
Jeff Johnsone7245742012-09-05 17:12:55 -070024864 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024865 the chances of getting inlined*/
24866 switch ( wdiLinkState )
24867 {
24868 case WDI_LINK_IDLE_STATE:
24869 return eSIR_LINK_IDLE_STATE;
24870
24871 case WDI_LINK_PREASSOC_STATE:
24872 return eSIR_LINK_PREASSOC_STATE;
24873
24874 case WDI_LINK_POSTASSOC_STATE:
24875 return eSIR_LINK_POSTASSOC_STATE;
24876
24877 case WDI_LINK_AP_STATE:
24878 return eSIR_LINK_AP_STATE;
24879
24880 case WDI_LINK_IBSS_STATE:
24881 return eSIR_LINK_IBSS_STATE;
24882
24883 case WDI_LINK_BTAMP_PREASSOC_STATE:
24884 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24885
24886 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24887 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24888
24889 case WDI_LINK_BTAMP_AP_STATE:
24890 return eSIR_LINK_BTAMP_AP_STATE;
24891
24892 case WDI_LINK_BTAMP_STA_STATE:
24893 return eSIR_LINK_BTAMP_STA_STATE;
24894
24895 case WDI_LINK_LEARN_STATE:
24896 return eSIR_LINK_LEARN_STATE;
24897
24898 case WDI_LINK_SCAN_STATE:
24899 return eSIR_LINK_SCAN_STATE;
24900
24901 case WDI_LINK_FINISH_SCAN_STATE:
24902 return eSIR_LINK_FINISH_SCAN_STATE;
24903
24904 case WDI_LINK_INIT_CAL_STATE:
24905 return eSIR_LINK_INIT_CAL_STATE;
24906
24907 case WDI_LINK_FINISH_CAL_STATE:
24908 return eSIR_LINK_FINISH_CAL_STATE;
24909
Jeff Johnson295189b2012-06-20 16:38:30 -070024910 case WDI_LINK_LISTEN_STATE:
24911 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024912
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024913 case WDI_LINK_SEND_ACTION_STATE:
24914 return eSIR_LINK_SEND_ACTION_STATE;
24915
Jeff Johnson295189b2012-06-20 16:38:30 -070024916 default:
24917 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024918 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024919}
24920
Jeff Johnsone7245742012-09-05 17:12:55 -070024921/*Translate a STA Context from WDI into HAL*/
24922WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024923void
24924WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024925(
Jeff Johnson295189b2012-06-20 16:38:30 -070024926 tConfigStaParams* phalConfigSta,
24927 WDI_ConfigStaReqInfoType* pwdiConfigSta
24928)
24929{
24930 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024931#ifdef WLAN_FEATURE_11AC
24932 /* Get the Version 1 Handler */
24933 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24934 if (WDI_getFwWlanFeatCaps(DOT11AC))
24935 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024936 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024937 }
24938#endif
24939 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024940 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053024941
Jeff Johnsone7245742012-09-05 17:12:55 -070024942 wpalMemoryCopy(phalConfigSta->bssId,
24943 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24944
24945 wpalMemoryCopy(phalConfigSta->staMac,
24946 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024947
24948 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24949 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24950 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24951 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24952 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24953 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24954 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24955 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24956 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24957 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24958 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24959 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24960 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24961 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24962 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24963 phalConfigSta->action = pwdiConfigSta->wdiAction;
24964 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24965 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24966 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24967 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24968 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24969 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24970 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053024971
Jeff Johnson295189b2012-06-20 16:38:30 -070024972 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24973
Jeff Johnsone7245742012-09-05 17:12:55 -070024974 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024975 pwdiConfigSta->wdiSupportedRates.opRateMode;
24976 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24977 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024978 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024979 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24980 }
24981 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24982 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024983 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024984 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24985 }
24986 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24987 {
24988 phalConfigSta->supportedRates.aniLegacyRates[i] =
24989 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24990 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024991 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024992 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24993 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24994 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024995 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024996 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24997 }
24998 phalConfigSta->supportedRates.rxHighestDataRate =
24999 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25000
Jeff Johnsone7245742012-09-05 17:12:55 -070025001#ifdef WLAN_FEATURE_11AC
25002 if(phalConfigSta_V1 != NULL)
25003 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025004 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25005 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25006 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25007 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025008 }
25009#endif
25010
Jeff Johnson295189b2012-06-20 16:38:30 -070025011 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025012
Jeff Johnsone7245742012-09-05 17:12:55 -070025013#ifdef WLAN_FEATURE_11AC
25014 if(phalConfigSta_V1 != NULL)
25015 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025016 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25017 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025018 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025019 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025020 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25021 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25022
Jeff Johnsone7245742012-09-05 17:12:55 -070025023 }
25024#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025025}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025026
25027/*Translate a Rate set info from WDI into HAL*/
25028WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025029WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025030(
Jeff Johnson295189b2012-06-20 16:38:30 -070025031 tSirMacRateSet* pHalRateSet,
25032 WDI_RateSet* pwdiRateSet
25033)
25034{
Jeff Johnsone7245742012-09-05 17:12:55 -070025035 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25037
25038 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25039 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25040
25041 for ( i = 0; i < pHalRateSet->numRates; i++ )
25042 {
25043 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25044 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025045
Jeff Johnson295189b2012-06-20 16:38:30 -070025046}/*WDI_CopyWDIRateSetToHALRateSet*/
25047
25048
25049/*Translate an EDCA Parameter Record from WDI into HAL*/
25050WPT_STATIC WPT_INLINE void
25051WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025052(
Jeff Johnson295189b2012-06-20 16:38:30 -070025053 tSirMacEdcaParamRecord* phalEdcaParam,
25054 WDI_EdcaParamRecord* pWDIEdcaParam
25055)
25056{
Jeff Johnsone7245742012-09-05 17:12:55 -070025057 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025058 the chances of getting inlined*/
25059
25060 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25061 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25062 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25063 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25064
25065 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25066 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25067 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25068}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25069
25070
25071/*Copy a management frame header from WDI fmt into HAL fmt*/
25072WPT_STATIC WPT_INLINE void
25073WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25074(
25075 tSirMacMgmtHdr* pmacMgmtHdr,
25076 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25077)
25078{
25079 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25080 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25081 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25082 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25083 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25084 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25085 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25086 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25087 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25088 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25089 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25090
25091 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25092 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25093
Jeff Johnsone7245742012-09-05 17:12:55 -070025094 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025095 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025096 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025097 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025098 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025099 pwdiMacMgmtHdr->bssId, 6);
25100
25101 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25102 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25103 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25104
25105}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25106
25107
25108/*Copy config bss parameters from WDI fmt into HAL fmt*/
25109WPT_STATIC WPT_INLINE void
25110WDI_CopyWDIConfigBSSToHALConfigBSS
25111(
25112 tConfigBssParams* phalConfigBSS,
25113 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25114)
25115{
25116
25117 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025118#ifdef WLAN_FEATURE_11AC
25119 /* Get the Version 1 Handler */
25120 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25121 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025122 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025123#endif
25124
Jeff Johnson295189b2012-06-20 16:38:30 -070025125 wpalMemoryCopy( phalConfigBSS->bssId,
25126 pwdiConfigBSS->macBSSID,
25127 WDI_MAC_ADDR_LEN);
25128
25129#ifdef HAL_SELF_STA_PER_BSS
25130 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25131 pwdiConfigBSS->macSelfAddr,
25132 WDI_MAC_ADDR_LEN);
25133#endif
25134
25135 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25136
25137 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25138 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25139
Jeff Johnsone7245742012-09-05 17:12:55 -070025140 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025141 pwdiConfigBSS->ucShortSlotTimeSupported;
25142 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25143 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25144 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25145 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25146 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025147 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025148 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25149 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25150 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25151 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25152 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25153 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25154 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25155 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25156 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25157 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25158 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25159
Jeff Johnsone7245742012-09-05 17:12:55 -070025160 phalConfigBSS->htOperMode =
25161 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025162
25163 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25164 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25165 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25166 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25167
25168#ifdef WLAN_FEATURE_VOWIFI
25169 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25170#endif
25171
25172 /*! Used 32 as magic number because that is how the ssid is declared inside the
25173 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025174 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025175 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25176 pwdiConfigBSS->wdiSSID.ucLength : 32;
25177 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025178 pwdiConfigBSS->wdiSSID.sSSID,
25179 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025180
25181 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25182 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025183
Jeff Johnson295189b2012-06-20 16:38:30 -070025184 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25185 &pwdiConfigBSS->wdiRateSet);
25186
25187 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25188
25189 if(phalConfigBSS->edcaParamsValid)
25190 {
25191 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25192 &pwdiConfigBSS->wdiBEEDCAParams);
25193 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25194 &pwdiConfigBSS->wdiBKEDCAParams);
25195 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25196 &pwdiConfigBSS->wdiVIEDCAParams);
25197 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25198 &pwdiConfigBSS->wdiVOEDCAParams);
25199 }
25200
Jeff Johnsone7245742012-09-05 17:12:55 -070025201 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025202
25203 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25204
25205#ifdef WLAN_FEATURE_VOWIFI_11R
25206
Jeff Johnsone7245742012-09-05 17:12:55 -070025207 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025208 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025209
Jeff Johnson295189b2012-06-20 16:38:30 -070025210 if( phalConfigBSS->extSetStaKeyParamValid )
25211 {
25212 /*-----------------------------------------------------------------------
25213 Copy the STA Key parameters into the HAL message
25214 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025215 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025216 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25217
Jeff Johnsone7245742012-09-05 17:12:55 -070025218 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025219 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25220
25221 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25222
25223 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25224
25225 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25226
Jeff Johnson295189b2012-06-20 16:38:30 -070025227 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25228 keyIndex++)
25229 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025230 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025231 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25232 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25233 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25234 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25235 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25236 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025237 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025238 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025239 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025240 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025241 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025242 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25243 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025244 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025245 WDI_MAX_KEY_LENGTH);
25246 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025247 }
25248 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25249 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025250 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025251 sizeof(phalConfigBSS->extSetStaKeyParam) );
25252 }
25253
25254#endif /*WLAN_FEATURE_VOWIFI_11R*/
25255
Jeff Johnsone7245742012-09-05 17:12:55 -070025256#ifdef WLAN_FEATURE_11AC
25257 if(phalConfigBSS_V1 != NULL)
25258 {
25259 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25260 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25261 }
25262#endif
25263
Jeff Johnson295189b2012-06-20 16:38:30 -070025264}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25265
25266
Jeff Johnsone7245742012-09-05 17:12:55 -070025267/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025268 pointed to by user data */
25269WPT_STATIC WPT_INLINE void
25270WDI_ExtractRequestCBFromEvent
25271(
25272 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025273 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025274 void** ppUserData
25275)
25276{
25277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25278 switch ( pEvent->wdiRequest )
25279 {
25280 case WDI_START_REQ:
25281 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25282 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25283 break;
25284 case WDI_STOP_REQ:
25285 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25286 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25287 break;
25288 case WDI_INIT_SCAN_REQ:
25289 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25290 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25291 break;
25292 case WDI_START_SCAN_REQ:
25293 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25294 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25295 break;
25296 case WDI_END_SCAN_REQ:
25297 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25298 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25299 break;
25300 case WDI_FINISH_SCAN_REQ:
25301 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25302 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25303 break;
25304 case WDI_JOIN_REQ:
25305 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25306 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25307 break;
25308 case WDI_CONFIG_BSS_REQ:
25309 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25310 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25311 break;
25312 case WDI_DEL_BSS_REQ:
25313 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25314 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25315 break;
25316 case WDI_POST_ASSOC_REQ:
25317 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25318 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25319 break;
25320 case WDI_DEL_STA_REQ:
25321 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25322 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25323 break;
25324 case WDI_DEL_STA_SELF_REQ:
25325 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25326 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25327 break;
25328
25329 case WDI_SET_BSS_KEY_REQ:
25330 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25331 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25332 break;
25333 case WDI_RMV_BSS_KEY_REQ:
25334 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25335 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25336 break;
25337 case WDI_SET_STA_KEY_REQ:
25338 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25339 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25340 break;
25341 case WDI_RMV_STA_KEY_REQ:
25342 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25343 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25344 break;
25345 case WDI_ADD_TS_REQ:
25346 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25347 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25348 break;
25349 case WDI_DEL_TS_REQ:
25350 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25351 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25352 break;
25353 case WDI_UPD_EDCA_PRMS_REQ:
25354 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25355 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25356 break;
25357 case WDI_ADD_BA_SESSION_REQ:
25358 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25359 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25360 break;
25361 case WDI_DEL_BA_REQ:
25362 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25363 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25364 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025365#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025366 case WDI_TSM_STATS_REQ:
25367 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25368 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25369 break;
25370#endif
25371 case WDI_CH_SWITCH_REQ:
25372 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25373 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25374 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025375 case WDI_CH_SWITCH_REQ_V1:
25376 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25377 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25378 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025379 case WDI_CONFIG_STA_REQ:
25380 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25381 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25382 break;
25383 case WDI_SET_LINK_ST_REQ:
25384 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25385 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25386 break;
25387 case WDI_GET_STATS_REQ:
25388 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25389 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25390 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025391#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025392 case WDI_GET_ROAM_RSSI_REQ:
25393 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25394 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25395 break;
25396#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025397 case WDI_UPDATE_CFG_REQ:
25398 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25399 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25400 break;
25401 case WDI_ADD_BA_REQ:
25402 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25403 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25404 break;
25405 case WDI_TRIGGER_BA_REQ:
25406 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25407 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25408 break;
25409 case WDI_UPD_BCON_PRMS_REQ:
25410 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25411 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25412 break;
25413 case WDI_SND_BCON_REQ:
25414 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25415 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25416 break;
25417 case WDI_ENTER_BMPS_REQ:
25418 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25419 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25420 break;
25421 case WDI_EXIT_BMPS_REQ:
25422 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25423 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25424 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025425 case WDI_ENTER_IMPS_REQ:
25426 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25427 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25428 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025429 case WDI_ENTER_UAPSD_REQ:
25430 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25431 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25432 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025433 case WDI_EXIT_UAPSD_REQ:
25434 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25435 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25436 break;
25437 case WDI_SET_UAPSD_PARAM_REQ:
25438 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25439 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25440 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025441 case WDI_UPDATE_UAPSD_PARAM_REQ:
25442 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25443 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25444 break;
25445 case WDI_CONFIGURE_RXP_FILTER_REQ:
25446 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25447 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25448 break;
25449 case WDI_SET_BEACON_FILTER_REQ:
25450 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25451 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25452 break;
25453 case WDI_REM_BEACON_FILTER_REQ:
25454 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25455 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025456 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025457 case WDI_SET_RSSI_THRESHOLDS_REQ:
25458 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25459 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25460 break;
25461 case WDI_HOST_OFFLOAD_REQ:
25462 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25463 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25464 break;
25465 case WDI_WOWL_ADD_BC_PTRN_REQ:
25466 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25467 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25468 break;
25469 case WDI_WOWL_DEL_BC_PTRN_REQ:
25470 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25471 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25472 break;
25473 case WDI_WOWL_ENTER_REQ:
25474 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25475 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25476 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025477 case WDI_WOWL_EXIT_REQ:
25478 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25479 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25480 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025481 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25482 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25483 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25484 break;
25485 case WDI_FLUSH_AC_REQ:
25486 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25487 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25488 break;
25489 case WDI_BTAMP_EVENT_REQ:
25490 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25491 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25492 break;
25493 case WDI_KEEP_ALIVE_REQ:
25494 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25495 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25496 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025497#if defined FEATURE_WLAN_SCAN_PNO
25498 case WDI_SET_PREF_NETWORK_REQ:
25499 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25500 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25501 break;
25502 case WDI_SET_RSSI_FILTER_REQ:
25503 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25504 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25505 break;
25506 case WDI_UPDATE_SCAN_PARAMS_REQ:
25507 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25508 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25509 break;
25510#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025511 case WDI_SET_TX_PER_TRACKING_REQ:
25512 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25513 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025514 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025515#if defined WLAN_FEATURE_PACKET_FILTERING
25516 case WDI_8023_MULTICAST_LIST_REQ:
25517 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25518 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25519 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025520 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25521 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25522 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25523 break;
25524 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25525 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25526 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25527 break;
25528 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25529 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25530 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25531 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025532#endif
25533 case WDI_SET_POWER_PARAMS_REQ:
25534 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25535 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25536 break;
25537#if defined WLAN_FEATURE_GTK_OFFLOAD
25538 case WDI_GTK_OFFLOAD_REQ:
25539 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25540 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25541 break;
25542 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25543 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25544 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25545 break;
25546#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025547
Jeff Johnson295189b2012-06-20 16:38:30 -070025548 default:
25549 *ppfnReqCB = NULL;
25550 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025551 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025552 }
25553}/*WDI_ExtractRequestCBFromEvent*/
25554
25555
25556/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025557 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025558 frame xtl is enabled for a particular STA.
25559
25560 WDI_PostAssocReq must have been called.
25561
Jeff Johnsone7245742012-09-05 17:12:55 -070025562 @param uSTAIdx: STA index
25563
Jeff Johnson295189b2012-06-20 16:38:30 -070025564 @see WDI_PostAssocReq
25565 @return Result of the function call
25566*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025567wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025568WDI_IsHwFrameTxTranslationCapable
25569(
25570 wpt_uint8 uSTAIdx
25571)
25572{
Jeff Johnsone7245742012-09-05 17:12:55 -070025573 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025574 uma value*/
25575 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025576 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025577 ------------------------------------------------------------------------*/
25578 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25579 {
25580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25581 "WDI API call before module is initialized - Fail request");
25582
Jeff Johnsone7245742012-09-05 17:12:55 -070025583 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025584 }
25585
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025586#ifdef WLAN_SOFTAP_VSTA_FEATURE
25587 if (IS_VSTA_IDX(uSTAIdx))
25588 {
25589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25590 "STA %d is a Virtual STA, "
25591 "HW frame translation disabled", uSTAIdx);
25592 return eWLAN_PAL_FALSE;
25593 }
25594#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025595
Jeff Johnson295189b2012-06-20 16:38:30 -070025596 return gWDICb.bFrameTransEnabled;
25597}/*WDI_IsHwFrameTxTranslationCapable*/
25598
Katya Nigam6201c3e2014-05-27 17:51:42 +053025599
25600/**
25601 @brief WDI_IsSelfSTA - check if staid is self sta index
25602
25603
25604 @param pWDICtx: pointer to the WLAN DAL context
25605 ucSTAIdx: station index
25606
25607 @return Result of the function call
25608*/
25609wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25610{
25611 wpt_uint8 ucSTAType;
25612
25613 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25614 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25615 {
25616 if( ucSTAType == WDI_STA_ENTRY_SELF )
25617 return eWLAN_PAL_TRUE;
25618 }
25619
25620 return eWLAN_PAL_FALSE;
25621}
25622
25623
25624
Jeff Johnson295189b2012-06-20 16:38:30 -070025625#ifdef FEATURE_WLAN_SCAN_PNO
25626/**
25627 @brief WDI_SetPreferredNetworkList
25628
Jeff Johnsone7245742012-09-05 17:12:55 -070025629 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025630 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025631
Jeff Johnson295189b2012-06-20 16:38:30 -070025632 wdiPNOScanCb: callback for passing back the response
25633 of the Set PNO operation received from the
25634 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025635
Jeff Johnson295189b2012-06-20 16:38:30 -070025636 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025637 callback
25638
Jeff Johnson295189b2012-06-20 16:38:30 -070025639 @return Result of the function call
25640*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025641WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025642WDI_SetPreferredNetworkReq
25643(
25644 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25645 WDI_PNOScanCb wdiPNOScanCb,
25646 void* pUserData
25647)
25648{
25649 WDI_EventInfoType wdiEventData = {{0}};
25650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25651
25652 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025653 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025654 ------------------------------------------------------------------------*/
25655 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25656 {
25657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25658 "WDI API call before module is initialized - Fail request");
25659
Jeff Johnsone7245742012-09-05 17:12:55 -070025660 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025661 }
25662
25663 /*------------------------------------------------------------------------
25664 Fill in Event data and post to the Main FSM
25665 ------------------------------------------------------------------------*/
25666 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025667 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025668 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025669 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025670 wdiEventData.pUserData = pUserData;
25671
25672 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25673}
25674
25675
25676/**
25677 @brief WDI_SetRssiFilterReq
25678
Jeff Johnsone7245742012-09-05 17:12:55 -070025679 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025680 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025681
Jeff Johnson295189b2012-06-20 16:38:30 -070025682 wdiRssiFilterCb: callback for passing back the response
25683 of the Set RSSI Filter operation received from the
25684 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025685
Jeff Johnson295189b2012-06-20 16:38:30 -070025686 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025687 callback
25688
Jeff Johnson295189b2012-06-20 16:38:30 -070025689 @return Result of the function call
25690*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025691WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025692WDI_SetRssiFilterReq
25693(
25694 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25695 WDI_RssiFilterCb wdiRssiFilterCb,
25696 void* pUserData
25697)
25698{
25699 WDI_EventInfoType wdiEventData = {{0}};
25700 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25701
25702 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025703 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025704 ------------------------------------------------------------------------*/
25705 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25706 {
25707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25708 "WDI API call before module is initialized - Fail request");
25709
Jeff Johnsone7245742012-09-05 17:12:55 -070025710 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025711 }
25712
25713 /*------------------------------------------------------------------------
25714 Fill in Event data and post to the Main FSM
25715 ------------------------------------------------------------------------*/
25716 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025717 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025718 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025719 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025720 wdiEventData.pUserData = pUserData;
25721
25722 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25723}/*WDI_SetRssiFilterReq*/
25724
25725/**
25726 @brief WDI_UpdateScanParamsReq
25727
Jeff Johnsone7245742012-09-05 17:12:55 -070025728 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025729 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025730
Jeff Johnson295189b2012-06-20 16:38:30 -070025731 wdiUpdateScanParamsCb: callback for passing back the response
25732 of the Set PNO operation received from the
25733 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025734
Jeff Johnson295189b2012-06-20 16:38:30 -070025735 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025736 callback
25737
Jeff Johnson295189b2012-06-20 16:38:30 -070025738 @return Result of the function call
25739*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025740WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025741WDI_UpdateScanParamsReq
25742(
25743 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25744 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25745 void* pUserData
25746)
25747{
25748 WDI_EventInfoType wdiEventData = {{0}};
25749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25750
25751 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025752 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025753 ------------------------------------------------------------------------*/
25754 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25755 {
25756 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25757 "WDI API call before module is initialized - Fail request");
25758
Jeff Johnsone7245742012-09-05 17:12:55 -070025759 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025760 }
25761
25762 /*------------------------------------------------------------------------
25763 Fill in Event data and post to the Main FSM
25764 ------------------------------------------------------------------------*/
25765 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025766 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025767 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025768 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025769 wdiEventData.pUserData = pUserData;
25770
25771 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25772}
25773
25774/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025775 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025776 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025777
25778 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025779 pwdiPNOScanReqParams: pointer to the info received
25780 from upper layers
25781 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025782 and its size
25783
Jeff Johnson295189b2012-06-20 16:38:30 -070025784 @return Result of the function call
25785*/
25786
25787WDI_Status
25788WDI_PackPreferredNetworkList
25789(
25790 WDI_ControlBlockType* pWDICtx,
25791 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25792 wpt_uint8** ppSendBuffer,
25793 wpt_uint16* pSize
25794)
25795{
Jeff Johnsone7245742012-09-05 17:12:55 -070025796 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025797 wpt_uint16 usDataOffset = 0;
25798 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025799 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025800 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025801 /*-----------------------------------------------------------------------
25802 Get message buffer
25803 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025804 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025805 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025806 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025807 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025808 {
25809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025810 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025811 pwdiPNOScanReqParams);
25812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025814 }
25815
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025816 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25817
Jeff Johnson295189b2012-06-20 16:38:30 -070025818 /*-------------------------------------------------------------------------
25819 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25820 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025821 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025822 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025823 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025824 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25825
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025826 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025827 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025828 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025829 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025830 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25831
25832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025833 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025834 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25835 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25836 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25837
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025838 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025839 {
25840 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025841 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025842 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25843
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025844 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025845 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025846 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025847
25848 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025849 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025850 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025851
25852 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025853 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025854 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025855
Jeff Johnsone7245742012-09-05 17:12:55 -070025856 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025857 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025858 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025859 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25860 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25861 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25862 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025863
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025864 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025865 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025866 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025867
25868 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025869 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025870 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25871
25872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025873 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025874 pPrefNetwListParams->aNetworks[i].ssId.length,
25875 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025876 }
25877
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025878 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025879 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025880 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25881 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25882 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25883
25884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025885 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025886 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025887 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25888 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25889
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025890 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025891 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025892 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025893 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025894 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025895 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25896 }
25897
25898 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025899 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025900 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25901 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25902 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025903 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025904
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025905 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025906 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025907 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025908
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025909 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025910 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25911 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25912 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025913 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025914
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025915 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025916 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025917 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025918
25919 /*Set the output values*/
25920 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025921 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025922
25923 return WDI_STATUS_SUCCESS;
25924}/*WDI_PackPreferredNetworkList*/
25925
25926/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025927 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025928 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025929
25930 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025931 pwdiPNOScanReqParams: pointer to the info received
25932 from upper layers
25933 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025934 and its size
25935
Jeff Johnson295189b2012-06-20 16:38:30 -070025936 @return Result of the function call
25937*/
25938
25939WDI_Status
25940WDI_PackPreferredNetworkListNew
25941(
25942 WDI_ControlBlockType* pWDICtx,
25943 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25944 wpt_uint8** ppSendBuffer,
25945 wpt_uint16* pSize
25946)
25947{
Jeff Johnsone7245742012-09-05 17:12:55 -070025948 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025949 wpt_uint16 usDataOffset = 0;
25950 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025951 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025952 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025953
25954 /*-----------------------------------------------------------------------
25955 Get message buffer
25956 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025957 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025958 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025959 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025960 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025961 {
25962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025963 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025964 pwdiPNOScanReqParams);
25965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025967 }
25968
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025969 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25970
Jeff Johnson295189b2012-06-20 16:38:30 -070025971 /*-------------------------------------------------------------------------
25972 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25973 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025974 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025975 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025976 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025977 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25978
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025979 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025980 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025981 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025982 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025983 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25984
25985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025986 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025987 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25988 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25989 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25990
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025991 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025992 {
25993 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025994 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025995 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25996
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025997 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025998 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025999 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026000
26001 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026002 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026003 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026004
26005 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026006 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026007 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026008
26009 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026010 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026011 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026012
Jeff Johnsone7245742012-09-05 17:12:55 -070026013 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026014 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026015 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026016 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26017
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026018 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026019 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026020 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026021
26022 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026023 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026024 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26025
26026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026027 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026028 pPrefNetwListParams->aNetworks[i].ssId.length,
26029 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026030 }
26031
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026032 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026033 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026034 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26035 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26036 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26037
26038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026039 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026040 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026041 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26042 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26043
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026044 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026045 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026046 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026047 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026048 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026049 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26050 }
26051
26052 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026053 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026054 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26055 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26056 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026057 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026058
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026059 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026060 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026061 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026062
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026063 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026064 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26065 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26066 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026067 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026068
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026069 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026070 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026071 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026072
Jeff Johnson295189b2012-06-20 16:38:30 -070026073
26074 /*Set the output values*/
26075 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026076 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026077
26078 return WDI_STATUS_SUCCESS;
26079}/*WDI_PackPreferredNetworkListNew*/
26080
26081/**
26082 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026083
26084 @param pWDICtx: pointer to the WLAN DAL context
26085 pEventData: pointer to the event information structure
26086
Jeff Johnson295189b2012-06-20 16:38:30 -070026087 @return Result of the function call
26088*/
26089WDI_Status
26090WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026091(
Jeff Johnson295189b2012-06-20 16:38:30 -070026092 WDI_ControlBlockType* pWDICtx,
26093 WDI_EventInfoType* pEventData
26094)
26095{
26096 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26097 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026098 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026099 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026100 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026101
26102 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026103 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026104 -------------------------------------------------------------------------*/
26105 if (( NULL == pEventData ) ||
26106 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26107 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26108 {
26109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026110 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026111 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026113 }
26114
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026115 /*----------------------------------------------------------------------
26116 Avoid Enable PNO during any active session or an ongoing session
26117 ----------------------------------------------------------------------*/
26118 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26119 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26120 {
26121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26122 "%s:(Active/Ongoing Session) - Fail request", __func__);
26123
26124 return WDI_STATUS_E_FAILURE;
26125 }
26126
Jeff Johnson295189b2012-06-20 16:38:30 -070026127 /*-------------------------------------------------------------------------
26128 Pack the PNO request structure based on version
26129 -------------------------------------------------------------------------*/
26130 if ( pWDICtx->wdiPNOVersion > 0 )
26131 {
26132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026133 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026134 pWDICtx->wdiPNOVersion);
26135
26136 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26137 &pSendBuffer, &usSendSize);
26138 }
26139 else
26140 {
26141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026142 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026143 pWDICtx->wdiPNOVersion);
26144
26145 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26146 &pSendBuffer, &usSendSize);
26147 }
26148
26149 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26150 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26151 {
26152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026153 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026155 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026156 }
26157
26158 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026159 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026160
26161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026162 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026163 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026164 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26165 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026166}
26167
26168/**
26169 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026170
26171 @param pWDICtx: pointer to the WLAN DAL context
26172 pEventData: pointer to the event information structure
26173
Jeff Johnson295189b2012-06-20 16:38:30 -070026174 @see
26175 @return Result of the function call
26176*/
26177WDI_Status
26178WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026179(
Jeff Johnson295189b2012-06-20 16:38:30 -070026180 WDI_ControlBlockType* pWDICtx,
26181 WDI_EventInfoType* pEventData
26182)
26183{
26184 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26185 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026186 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026187 wpt_uint16 usDataOffset = 0;
26188 wpt_uint16 usSendSize = 0;
26189 wpt_uint8 ucRssiThreshold;
26190
26191 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026192 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026193 -------------------------------------------------------------------------*/
26194 if (( NULL == pEventData ) ||
26195 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26196 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26197 {
26198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026199 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026200 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026201 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026202 }
26203
26204 /*-----------------------------------------------------------------------
26205 Get message buffer
26206 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026207 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026208 sizeof(ucRssiThreshold),
26209 &pSendBuffer, &usDataOffset, &usSendSize))||
26210 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26211 {
26212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026213 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026214 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26215 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026217 }
26218
26219 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26220
Jeff Johnsone7245742012-09-05 17:12:55 -070026221 wpalMemoryCopy( pSendBuffer+usDataOffset,
26222 &ucRssiThreshold,
26223 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026224
26225 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026226 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026227
26228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026229 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026230 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026231 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26232 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026233}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026234#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26235/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026236 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026237
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026238 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026239 by the Device Interface
26240
26241 wdiRoamOffloadScancb: callback for passing back the response
26242 of the Roam Candidate Lookup Req operation received from the
26243 device
26244
26245 pUserData: user data will be passed back with the
26246 callback
26247 @return Result of the function call
26248*/
26249WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026250WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026251(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026252 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026253 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26254 void* pUserData
26255)
26256{
26257 WDI_EventInfoType wdiEventData = {{0}};
26258 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26259
26260 /*------------------------------------------------------------------------
26261 Sanity Check
26262 ------------------------------------------------------------------------*/
26263 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26264 {
26265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26266 "WDI API call before module is initialized - Fail request");
26267
26268 return WDI_STATUS_E_NOT_ALLOWED;
26269 }
26270
26271 /*------------------------------------------------------------------------
26272 Fill in Event data and post to the Main FSM
26273 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026274 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26275 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26276 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026277 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26278 wdiEventData.pUserData = pUserData;
26279
26280 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26281}
26282
26283void
26284WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26285{
26286 switch (wdiEdType)
26287 {
26288 case WDI_ED_NONE:
26289 *EdType = eED_NONE;
26290 break;
26291 case WDI_ED_WEP40:
26292 case WDI_ED_WEP104:
26293 *EdType = eED_WEP;
26294 break;
26295 case WDI_ED_TKIP:
26296 *EdType = eED_TKIP;
26297 break;
26298 case WDI_ED_CCMP:
26299#ifdef WLAN_FEATURE_11W
26300 case WDI_ED_AES_128_CMAC:
26301#endif
26302 *EdType = eED_CCMP;
26303 break;
26304#ifdef FEATURE_WLAN_WAPI
26305 case WDI_ED_WPI:
26306 *EdType = eED_WPI;
26307 break;
26308#endif
26309 case WDI_ED_ANY:
26310 *EdType = eED_ANY;
26311 break;
26312
26313 default:
26314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26315 "%s: Unknown Encryption Type", __func__);
26316 break;
26317 }
26318}
26319
26320/**
26321 @brief Helper function to pack Start Roam Candidate Lookup
26322 Request parameters
26323
26324 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026325 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026326 from upper layers
26327 ppSendBuffer, pSize - out pointers of the packed buffer
26328 and its size
26329
26330 @return Result of the function call
26331*/
26332
26333WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026334WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026335(
26336 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026337 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026338 wpt_uint8** ppSendBuffer,
26339 wpt_uint16* pSize
26340)
26341{
26342 wpt_uint8* pSendBuffer = NULL;
26343 wpt_uint16 usDataOffset = 0;
26344 wpt_uint16 usSendSize = 0;
26345 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26346 wpt_uint8 i;
26347 /*-----------------------------------------------------------------------
26348 Get message buffer
26349 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026350 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026351 sizeof(tRoamCandidateListParams),
26352 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026353 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026354 {
26355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026356 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026357 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026358 WDI_ASSERT(0);
26359 return WDI_STATUS_E_FAILURE;
26360 }
26361 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026362 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026363 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026364 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026365 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026366 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026367 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026368 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026369 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026370 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026371 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026372
26373 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026374 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026375 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026376 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026377 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26378 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026379 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26380 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26381 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26382 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26383 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026384 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026385 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026386 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026387 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26388 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26389 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26390 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26391 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26392 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26393 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026394 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026395 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026396 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26397 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26398 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026399
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26401 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26402 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26403 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26404 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26405 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026406 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026407 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26408 pRoamCandidateListParams->RoamScanOffloadEnabled,
26409 pRoamCandidateListParams->Command,
26410 pRoamCandidateListParams->StartScanReason,
26411 pRoamCandidateListParams->NeighborScanTimerPeriod,
26412 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26413 pRoamCandidateListParams->NeighborScanChannelMinTime,
26414 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26415 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26416 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26417 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26418 pRoamCandidateListParams->ConnectedNetwork.authentication,
26419 pRoamCandidateListParams->ConnectedNetwork.encryption,
26420 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26421 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26422 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026423 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026424 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026425 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026426 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026427 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26428 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026429 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026430 pRoamCandidateListParams->us24GProbeSize);
26431 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026432 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026433 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026434 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026435 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26436 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026437 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026438 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026439 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26440 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26441 pRoamCandidateListParams->nProbes =
26442 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26443 pRoamCandidateListParams->HomeAwayTime =
26444 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026446 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26447 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026449 }
26450
26451
26452 /*Set the output values*/
26453 *ppSendBuffer = pSendBuffer;
26454 *pSize = usSendSize;
26455 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026456}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026457
26458/**
26459 @brief Process Start Roam Candidate Lookup Request function
26460
26461 @param pWDICtx: pointer to the WLAN DAL context
26462 pEventData: pointer to the event information structure
26463
26464 @return Result of the function call
26465*/
26466WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026467WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026468(
26469 WDI_ControlBlockType* pWDICtx,
26470 WDI_EventInfoType* pEventData
26471)
26472{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026473 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026474 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26475 wpt_uint8* pSendBuffer = NULL;
26476 wpt_uint16 usSendSize = 0;
26477 WDI_Status wdiStatus;
26478 /*-------------------------------------------------------------------------
26479 Sanity check
26480 -------------------------------------------------------------------------*/
26481 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026482 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026483 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26484 {
26485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26486 "%s: Invalid parameters", __func__);
26487 WDI_ASSERT(0);
26488 return WDI_STATUS_E_FAILURE;
26489 }
26490
26491 /*-------------------------------------------------------------------------
26492 Pack the Start Roam Candidate Lookup request structure based on version
26493 -------------------------------------------------------------------------*/
26494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26495 "%s: Packing Roam Candidate Lookup request ", __func__);
26496
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026497 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026498 &pSendBuffer, &usSendSize);
26499
26500 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26501 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26502 {
26503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26504 "%s: failed to pack request parameters", __func__);
26505 WDI_ASSERT(0);
26506 return wdiStatus;
26507 }
26508
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026509 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26510 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026511
26512 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026513 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026514 -------------------------------------------------------------------------*/
26515 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026516 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026517}
26518
26519/**
26520 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26521 response is being received over the bus from HAL)
26522
26523 @param pWDICtx: pointer to the WLAN DAL context
26524 pEventData: pointer to the event information structure
26525
26526 @see
26527 @return Result of the function call
26528*/
26529WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026530WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026531(
26532 WDI_ControlBlockType* pWDICtx,
26533 WDI_EventInfoType* pEventData
26534)
26535{
26536 WDI_Status wdiStatus;
26537 eHalStatus halStatus;
26538 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26539
26540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26541
26542 /*-------------------------------------------------------------------------
26543 Sanity check
26544 -------------------------------------------------------------------------*/
26545 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26546 ( NULL == pEventData->pEventData ))
26547 {
26548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26549 "%s: Invalid parameters", __func__);
26550 WDI_ASSERT(0);
26551 return WDI_STATUS_E_FAILURE;
26552 }
26553
26554 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26555
26556 /*-------------------------------------------------------------------------
26557 Extract response and send it to UMAC
26558 -------------------------------------------------------------------------*/
26559 halStatus = *((eHalStatus*)pEventData->pEventData);
26560 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26561
26562 /*Notify UMAC*/
26563 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26564
26565 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026566}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026567#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026568
26569/**
26570 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026571
26572 @param pWDICtx: pointer to the WLAN DAL context
26573 pEventData: pointer to the event information structure
26574
Jeff Johnson295189b2012-06-20 16:38:30 -070026575 @see
26576 @return Result of the function call
26577*/
26578WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026579WDI_PackUpdateScanParamsReq
26580(
26581 WDI_ControlBlockType* pWDICtx,
26582 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26583 wpt_uint8** ppSendBuffer,
26584 wpt_uint16* pSize
26585)
26586{
26587 wpt_uint8* pSendBuffer = NULL;
26588 wpt_uint16 usDataOffset = 0;
26589 wpt_uint16 usSendSize = 0;
26590 tUpdateScanParams updateScanParams = {0};
26591
26592
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026594 "Begin WDI Update Scan Parameters Old Style Params");
26595 /*-----------------------------------------------------------------------
26596 Get message buffer
26597 -----------------------------------------------------------------------*/
26598 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26599 sizeof(updateScanParams),
26600 &pSendBuffer, &usDataOffset, &usSendSize))||
26601 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26602 {
26603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026604 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026605 pwdiUpdateScanParams);
26606 WDI_ASSERT(0);
26607 return WDI_STATUS_E_FAILURE;
26608 }
26609
26610 //
26611 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26612 //
26613
26614 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26615 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26616
26617 updateScanParams.ucChannelCount =
26618 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26619 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26620 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26621 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26622
26623 wpalMemoryCopy( updateScanParams.aChannels,
26624 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26625 updateScanParams.ucChannelCount);
26626
26627
26628 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26629 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26630 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26631 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26632 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26633
26634 wpalMemoryCopy( pSendBuffer+usDataOffset,
26635 &updateScanParams,
26636 sizeof(updateScanParams));
26637
26638 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26639 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26640
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026642 "End Update Scan Parameters Old Style");
26643
26644 /*Set the output values*/
26645 *ppSendBuffer = pSendBuffer;
26646 *pSize = usSendSize;
26647
26648 return WDI_STATUS_SUCCESS;
26649}
26650
26651/**
26652 @brief Process Update Scan Params function
26653
26654 @param pWDICtx: pointer to the WLAN DAL context
26655 pEventData: pointer to the event information structure
26656
26657 @see
26658 @return Result of the function call
26659*/
26660WDI_Status
26661WDI_PackUpdateScanParamsReqEx
26662(
26663 WDI_ControlBlockType* pWDICtx,
26664 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26665 wpt_uint8** ppSendBuffer,
26666 wpt_uint16* pSize
26667)
26668{
26669 wpt_uint8* pSendBuffer = NULL;
26670 wpt_uint16 usDataOffset = 0;
26671 wpt_uint16 usSendSize = 0;
26672 tUpdateScanParamsEx updateScanParams = {0};
26673
26674
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026675 /*-----------------------------------------------------------------------
26676 Get message buffer
26677 -----------------------------------------------------------------------*/
26678 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26679 sizeof(updateScanParams),
26680 &pSendBuffer, &usDataOffset, &usSendSize))||
26681 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26682 {
26683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026684 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026685 pwdiUpdateScanParams);
26686 WDI_ASSERT(0);
26687 return WDI_STATUS_E_FAILURE;
26688 }
26689
26690 //
26691 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26692 //
26693
26694 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26695 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26696
26697 updateScanParams.ucChannelCount =
26698 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26699 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26700 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26701 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26702
26703 wpalMemoryCopy( updateScanParams.aChannels,
26704 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26705 updateScanParams.ucChannelCount);
26706
26707
26708 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26709 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26710 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26711 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26712 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26713
26714 wpalMemoryCopy( pSendBuffer+usDataOffset,
26715 &updateScanParams,
26716 sizeof(updateScanParams));
26717
26718 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26719 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26720
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026721 /*Set the output values*/
26722 *ppSendBuffer = pSendBuffer;
26723 *pSize = usSendSize;
26724
26725 return WDI_STATUS_SUCCESS;
26726}
26727
26728/**
26729 @brief Process Update Scan Params function
26730
26731 @param pWDICtx: pointer to the WLAN DAL context
26732 pEventData: pointer to the event information structure
26733
26734 @see
26735 @return Result of the function call
26736*/
26737WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026738WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026739(
Jeff Johnson295189b2012-06-20 16:38:30 -070026740 WDI_ControlBlockType* pWDICtx,
26741 WDI_EventInfoType* pEventData
26742)
26743{
26744 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26745 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026746 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026747 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026748 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026749
26750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026751 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026752 -------------------------------------------------------------------------*/
26753 if (( NULL == pEventData ) ||
26754 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26755 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26756 {
26757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026758 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026759 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026760 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026761 }
26762
26763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26764 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026765
26766 //
26767 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26768 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026769 if ( pWDICtx->wlanVersion.revision < 1 )
26770 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026771 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026772 &pSendBuffer, &usSendSize);
26773 }
26774 else
26775 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026776 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26777 &pSendBuffer, &usSendSize);
26778 }
26779
26780 if(WDI_STATUS_SUCCESS != wdiStatus)
26781 {
26782 //memory allocation failed
26783 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026784 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026785
Jeff Johnson295189b2012-06-20 16:38:30 -070026786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026787 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026788 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026789 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026790 wdiUpdateScanParamsCb, pEventData->pUserData,
26791 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026792}
26793
26794/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026795 @brief Process Update Channel Params function
26796
26797 @param pWDICtx: pointer to the WLAN DAL context
26798 pEventData: pointer to the event information structure
26799
26800 @see
26801 @return Result of the function call
26802*/
26803WDI_Status
26804WDI_ProcessUpdateChannelParamsReq
26805(
26806 WDI_ControlBlockType* pWDICtx,
26807 WDI_EventInfoType* pEventData
26808)
26809{
26810 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26811 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26812 wpt_uint8* pSendBuffer = NULL;
26813 wpt_uint16 usDataOffset = 0;
26814 wpt_uint16 usSendSize = 0;
26815 tUpdateChannelReqType *updateChannelParams;
26816 wpt_uint32 usUpdateChanParamSize;
26817 wpt_uint8 num_channels = 0;
26818
26819 /*-------------------------------------------------------------------------
26820 Sanity check
26821 -------------------------------------------------------------------------*/
26822 if (( NULL == pEventData ) ||
26823 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26824 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26825 {
26826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26827 "%s: Invalid parameters", __func__);
26828 WDI_ASSERT(0);
26829 return WDI_STATUS_E_FAILURE;
26830 }
26831 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026832 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026833
26834 /*-----------------------------------------------------------------------
26835 Get message buffer
26836 -----------------------------------------------------------------------*/
26837 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26838 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26839 &pSendBuffer, &usDataOffset, &usSendSize))||
26840 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26841 {
26842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26843 "Unable to get send buffer in Update Channel Params req %p",
26844 pwdiUpdateChanListParams);
26845 WDI_ASSERT(0);
26846 return WDI_STATUS_E_FAILURE;
26847 }
26848 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26849
26850 updateChannelParams->numChan = num_channels;
26851 wpalMemoryCopy(&updateChannelParams->chanParam,
26852 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26853 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26854
26855 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26856 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26857
26858 /*-------------------------------------------------------------------------
26859 Send Update channel request to fw
26860 -------------------------------------------------------------------------*/
26861 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26862 wdiUpdateChanParamsCb, pEventData->pUserData,
26863 WDI_UPDATE_CHAN_RESP);
26864}
26865
26866/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026867 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026868
26869 @param pWDICtx: pointer to the WLAN DAL context
26870 pEventData: pointer to the event information structure
26871
Jeff Johnson295189b2012-06-20 16:38:30 -070026872 @see
26873 @return Result of the function call
26874*/
26875WDI_Status
26876WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026877(
Jeff Johnson295189b2012-06-20 16:38:30 -070026878 WDI_ControlBlockType* pWDICtx,
26879 WDI_EventInfoType* pEventData
26880)
26881{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026882 WDI_LowLevelIndType wdiInd;
26883 tpPrefNetwFoundParams pNetwFoundParams;
26884 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026885
26886
26887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026888 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026889 -------------------------------------------------------------------------*/
26890 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26891 ( NULL == pEventData->pEventData ))
26892 {
26893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026895 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026897 }
26898
26899 /*-------------------------------------------------------------------------
26900 Extract indication and send it to UMAC
26901 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026902 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26903
26904 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26905 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26906 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26907
26908 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26909 {
26910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26911 "%s: fail to allocate memory", __func__);
26912 return WDI_STATUS_MEM_FAILURE;
26913 }
26914
26915 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26916 (pNetwFoundParams->ssId.length < 32 )?
26917 pNetwFoundParams->ssId.length : 32;
26918 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26919 pNetwFoundParams->ssId.ssId,
26920 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26921 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26922 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26923 pNetwFoundParams->frameLength;
26924 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26925 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26926 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026927
26928 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026929 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026930
Jeff Johnson295189b2012-06-20 16:38:30 -070026931 // DEBUG
26932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053026933 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026934 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026935 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026936 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026937 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026938 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26939
ltimariub77f24b2013-01-24 18:54:33 -080026940 if ( pWDICtx->wdiLowLevelIndCB )
26941 {
26942 /*Notify UMAC*/
26943 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26944 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026945
26946 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026947}
26948
26949/**
26950 @brief Process PNO Rsp function (called when a
26951 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026952
26953 @param pWDICtx: pointer to the WLAN DAL context
26954 pEventData: pointer to the event information structure
26955
Jeff Johnson295189b2012-06-20 16:38:30 -070026956 @see
26957 @return Result of the function call
26958*/
26959WDI_Status
26960WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026961(
Jeff Johnson295189b2012-06-20 16:38:30 -070026962 WDI_ControlBlockType* pWDICtx,
26963 WDI_EventInfoType* pEventData
26964)
26965{
26966 WDI_Status wdiStatus;
26967 eHalStatus halStatus;
26968 WDI_PNOScanCb wdiPNOScanCb = NULL;
26969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26970
26971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026972 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026973 -------------------------------------------------------------------------*/
26974 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26975 ( NULL == pEventData->pEventData ))
26976 {
26977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026978 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026981 }
26982
26983
Jeff Johnsone7245742012-09-05 17:12:55 -070026984 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026985
26986 /*-------------------------------------------------------------------------
26987 Extract response and send it to UMAC
26988 -------------------------------------------------------------------------*/
26989 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026990 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026991
26992 /*Notify UMAC*/
26993 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26994
Jeff Johnsone7245742012-09-05 17:12:55 -070026995 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026996}/*WDI_ProcessSetPreferredNetworkRsp*/
26997
26998/**
26999 @brief Process RSSI Filter Rsp function (called when a
27000 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027001
27002 @param pWDICtx: pointer to the WLAN DAL context
27003 pEventData: pointer to the event information structure
27004
Jeff Johnson295189b2012-06-20 16:38:30 -070027005 @see
27006 @return Result of the function call
27007*/
27008WDI_Status
27009WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027010(
Jeff Johnson295189b2012-06-20 16:38:30 -070027011 WDI_ControlBlockType* pWDICtx,
27012 WDI_EventInfoType* pEventData
27013)
27014{
27015 WDI_Status wdiStatus;
27016 eHalStatus halStatus;
27017 WDI_RssiFilterCb wdiRssiFilterCb;
27018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27019
27020 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027021 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027022 -------------------------------------------------------------------------*/
27023 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27024 ( NULL == pEventData->pEventData ))
27025 {
27026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027027 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027028 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027030 }
27031
Jeff Johnsone7245742012-09-05 17:12:55 -070027032 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027033
27034 /*-------------------------------------------------------------------------
27035 Extract response and send it to UMAC
27036 -------------------------------------------------------------------------*/
27037 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027038 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027039
27040 /*Notify UMAC*/
27041 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27042
Jeff Johnsone7245742012-09-05 17:12:55 -070027043 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027044}/*WDI_ProcessSetRssiFilterRsp*/
27045
27046/**
27047 @brief Process Update Scan Params Rsp function (called when a
27048 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027049
27050 @param pWDICtx: pointer to the WLAN DAL context
27051 pEventData: pointer to the event information structure
27052
Jeff Johnson295189b2012-06-20 16:38:30 -070027053 @see
27054 @return Result of the function call
27055*/
27056WDI_Status
27057WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027058(
Jeff Johnson295189b2012-06-20 16:38:30 -070027059 WDI_ControlBlockType* pWDICtx,
27060 WDI_EventInfoType* pEventData
27061)
27062{
27063 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027064 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027065 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027066 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27068
27069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027070 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027071 -------------------------------------------------------------------------*/
27072 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27073 ( NULL == pEventData->pEventData ))
27074 {
27075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027076 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027079 }
27080
27081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027082 "%s: Process UPD scan params ptr : %p",
27083 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027084
Jeff Johnsone7245742012-09-05 17:12:55 -070027085 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027086
27087 /*-------------------------------------------------------------------------
27088 Extract response and send it to UMAC
27089 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027090 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27091 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027092 sizeof(halUpdScanParams.status));
27093
27094 uStatus = halUpdScanParams.status;
27095
27096 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027097 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027098
27099 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027100 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027101
Jeff Johnsone7245742012-09-05 17:12:55 -070027102 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027103
27104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027105 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027106 halUpdScanParams.status);
27107
27108 /*Notify UMAC*/
27109 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27110
Jeff Johnsone7245742012-09-05 17:12:55 -070027111 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027112}
27113#endif // FEATURE_WLAN_SCAN_PNO
27114
27115#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027116WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027117WDI_8023MulticastListReq
27118(
27119 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27120 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27121 void* pUserData
27122)
27123{
27124 WDI_EventInfoType wdiEventData;
27125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27126
27127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027128 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027129
27130 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027131 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027132 ------------------------------------------------------------------------*/
27133 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27134 {
27135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27136 "WDI API call before module is initialized - Fail request");
27137
Jeff Johnsone7245742012-09-05 17:12:55 -070027138 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027139 }
27140
27141 /*------------------------------------------------------------------------
27142 Fill in Event data and post to the Main FSM
27143 ------------------------------------------------------------------------*/
27144 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027145 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027146 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027147 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027148 wdiEventData.pUserData = pUserData;
27149
27150 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27151}
27152
Jeff Johnsone7245742012-09-05 17:12:55 -070027153WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027154WDI_ReceiveFilterSetFilterReq
27155(
27156 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27157 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27158 void* pUserData
27159)
27160{
27161 WDI_EventInfoType wdiEventData;
27162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27163
27164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027165 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027166
27167 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027168 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027169 ------------------------------------------------------------------------*/
27170 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27171 {
27172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27173 "WDI API call before module is initialized - Fail request");
27174
Jeff Johnsone7245742012-09-05 17:12:55 -070027175 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027176 }
27177
27178 /*------------------------------------------------------------------------
27179 Fill in Event data and post to the Main FSM
27180 ------------------------------------------------------------------------*/
27181 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027182 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27183 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027184 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27185 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027186 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027187 wdiEventData.pUserData = pUserData;
27188
27189
27190 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27191}
27192
Jeff Johnsone7245742012-09-05 17:12:55 -070027193WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027194WDI_FilterMatchCountReq
27195(
27196 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27197 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27198 void* pUserData
27199)
27200{
27201 WDI_EventInfoType wdiEventData;
27202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27203
27204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027205 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027206
27207 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027208 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027209 ------------------------------------------------------------------------*/
27210 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27211 {
27212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27213 "WDI API call before module is initialized - Fail request");
27214
Jeff Johnsone7245742012-09-05 17:12:55 -070027215 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027216 }
27217
27218 /*------------------------------------------------------------------------
27219 Fill in Event data and post to the Main FSM
27220 ------------------------------------------------------------------------*/
27221 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027222 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027223 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027224 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027225 wdiEventData.pUserData = pUserData;
27226
27227
27228 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27229}
27230
Jeff Johnsone7245742012-09-05 17:12:55 -070027231WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027232WDI_ReceiveFilterClearFilterReq
27233(
27234 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27235 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27236 void* pUserData
27237)
27238{
27239 WDI_EventInfoType wdiEventData;
27240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27241
27242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027243 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027244
27245 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027246 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027247 ------------------------------------------------------------------------*/
27248 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27249 {
27250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27251 "WDI API call before module is initialized - Fail request");
27252
Jeff Johnsone7245742012-09-05 17:12:55 -070027253 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027254 }
27255
27256 /*------------------------------------------------------------------------
27257 Fill in Event data and post to the Main FSM
27258 ------------------------------------------------------------------------*/
27259 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027260 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027261 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027262 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027263 wdiEventData.pUserData = pUserData;
27264
27265
27266 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27267}
27268
27269/**
27270 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027271
27272 @param pWDICtx: pointer to the WLAN DAL context
27273 pEventData: pointer to the event information structure
27274
Jeff Johnson295189b2012-06-20 16:38:30 -070027275 @see
27276 @return Result of the function call
27277*/
27278WDI_Status
27279WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027280(
Jeff Johnson295189b2012-06-20 16:38:30 -070027281 WDI_ControlBlockType* pWDICtx,
27282 WDI_EventInfoType* pEventData
27283)
27284{
27285 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27286 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027287 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027288 wpt_uint16 usDataOffset = 0;
27289 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027290 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027291 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027292 wpt_uint8 ucCurrentBSSSesIdx = 0;
27293 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027294
27295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027296 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027297
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027298 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27299 if( NULL == pRcvFltMcAddrListType )
27300 {
27301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27302 "Failed to alloc in WDI_Process8023MulticastListReq");
27303 return WDI_STATUS_E_FAILURE;
27304 }
27305
Jeff Johnson295189b2012-06-20 16:38:30 -070027306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027307 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027308 -------------------------------------------------------------------------*/
27309 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027310 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027311 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027312 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027313 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27314 {
27315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027316 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027317 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027319 return WDI_STATUS_E_FAILURE;
27320 }
27321
27322 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27323 pwdiFltPktSetMcListReqParamsType->mcAddrList.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__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027329 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027331 }
27332
27333 /*-----------------------------------------------------------------------
27334 Get message buffer
27335 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027336 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27337 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027338 sizeof(tHalRcvFltMcAddrListType),
27339 &pSendBuffer, &usDataOffset, &usSendSize))||
27340 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27341 {
27342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27343 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027344 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027345 pEventData, pwdiFltPktSetMcListReqParamsType,
27346 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027347 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027350 }
27351
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027352 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027353 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027354 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027355 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027356 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027357 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27358 sizeof(tSirMacAddr));
27359 }
27360
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027361 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027362 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027363 pRcvFltMcAddrListType,
27364 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027365
27366 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027367 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027368
27369
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027370 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027372 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027373 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027374 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027375 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027376 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027377}
27378
27379/**
27380 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027381
27382 @param pWDICtx: pointer to the WLAN DAL context
27383 pEventData: pointer to the event information structure
27384
Jeff Johnson295189b2012-06-20 16:38:30 -070027385 @see
27386 @return Result of the function call
27387*/
27388WDI_Status
27389WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027390(
Jeff Johnson295189b2012-06-20 16:38:30 -070027391 WDI_ControlBlockType* pWDICtx,
27392 WDI_EventInfoType* pEventData
27393)
27394{
27395 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27396 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027397 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027398 wpt_uint16 usDataOffset = 0;
27399 wpt_uint16 usSendSize = 0;
27400 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027401 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027402 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027403 wpt_uint8 ucCurrentBSSSesIdx = 0;
27404 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027405 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27406 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027407
27408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027409 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027410
27411 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027412 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027413 -------------------------------------------------------------------------*/
27414 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027415 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027416 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027417 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027418 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27419 {
27420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027421 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027422 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027423 return WDI_STATUS_E_FAILURE;
27424 }
27425
27426 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27427 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27428 &pBSSSes);
27429 if ( NULL == pBSSSes )
27430 {
27431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027432 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027433 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027434 }
27435
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027436 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27437 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027438
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027439 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27440 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27441 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27442
27443 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27444 usSessRcvPktFilterCfgSize);
27445
27446 if(NULL == pSessRcvPktFilterCfg)
27447 {
27448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27449 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027450 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027451 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027452 WDI_ASSERT(0);
27453 return WDI_STATUS_E_FAILURE;
27454 }
27455
27456 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27457
27458 /*-----------------------------------------------------------------------
27459 Get message buffer
27460 -----------------------------------------------------------------------*/
27461
27462 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27463 usSessRcvPktFilterCfgSize,
27464 &pSendBuffer, &usDataOffset, &usSendSize))||
27465 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27466 {
27467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27468 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027469 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027470 pEventData, pwdiSetRcvPktFilterReqInfo,
27471 wdiReceiveFilterSetFilterCb);
27472 WDI_ASSERT(0);
27473 wpalMemoryFree(pSessRcvPktFilterCfg);
27474 return WDI_STATUS_E_FAILURE;
27475 }
27476
27477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027478 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027479 usSendSize,pSessRcvPktFilterCfg);
27480
27481 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27482 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27483 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27484 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27485
27486 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27487
27488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27489 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27490 pSessRcvPktFilterCfg->filterType);
27491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27492 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27493 pSessRcvPktFilterCfg->coleasceTime);
27494
27495 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27496 {
27497 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27498 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27499 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27500 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27501 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27502 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27503 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27504 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27505
27506 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27507 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27508 8);
27509 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27510 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27511 8);
27512
27513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027514 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027515 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27516 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27517
27518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027519 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027520 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27521 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27522
27523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027524 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027525 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27526 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27527 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27528 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27529 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27530 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27531
27532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027533 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027534 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27535 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27536 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27537 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27538 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27539 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27540 }
27541
27542 wpalMemoryCopy( pSendBuffer+usDataOffset,
27543 pSessRcvPktFilterCfg,
27544 usSessRcvPktFilterCfgSize);
27545
27546
27547 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27548 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27549
27550 wpalMemoryFree(pSessRcvPktFilterCfg);
27551
27552 }
27553 /*If SLM_SESSIONIZATION is not supported then do this */
27554 else
27555 {
27556 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27557 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27558 * sizeof(tHalRcvPktFilterParams));
27559
27560 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027561 usRcvPktFilterCfgSize);
27562
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027563 if(NULL == pRcvPktFilterCfg)
27564 {
27565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27566 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027567 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027568 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027569 WDI_ASSERT(0);
27570 return WDI_STATUS_E_FAILURE;
27571 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027572
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027573 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027574
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027575 /*-----------------------------------------------------------------------
27576 Get message buffer
27577 -----------------------------------------------------------------------*/
27578 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027579 usRcvPktFilterCfgSize,
27580 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027581 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27582 {
27583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027584 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027585 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027586 pEventData, pwdiSetRcvPktFilterReqInfo,
27587 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027588 WDI_ASSERT(0);
27589 wpalMemoryFree(pRcvPktFilterCfg);
27590 return WDI_STATUS_E_FAILURE;
27591 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027592
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027594 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027595 usSendSize,usRcvPktFilterCfgSize);
27596
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027597 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27598 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27599 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27600 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027601
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027603 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027604 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027606 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027607 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027608
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027609 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27610 {
27611 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27612 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27613 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27614 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27615 pRcvPktFilterCfg->paramsData[i].dataOffset =
27616 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27617 pRcvPktFilterCfg->paramsData[i].dataLength =
27618 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027619
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027620 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027621 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27622 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027623 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027624 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27625 8);
27626
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027628 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027629 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027630 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27631
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027632 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027633 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027634 pRcvPktFilterCfg->paramsData[i].dataOffset,
27635 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027636
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027638 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027639 pRcvPktFilterCfg->paramsData[i].compareData[0],
27640 pRcvPktFilterCfg->paramsData[i].compareData[1],
27641 pRcvPktFilterCfg->paramsData[i].compareData[2],
27642 pRcvPktFilterCfg->paramsData[i].compareData[3],
27643 pRcvPktFilterCfg->paramsData[i].compareData[4],
27644 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027645
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027647 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027648 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27649 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27650 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27651 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27652 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27653 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27654 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027655
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027656 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027657 pRcvPktFilterCfg,
27658 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027659
27660
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027661 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27662 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027663
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027665 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027666 wpalMemoryFree(pRcvPktFilterCfg);
27667 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027669 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027670 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027671 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027672 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027673 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027674}
27675
27676/**
27677 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027678
27679 @param pWDICtx: pointer to the WLAN DAL context
27680 pEventData: pointer to the event information structure
27681
Jeff Johnson295189b2012-06-20 16:38:30 -070027682 @see
27683 @return Result of the function call
27684*/
27685WDI_Status
27686WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027687(
Jeff Johnson295189b2012-06-20 16:38:30 -070027688 WDI_ControlBlockType* pWDICtx,
27689 WDI_EventInfoType* pEventData
27690)
27691{
27692 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27693 NULL;
27694 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27695 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027696 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027697 wpt_uint16 usDataOffset = 0;
27698 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027699 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27700 wpt_uint8 ucCurrentBSSSesIdx = 0;
27701 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027702
27703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027704 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027705
27706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027707 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027708 -------------------------------------------------------------------------*/
27709 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027710 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027711 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027712 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027713 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27714 {
27715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027716 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027717 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027718 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027719 }
27720
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027721 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27722 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27723 &pBSSSes);
27724 if ( NULL == pBSSSes )
27725 {
27726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027727 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027728 return WDI_STATUS_E_FAILURE;
27729 }
27730
Jeff Johnson295189b2012-06-20 16:38:30 -070027731 /*-----------------------------------------------------------------------
27732 Get message buffer
27733 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027734 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27735 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027736 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027737 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027738 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027739 {
27740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27741 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027742 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027743 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27744 wdiFilterMatchCountCb);
27745 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027747 }
27748
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027749 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27750 wpalMemoryCopy( pSendBuffer+usDataOffset,
27751 &rcvFltPktMatchCntReqParam,
27752 sizeof(rcvFltPktMatchCntReqParam));
27753
Jeff Johnson295189b2012-06-20 16:38:30 -070027754 //
27755 // Don't need to fill send buffer other than header
27756 //
27757 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027758 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027759
27760
27761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027762 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027763 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027764 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27765 wdiFilterMatchCountCb,
27766 pEventData->pUserData,
27767 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027768}
27769
27770/**
27771 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027772
27773 @param pWDICtx: pointer to the WLAN DAL context
27774 pEventData: pointer to the event information structure
27775
Jeff Johnson295189b2012-06-20 16:38:30 -070027776 @see
27777 @return Result of the function call
27778*/
27779WDI_Status
27780WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027781(
Jeff Johnson295189b2012-06-20 16:38:30 -070027782 WDI_ControlBlockType* pWDICtx,
27783 WDI_EventInfoType* pEventData
27784)
Jeff Johnsone7245742012-09-05 17:12:55 -070027785{
Jeff Johnson295189b2012-06-20 16:38:30 -070027786 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27787 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027788 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027789 wpt_uint16 usDataOffset = 0;
27790 wpt_uint16 usSendSize = 0;
27791 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027792 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027793 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027794
27795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027796 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027797
27798 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027799 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027800 -------------------------------------------------------------------------*/
27801 if (( NULL == pEventData ) ||
27802 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27803 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027804 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027805 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27806 {
27807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027810 return WDI_STATUS_E_FAILURE;
27811 }
27812
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027813 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027814 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27815 &pBSSSes);
27816 if ( NULL == pBSSSes )
27817 {
27818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027819 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027821 }
27822
27823 /*-----------------------------------------------------------------------
27824 Get message buffer
27825 -----------------------------------------------------------------------*/
27826 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027827 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027828 sizeof(tHalRcvFltPktClearParam),
27829 &pSendBuffer, &usDataOffset, &usSendSize))||
27830 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27831 {
27832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27833 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027834 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027835 pEventData, pwdiRcvFltPktClearReqParamsType,
27836 wdiRcvFltPktClearFilterCb);
27837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027839 }
27840
27841
27842 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027843 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027844 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027845 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027846
Jeff Johnsone7245742012-09-05 17:12:55 -070027847 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27848 wpalMemoryCopy( pSendBuffer+usDataOffset,
27849 &rcvFltPktClearParam,
27850 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027851
27852 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027853 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027854
27855
27856 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027857 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027858 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027859 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027860 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027861 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027862}
27863
27864/**
27865 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027866
27867 @param pWDICtx: pointer to the WLAN DAL context
27868 pEventData: pointer to the event information structure
27869
Jeff Johnson295189b2012-06-20 16:38:30 -070027870 @see
27871 @return Result of the function call
27872*/
27873WDI_Status
27874WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027875(
Jeff Johnson295189b2012-06-20 16:38:30 -070027876 WDI_ControlBlockType* pWDICtx,
27877 WDI_EventInfoType* pEventData
27878)
27879{
Jeff Johnson295189b2012-06-20 16:38:30 -070027880 eHalStatus halStatus;
27881 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027882 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27883 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27885
27886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027887 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027888
27889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027890 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027891 -------------------------------------------------------------------------*/
27892 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27893 ( NULL == pEventData->pEventData ))
27894 {
27895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027896 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027899 }
27900
Jeff Johnsone7245742012-09-05 17:12:55 -070027901 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027902
27903 /*-------------------------------------------------------------------------
27904 Extract response and send it to UMAC
27905 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027906 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27907 {
27908 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27909 pEventData->pEventData,
27910 sizeof(halRcvFltPktSetMcListRsp));
27911
27912 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27913 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27914 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27915 halRcvFltPktSetMcListRsp.bssIdx;
27916 }
27917 else
27918 {
27919 halStatus = *((eHalStatus*)pEventData->pEventData);
27920 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27921 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027922
27923 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027924 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027925
Jeff Johnsone7245742012-09-05 17:12:55 -070027926 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027927}
27928
27929/**
27930 @brief Process Set Rsp function (called when a
27931 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027932
27933 @param pWDICtx: pointer to the WLAN DAL context
27934 pEventData: pointer to the event information structure
27935
Jeff Johnson295189b2012-06-20 16:38:30 -070027936 @see
27937 @return Result of the function call
27938*/
27939WDI_Status
27940WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027941(
Jeff Johnson295189b2012-06-20 16:38:30 -070027942 WDI_ControlBlockType* pWDICtx,
27943 WDI_EventInfoType* pEventData
27944)
27945{
Jeff Johnson295189b2012-06-20 16:38:30 -070027946 eHalStatus halStatus;
27947 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027948 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27949 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27951
27952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027953 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027954
27955 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027956 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027957 -------------------------------------------------------------------------*/
27958 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27959 ( NULL == pEventData->pEventData ))
27960 {
27961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027962 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027963 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027965 }
27966
27967 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027968 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027969
27970 /*-------------------------------------------------------------------------
27971 Extract response and send it to UMAC
27972 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027973 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27974 {
27975 wpalMemoryCopy( &halSetPktFilterRspParams,
27976 pEventData->pEventData,
27977 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027978
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027979 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27980 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27981 }
27982 else
27983 {
27984 halStatus = *((eHalStatus*)pEventData->pEventData);
27985 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27986 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027987 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027988 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027989
Jeff Johnsone7245742012-09-05 17:12:55 -070027990 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027991}
27992
27993/**
27994 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027995
27996 @param pWDICtx: pointer to the WLAN DAL context
27997 pEventData: pointer to the event information structure
27998
Jeff Johnson295189b2012-06-20 16:38:30 -070027999 @see
28000 @return Result of the function call
28001*/
28002WDI_Status
28003WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028004(
Jeff Johnson295189b2012-06-20 16:38:30 -070028005 WDI_ControlBlockType* pWDICtx,
28006 WDI_EventInfoType* pEventData
28007)
28008{
Jeff Johnson295189b2012-06-20 16:38:30 -070028009 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028010 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028011 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28012 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028013
28014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28015
28016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028017 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028018
28019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028020 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028021 -------------------------------------------------------------------------*/
28022 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28023 ( NULL == pEventData->pEventData ))
28024 {
28025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028029 }
28030
Jeff Johnsone7245742012-09-05 17:12:55 -070028031 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028032
28033 /*-------------------------------------------------------------------------
28034 Extract response and send it to UMAC
28035 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028036 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28037 {
28038 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28039 pEventData->pEventData,
28040 sizeof(halRcvFltrPktMatachRsp));
28041
28042 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28043 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28044 }
28045 else
28046 {
28047 halStatus = *((eHalStatus*)pEventData->pEventData);
28048 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28049 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028050
28051 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028052 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028053
Jeff Johnsone7245742012-09-05 17:12:55 -070028054 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028055}
28056
28057/**
28058 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028059
28060 @param pWDICtx: pointer to the WLAN DAL context
28061 pEventData: pointer to the event information structure
28062
Jeff Johnson295189b2012-06-20 16:38:30 -070028063 @see
28064 @return Result of the function call
28065*/
28066WDI_Status
28067WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028068(
Jeff Johnson295189b2012-06-20 16:38:30 -070028069 WDI_ControlBlockType* pWDICtx,
28070 WDI_EventInfoType* pEventData
28071)
28072{
Jeff Johnson295189b2012-06-20 16:38:30 -070028073 eHalStatus halStatus;
28074 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028075 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28076 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28078
28079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028080 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028081
28082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028084 -------------------------------------------------------------------------*/
28085 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28086 ( NULL == pEventData->pEventData ))
28087 {
28088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028092 }
28093
28094 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028095 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028096
28097 /*-------------------------------------------------------------------------
28098 Extract response and send it to UMAC
28099 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028100 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28101 {
28102 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28103 pEventData->pEventData,
28104 sizeof(halRcvFltPktClearRspMsg));
28105
28106 wdiRcvFltPktClearRspParamsType.wdiStatus =
28107 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28108 wdiRcvFltPktClearRspParamsType.bssIdx =
28109 halRcvFltPktClearRspMsg.bssIdx;
28110 }
28111 else
28112 {
28113 halStatus = *((eHalStatus*)pEventData->pEventData);
28114 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28115 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028116
28117 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028118 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028119
Jeff Johnsone7245742012-09-05 17:12:55 -070028120 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028121}
28122#endif // WLAN_FEATURE_PACKET_FILTERING
28123
28124/**
28125 @brief Process Shutdown Rsp function
28126 There is no shutdown response comming from HAL
28127 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028128
Jeff Johnson295189b2012-06-20 16:38:30 -070028129 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028130 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028131
28132 @see
28133 @return Result of the function call
28134*/
28135WDI_Status
28136WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028137(
Jeff Johnson295189b2012-06-20 16:38:30 -070028138 WDI_ControlBlockType* pWDICtx,
28139 WDI_EventInfoType* pEventData
28140)
28141{
28142 /*There is no shutdown response comming from HAL - function just kept for
28143 simmetry */
28144 WDI_ASSERT(0);
28145 return WDI_STATUS_SUCCESS;
28146}/*WDI_ProcessShutdownRsp*/
28147
28148/**
28149 @brief WDI_SetPowerParamsReq
28150
Jeff Johnsone7245742012-09-05 17:12:55 -070028151 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028152 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028153
Jeff Johnson295189b2012-06-20 16:38:30 -070028154 wdiPowerParamsCb: callback for passing back the response
28155 of the Set Power Params operation received from the
28156 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028157
Jeff Johnson295189b2012-06-20 16:38:30 -070028158 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028159 callback
28160
Jeff Johnson295189b2012-06-20 16:38:30 -070028161 @return Result of the function call
28162*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028163WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028164WDI_SetPowerParamsReq
28165(
28166 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28167 WDI_SetPowerParamsCb wdiPowerParamsCb,
28168 void* pUserData
28169)
28170{
28171 WDI_EventInfoType wdiEventData;
28172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28173
28174 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028175 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028176 ------------------------------------------------------------------------*/
28177 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28178 {
28179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28180 "WDI API call before module is initialized - Fail request");
28181
Jeff Johnsone7245742012-09-05 17:12:55 -070028182 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028183 }
28184
28185 /*------------------------------------------------------------------------
28186 Fill in Event data and post to the Main FSM
28187 ------------------------------------------------------------------------*/
28188 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028189 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028190 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028191 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028192 wdiEventData.pUserData = pUserData;
28193
28194 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28195}/*WDI_SetPowerParamsReq*/
28196
28197/**
28198 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028199
28200 @param pWDICtx: pointer to the WLAN DAL context
28201 pEventData: pointer to the event information structure
28202
Jeff Johnson295189b2012-06-20 16:38:30 -070028203 @see
28204 @return Result of the function call
28205*/
28206WDI_Status
28207WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028208(
Jeff Johnson295189b2012-06-20 16:38:30 -070028209 WDI_ControlBlockType* pWDICtx,
28210 WDI_EventInfoType* pEventData
28211)
28212{
28213 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28214 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028215 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028216 wpt_uint16 usDataOffset = 0;
28217 wpt_uint16 usSendSize = 0;
28218 tSetPowerParamsType powerParams;
28219
28220 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028221 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028222 -------------------------------------------------------------------------*/
28223 if (( NULL == pEventData ) ||
28224 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28225 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28226 {
28227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028228 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028229 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028230 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028231 }
28232
28233 /*-----------------------------------------------------------------------
28234 Get message buffer
28235 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028236 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028237 sizeof(powerParams),
28238 &pSendBuffer, &usDataOffset, &usSendSize))||
28239 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28240 {
28241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028242 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028243 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028246 }
28247
28248 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028249 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028250 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28251
28252 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028253 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028254 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28255
28256 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028257 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028258 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28259
28260 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028261 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028262 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28263
28264 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028265 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028266 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28267
28268 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028269 powerParams.uBETInterval =
28270 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028271
Yue Mac24062f2013-05-13 17:01:29 -070028272 /* MAX LI for modulated DTIM */
28273 powerParams.uMaxLIModulatedDTIM =
28274 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028275
28276 wpalMemoryCopy( pSendBuffer+usDataOffset,
28277 &powerParams,
28278 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028279
28280 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028281 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028282
28283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028284 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028285 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028286 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28287 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028288}
28289
28290/**
28291 @brief Process Power Params Rsp function (called when a
28292 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028293
28294 @param pWDICtx: pointer to the WLAN DAL context
28295 pEventData: pointer to the event information structure
28296
Jeff Johnson295189b2012-06-20 16:38:30 -070028297 @see
28298 @return Result of the function call
28299*/
28300WDI_Status
28301WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028302(
Jeff Johnson295189b2012-06-20 16:38:30 -070028303 WDI_ControlBlockType* pWDICtx,
28304 WDI_EventInfoType* pEventData
28305)
28306{
28307 WDI_Status wdiStatus;
28308 eHalStatus halStatus;
28309 WDI_SetPowerParamsCb wdiPowerParamsCb;
28310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28311
28312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028313 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028314 -------------------------------------------------------------------------*/
28315 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28316 ( NULL == pEventData->pEventData ))
28317 {
28318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028319 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028322 }
28323
Jeff Johnsone7245742012-09-05 17:12:55 -070028324 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028325
28326 /*-------------------------------------------------------------------------
28327 Extract response and send it to UMAC
28328 -------------------------------------------------------------------------*/
28329 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028330 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028331
28332 /*Notify UMAC*/
28333 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28334
Jeff Johnsone7245742012-09-05 17:12:55 -070028335 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028336}/*WDI_ProcessSetPowerParamsRsp*/
28337
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028338/**
28339 @brief WDI_dhcpStartInd
28340 Host will send an event to the FW when DHCP is initiated
28341
28342 @param
28343 WDI_DHCPInd: DHCP Indication
28344 @see
28345 @return Result of the function call
28346*/
28347WDI_Status
28348WDI_dhcpStartInd
28349(
28350 WDI_DHCPInd *wdiDHCPInd
28351)
28352{
28353 WDI_EventInfoType wdiEventData;
28354
28355 /*------------------------------------------------------------------------
28356 Sanity Check
28357 ------------------------------------------------------------------------*/
28358 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28359 {
28360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28361 "WDI API call before module is initialized - Fail request");
28362
28363 return WDI_STATUS_E_NOT_ALLOWED;
28364 }
28365
28366 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28367 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028368 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028369 wdiEventData.pCBfnc = NULL;
28370 wdiEventData.pUserData = NULL;
28371
28372 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28373}
28374
28375
28376/**
28377 @brief WDI_dhcpStopInd
28378 Host will send an event to the FW when DHCP is completed
28379
28380 @param
28381 WDI_DHCPInd: DHCP Indication
28382 @see
28383 @return Result of the function call
28384*/
28385WDI_Status
28386WDI_dhcpStopInd
28387(
28388 WDI_DHCPInd *wdiDHCPInd
28389)
28390{
28391 WDI_EventInfoType wdiEventData;
28392
28393 /*------------------------------------------------------------------------
28394 Sanity Check
28395 ------------------------------------------------------------------------*/
28396 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28397 {
28398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28399 "WDI API call before module is initialized - Fail request");
28400
28401 return WDI_STATUS_E_NOT_ALLOWED;
28402 }
28403
28404 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28405 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028406 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028407 wdiEventData.pCBfnc = NULL;
28408 wdiEventData.pUserData = NULL;
28409
28410 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28411}
28412
28413
28414/**
28415 @brief Process DHCP Start Indication message and post it to HAL
28416
28417 @param pWDICtx: pointer to the WLAN DAL context
28418 pEventData: pointer to the event information structure
28419
28420 @see
28421 @return Result of the function call
28422*/
28423WDI_Status
28424WDI_ProcessDHCPStartInd
28425(
28426 WDI_ControlBlockType* pWDICtx,
28427 WDI_EventInfoType* pEventData
28428)
28429{
28430 wpt_uint8* pSendBuffer = NULL;
28431 wpt_uint16 usDataOffset = 0;
28432 wpt_uint16 usSendSize = 0;
28433 wpt_uint16 usLen = 0;
28434 WDI_DHCPInd* pwdiDHCPInd = NULL;
28435 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028436 WDI_Status wdiStatus;
28437
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028438
28439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28440
28441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28442 "%s", __func__);
28443
28444 /*-------------------------------------------------------------------------
28445 Sanity check
28446 -------------------------------------------------------------------------*/
28447 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28448 {
28449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28450 "%s: Invalid parameters", __func__);
28451 WDI_ASSERT(0);
28452 return WDI_STATUS_E_FAILURE;
28453 }
28454 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28455 /*-----------------------------------------------------------------------
28456 Get message buffer
28457 -----------------------------------------------------------------------*/
28458
28459 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28460 WDI_DHCP_START_IND,
28461 sizeof(tDHCPInfo),
28462 &pSendBuffer, &usDataOffset, &usSendSize))||
28463 ( usSendSize < (usDataOffset + usLen )))
28464 {
28465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28466 "Unable to get send buffer in DHCP Start req %p ",
28467 pEventData);
28468 WDI_ASSERT(0);
28469 return WDI_STATUS_E_FAILURE;
28470 }
28471
Sandeep Puligillaee789512014-02-13 19:14:52 +053028472 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028473 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28474 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28475 WDI_MAC_ADDR_LEN);
28476
28477 pWDICtx->pReqStatusUserData = NULL;
28478 pWDICtx->pfncRspCB = NULL;
28479
28480 /*-------------------------------------------------------------------------
28481 Send DHCP Start Indication to HAL
28482 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028483 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28484 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028485}/*WDI_ProcessDHCPStartInd*/
28486
28487/**
28488 @brief Process DHCP Stop indication message and post it to HAL
28489
28490 @param pWDICtx: pointer to the WLAN DAL context
28491 pEventData: pointer to the event information structure
28492
28493 @see
28494 @return Result of the function call
28495*/
28496WDI_Status
28497WDI_ProcessDHCPStopInd
28498(
28499 WDI_ControlBlockType* pWDICtx,
28500 WDI_EventInfoType* pEventData
28501)
28502{
28503 wpt_uint8* pSendBuffer = NULL;
28504 wpt_uint16 usDataOffset = 0;
28505 wpt_uint16 usSendSize = 0;
28506 wpt_uint16 usLen = 0;
28507 WDI_DHCPInd* pwdiDHCPInd = NULL;
28508 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028509 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028510
28511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28512
28513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28514 "%s", __func__);
28515
28516 /*-------------------------------------------------------------------------
28517 Sanity check
28518 -------------------------------------------------------------------------*/
28519
28520 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28521 {
28522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28523 "%s: Invalid parameters", __func__);
28524 WDI_ASSERT(0);
28525 return WDI_STATUS_E_FAILURE;
28526 }
28527 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28528 /*-----------------------------------------------------------------------
28529 Get message buffer
28530 -----------------------------------------------------------------------*/
28531
28532 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28533 WDI_DHCP_STOP_IND,
28534 sizeof(tDHCPInfo),
28535 &pSendBuffer, &usDataOffset, &usSendSize))||
28536 ( usSendSize < (usDataOffset + usLen )))
28537 {
28538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28539 "Unable to get send buffer in DHCP Start req %p ",
28540 pEventData);
28541 WDI_ASSERT(0);
28542 return WDI_STATUS_E_FAILURE;
28543 }
28544
Sandeep Puligillaee789512014-02-13 19:14:52 +053028545 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028546 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28547 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28548 WDI_MAC_ADDR_LEN);
28549
28550 pWDICtx->pReqStatusUserData = NULL;
28551 pWDICtx->pfncRspCB = NULL;
28552 /*-------------------------------------------------------------------------
28553 Send DHCP Stop indication to HAL
28554 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028555 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28556 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028557
28558}/*WDI_ProcessDHCPStopInd*/
28559
28560
Jeff Johnson295189b2012-06-20 16:38:30 -070028561#ifdef WLAN_FEATURE_GTK_OFFLOAD
28562/**
28563 @brief WDI_GTKOffloadReq will be called when the upper MAC
28564 wants to set GTK Rekey Counter while in power save. Upon
28565 the call of this API the WLAN DAL will pack and send a
28566 HAL GTK offload request message to the lower RIVA
28567 sub-system if DAL is in state STARTED.
28568
28569 In state BUSY this request will be queued. Request won't
28570 be allowed in any other state.
28571
28572 WDI_PostAssocReq must have been called.
28573
28574 @param pwdiGtkOffloadParams: the GTK offload as specified
28575 by the Device Interface
28576
28577 wdiGtkOffloadCb: callback for passing back the response
28578 of the GTK offload operation received from the device
28579
28580 pUserData: user data will be passed back with the
28581 callback
28582
28583 @see WDI_PostAssocReq
28584 @return Result of the function call
28585*/
28586WDI_Status
28587WDI_GTKOffloadReq
28588(
28589 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28590 WDI_GtkOffloadCb wdiGtkOffloadCb,
28591 void* pUserData
28592)
28593{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028594 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28596
28597 /*------------------------------------------------------------------------
28598 Sanity Check
28599 ------------------------------------------------------------------------*/
28600 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28601 {
28602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28603 "WDI API call before module is initialized - Fail request");
28604
28605 return WDI_STATUS_E_NOT_ALLOWED;
28606 }
28607
28608 /*------------------------------------------------------------------------
28609 Fill in Event data and post to the Main FSM
28610 ------------------------------------------------------------------------*/
28611 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28612 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028613 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028614 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28615 wdiEventData.pUserData = pUserData;
28616
28617 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28618}
28619
28620
28621/**
28622 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28623 MAC wants to get GTK Rekey Counter while in power save.
28624 Upon the call of this API the WLAN DAL will pack and
28625 send a HAL GTK offload request message to the lower RIVA
28626 sub-system if DAL is in state STARTED.
28627
28628 In state BUSY this request will be queued. Request won't
28629 be allowed in any other state.
28630
28631 WDI_PostAssocReq must have been called.
28632
28633 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28634 Information Message as specified by the
28635 Device Interface
28636
28637 wdiGtkOffloadGetInfoCb: callback for passing back the
28638 response of the GTK offload operation received from the
28639 device
28640
28641 pUserData: user data will be passed back with the
28642 callback
28643
28644 @see WDI_PostAssocReq
28645 @return Result of the function call
28646*/
28647WDI_Status
28648WDI_GTKOffloadGetInfoReq
28649(
28650 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28651 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28652 void* pUserData
28653)
28654{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028655 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28657
28658 /*------------------------------------------------------------------------
28659 Sanity Check
28660 ------------------------------------------------------------------------*/
28661 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28662 {
28663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28664 "WDI API call before module is initialized - Fail request");
28665
28666 return WDI_STATUS_E_NOT_ALLOWED;
28667 }
28668
28669 /*------------------------------------------------------------------------
28670 Fill in Event data and post to the Main FSM
28671 ------------------------------------------------------------------------*/
28672 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28673 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28674 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28675 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28676 wdiEventData.pUserData = pUserData;
28677
28678 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28679}
28680
28681
28682/**
28683 @brief Process set GTK Offload Request function
28684
28685 @param pWDICtx: pointer to the WLAN DAL context
28686 pEventData: pointer to the event information structure
28687
28688 @see
28689 @return Result of the function call
28690*/
28691WDI_Status
28692WDI_ProcessGTKOffloadReq
28693(
28694 WDI_ControlBlockType* pWDICtx,
28695 WDI_EventInfoType* pEventData
28696)
28697{
28698 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28699 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28700 wpt_uint8* pSendBuffer = NULL;
28701 wpt_uint16 usDataOffset = 0;
28702 wpt_uint16 usSendSize = 0;
28703 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028704 wpt_uint8 ucCurrentSessionId = 0;
28705 WDI_BSSSessionType* pBSSSes = NULL;
28706
Jeff Johnson295189b2012-06-20 16:38:30 -070028707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28708
28709 /*-------------------------------------------------------------------------
28710 Sanity check
28711 -------------------------------------------------------------------------*/
28712 if (( NULL == pEventData ) ||
28713 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28714 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28715 {
28716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028717 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028718 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028719 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028720 }
28721
28722 /*-----------------------------------------------------------------------
28723 Get message buffer
28724 -----------------------------------------------------------------------*/
28725 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28726 sizeof(gtkOffloadReqParams),
28727 &pSendBuffer, &usDataOffset, &usSendSize))||
28728 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28729 {
28730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028731 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028732 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28733 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028734 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028735 }
28736
28737 //
28738 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28739 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028740 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28741 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28742 &pBSSSes);
28743 if ( NULL == pBSSSes )
28744 {
28745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028746 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028747 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028748 }
28749
28750 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28751
Jeff Johnson295189b2012-06-20 16:38:30 -070028752 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28753 // Copy KCK
28754 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28755 // Copy KEK
28756 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28757 // Copy KeyReplayCounter
28758 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28759
28760 wpalMemoryCopy( pSendBuffer+usDataOffset,
28761 &gtkOffloadReqParams,
28762 sizeof(gtkOffloadReqParams));
28763
28764 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28765 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28766
28767 /*-------------------------------------------------------------------------
28768 Send Get STA Request to HAL
28769 -------------------------------------------------------------------------*/
28770 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28771 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028772
28773fail:
28774 // Release the message buffer so we don't leak
28775 wpalMemoryFree(pSendBuffer);
28776
28777failRequest:
28778 //WDA should have failure check to avoid the memory leak
28779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028780}
28781
28782
28783/**
28784 @brief Process GTK Offload Get Information Request function
28785
28786 @param pWDICtx: pointer to the WLAN DAL context
28787 pEventData: pointer to the event information structure
28788
28789 @see
28790 @return Result of the function call
28791*/
28792WDI_Status
28793WDI_ProcessGTKOffloadGetInfoReq
28794(
28795 WDI_ControlBlockType* pWDICtx,
28796 WDI_EventInfoType* pEventData
28797)
28798{
28799 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28800 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28801 wpt_uint8* pSendBuffer = NULL;
28802 wpt_uint16 usDataOffset = 0;
28803 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028804 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28805 wpt_uint8 ucCurrentSessionId = 0;
28806 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028807
28808 /*-------------------------------------------------------------------------
28809 Sanity check
28810 -------------------------------------------------------------------------*/
28811 if (( NULL == pEventData ) ||
28812 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28813 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28814 {
28815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028817 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028818 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028819 }
28820
28821 /*-----------------------------------------------------------------------
28822 Get message buffer
28823 -----------------------------------------------------------------------*/
28824 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028825 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028826 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028827 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028828 {
28829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028830 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028831 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28832 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028833 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028834 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028835 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28836 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28837 &pBSSSes);
28838 if ( NULL == pBSSSes )
28839 {
28840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028841 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028842 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028843 }
28844 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028845
28846 //
28847 // Don't need to fill send buffer other than header
28848 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028849 wpalMemoryCopy( pSendBuffer+usDataOffset,
28850 &halGtkOffloadGetInfoReqParams,
28851 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028852
28853 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28854 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28855
28856 /*-------------------------------------------------------------------------
28857 Send Get STA Request to HAL
28858 -------------------------------------------------------------------------*/
28859 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28860 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028861fail:
28862 // Release the message buffer so we don't leak
28863 wpalMemoryFree(pSendBuffer);
28864
28865failRequest:
28866 //WDA should have failure check to avoid the memory leak
28867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028868}
28869
28870/**
28871 @brief Process host offload Rsp function (called when a
28872 response is being received over the bus from HAL)
28873
28874 @param pWDICtx: pointer to the WLAN DAL context
28875 pEventData: pointer to the event information structure
28876
28877 @see
28878 @return Result of the function call
28879*/
28880WDI_Status
28881WDI_ProcessGtkOffloadRsp
28882(
28883 WDI_ControlBlockType* pWDICtx,
28884 WDI_EventInfoType* pEventData
28885)
28886{
Jeff Johnson295189b2012-06-20 16:38:30 -070028887 eHalStatus halStatus;
28888 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028889 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28890 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028891
28892 /*-------------------------------------------------------------------------
28893 Sanity check
28894 -------------------------------------------------------------------------*/
28895 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28896 ( NULL == pEventData->pEventData))
28897 {
28898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028899 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028900 WDI_ASSERT(0);
28901 return WDI_STATUS_E_FAILURE;
28902 }
28903
Wilson Yang00256342013-10-10 23:13:38 -070028904 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28905
Jeff Johnson295189b2012-06-20 16:38:30 -070028906 /*-------------------------------------------------------------------------
28907 Extract response and send it to UMAC
28908 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028909 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28910 {
28911 wpalMemoryCopy( &halGtkOffloadRspParams,
28912 pEventData->pEventData,
28913 sizeof(halGtkOffloadRspParams));
28914
28915 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028916 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028917 wdiGtkOffloadRsparams.bssIdx =
28918 halGtkOffloadRspParams.bssIdx;
28919 }
28920 else
28921 {
28922 halStatus = *((eHalStatus*)pEventData->pEventData);
28923 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28924 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028925
28926 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028927 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028928
28929 return WDI_STATUS_SUCCESS;
28930}
28931
28932/**
28933 @brief Process GTK Offload Get Information Response function
28934
28935 @param pWDICtx: pointer to the WLAN DAL context
28936 pEventData: pointer to the event information structure
28937
28938 @see
28939 @return Result of the function call
28940*/
28941WDI_Status
28942WDI_ProcessGTKOffloadGetInfoRsp
28943(
28944 WDI_ControlBlockType* pWDICtx,
28945 WDI_EventInfoType* pEventData
28946)
28947{
Jeff Johnson295189b2012-06-20 16:38:30 -070028948 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028949 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028950 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28951 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028952 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028953
Jeff Johnson295189b2012-06-20 16:38:30 -070028954
28955 /*-------------------------------------------------------------------------
28956 Sanity check
28957 -------------------------------------------------------------------------*/
28958 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28959 ( NULL == pEventData->pEventData ))
28960 {
28961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028962 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028963 WDI_ASSERT(0);
28964 return WDI_STATUS_E_FAILURE;
28965 }
28966
Wilson Yang00256342013-10-10 23:13:38 -070028967 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28968
28969 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028970 Extract response and send it to UMAC
28971 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028972 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28973 {
28974 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28975 pEventData->pEventData,
28976 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028977
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028978 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028979 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028980 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28981 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28982 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28983 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28984 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28985 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28986 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28987 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028988
28989 wpalMutexAcquire(&pWDICtx->wptMutex);
28990 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28991 &pBSSSes);
28992
28993 if ( NULL == pBSSSes )
28994 {
28995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28996 "Association sequence for this BSS does not exist or "
28997 "association no longer in progress - mysterious HAL response");
28998 wpalMutexRelease(&pWDICtx->wptMutex);
28999 return WDI_STATUS_E_NOT_ALLOWED;
29000 }
29001
29002 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29003 sizeof (wpt_macAddr));
29004 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029005 }
29006 else
29007 {
29008 halStatus = *((eHalStatus*)pEventData->pEventData);
29009 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29010 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029011 /*Notify UMAC*/
29012 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29013 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029014 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029015
29016 return WDI_STATUS_SUCCESS;
29017}
29018#endif // WLAN_FEATURE_GTK_OFFLOAD
29019
29020#ifdef WLAN_WAKEUP_EVENTS
29021WDI_Status
29022WDI_ProcessWakeReasonInd
29023(
29024 WDI_ControlBlockType* pWDICtx,
29025 WDI_EventInfoType* pEventData
29026)
29027{
29028 WDI_LowLevelIndType *pWdiInd;
29029 tpWakeReasonParams pWakeReasonParams;
29030 wpt_uint32 allocSize = 0;
29031
29032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029033 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029034
29035 /*-------------------------------------------------------------------------
29036 Sanity check
29037 -------------------------------------------------------------------------*/
29038 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29039 ( NULL == pEventData->pEventData ))
29040 {
29041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029043 WDI_ASSERT( 0 );
29044 return WDI_STATUS_E_FAILURE;
29045 }
29046
29047 /*-------------------------------------------------------------------------
29048 Extract indication and send it to UMAC
29049 -------------------------------------------------------------------------*/
29050 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
29051
29052 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
29053
29054 //Allocate memory for WDI_WakeReasonIndType structure
29055 pWdiInd = wpalMemoryAllocate(allocSize) ;
29056
29057 if(NULL == pWdiInd)
29058 {
29059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029060 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029061 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029062 WDI_ASSERT(0);
29063 return WDI_STATUS_E_FAILURE;
29064 }
29065
29066 wpalMemoryZero(pWdiInd, allocSize);
29067
29068 /* Fill in the indication parameters*/
29069 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29070 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29071 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29072 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29073 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29074 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29075 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29076 &(pWakeReasonParams->aDataStart[0]),
29077 pWakeReasonParams->ulStoredDataLen);
29078
ltimariub77f24b2013-01-24 18:54:33 -080029079
29080 if ( pWDICtx->wdiLowLevelIndCB )
29081 {
29082 /*Notify UMAC*/
29083 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29084 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029085
29086 //Free memory allocated for WDI_WakeReasonIndType structure
29087 wpalMemoryFree(pWdiInd);
29088
29089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029090 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029091
29092 return WDI_STATUS_SUCCESS;
29093}
29094#endif // WLAN_WAKEUP_EVENTS
29095
29096void WDI_GetWcnssCompiledApiVersion
29097(
29098 WDI_WlanVersionType *pWcnssApiVersion
29099)
29100{
29101 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29102 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29103 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29104 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29105}
29106
29107/**
29108 @brief Process Set TM Level Rsp function (called when a
29109 response is being received over the bus from HAL)
29110
29111 @param pWDICtx: pointer to the WLAN DAL context
29112 pEventData: pointer to the event information structure
29113
29114 @see
29115 @return Result of the function call
29116*/
29117WDI_Status
29118WDI_ProcessSetTmLevelRsp
29119(
29120 WDI_ControlBlockType* pWDICtx,
29121 WDI_EventInfoType* pEventData
29122)
29123{
29124 WDI_Status wdiStatus;
29125 eHalStatus halStatus;
29126 WDI_SetTmLevelCb wdiSetTmLevelCb;
29127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29128
29129 /*-------------------------------------------------------------------------
29130 Sanity check
29131 -------------------------------------------------------------------------*/
29132 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29133 ( NULL == pEventData->pEventData ))
29134 {
29135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029136 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029137 WDI_ASSERT(0);
29138 return WDI_STATUS_E_FAILURE;
29139 }
29140
29141 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29142
29143 /*-------------------------------------------------------------------------
29144 Extract response and send it to UMAC
29145 -------------------------------------------------------------------------*/
29146 halStatus = *((eHalStatus*)pEventData->pEventData);
29147 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29148
29149 /*Notify UMAC*/
29150 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29151
29152 return WDI_STATUS_SUCCESS;
29153}/*WDI_ProcessSetTmLevelRsp*/
29154
29155/**
29156 @brief Process Set Thermal Mitigation level Changed request
29157
29158 @param pWDICtx: pointer to the WLAN DAL context
29159 pEventData: pointer to the event information structure
29160
29161 @see
29162 @return Result of the function call
29163*/
29164WDI_Status
29165WDI_ProcessSetTmLevelReq
29166(
29167 WDI_ControlBlockType* pWDICtx,
29168 WDI_EventInfoType* pEventData
29169)
29170{
29171 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29172 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29173 wpt_uint8* pSendBuffer = NULL;
29174 wpt_uint16 usDataOffset = 0;
29175 wpt_uint16 usSendSize = 0;
29176 tSetThermalMitgationType halTmMsg;
29177
29178 /*-------------------------------------------------------------------------
29179 Sanity check
29180 -------------------------------------------------------------------------*/
29181 if (( NULL == pEventData ) ||
29182 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29183 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29184 {
29185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029187 WDI_ASSERT(0);
29188 return WDI_STATUS_E_FAILURE;
29189 }
29190
29191 /*-----------------------------------------------------------------------
29192 Get message buffer
29193 -----------------------------------------------------------------------*/
29194 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29195 sizeof(halTmMsg),
29196 &pSendBuffer, &usDataOffset, &usSendSize))||
29197 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29198 {
29199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029200 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029201 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29202 WDI_ASSERT(0);
29203 return WDI_STATUS_E_FAILURE;
29204 }
29205
29206 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29207 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29208
29209 wpalMemoryCopy( pSendBuffer+usDataOffset,
29210 &halTmMsg,
29211 sizeof(halTmMsg));
29212
29213 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29214 pWDICtx->pfncRspCB = NULL;
29215 /*-------------------------------------------------------------------------
29216 Send Get STA Request to HAL
29217 -------------------------------------------------------------------------*/
29218 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29219 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29220}
29221
29222/* Fill the value from the global features enabled array to the global capabilities
29223 * bitmap struct
29224 */
29225static void
29226FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29227{
29228 wpt_int8 i;
29229 for (i=0; i<len; i++)
29230 {
29231 setFeatCaps(fCaps, enabledFeat[i]);
29232 }
29233}
29234
29235/**
29236 @brief WDI_featureCapsExchangeReq
29237 Post feature capability bitmap exchange event.
29238 Host will send its own capability to FW in this req and
29239 expect FW to send its capability back as a bitmap in Response
29240
29241 @param
29242
29243 wdiFeatureCapsExchangeCb: callback called on getting the response.
29244 It is kept to mantain similarity between WDI reqs and if needed, can
29245 be used in future. Currently, It is set to NULL
29246
29247 pUserData: user data will be passed back with the
29248 callback
29249
29250 @see
29251 @return Result of the function call
29252*/
29253WDI_Status
29254WDI_featureCapsExchangeReq
29255(
29256 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29257 void* pUserData
29258)
29259{
29260 WDI_EventInfoType wdiEventData;
29261 wpt_int32 fCapsStructSize;
29262
29263 /*------------------------------------------------------------------------
29264 Sanity Check
29265 ------------------------------------------------------------------------*/
29266 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29267 {
29268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29269 "WDI API call before module is initialized - Fail request");
29270
29271 return WDI_STATUS_E_NOT_ALLOWED;
29272 }
29273
29274 /* Allocate memory separately for global variable carrying FW caps */
29275 fCapsStructSize = sizeof(tWlanFeatCaps);
29276 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29277 if ( NULL == gpHostWlanFeatCaps )
29278 {
29279 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029280 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029281 WDI_ASSERT(0);
29282 return WDI_STATUS_MEM_FAILURE;
29283 }
29284
29285 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29286
29287 /*------------------------------------------------------------------------
29288 Fill in Event data and post to the Main FSM
29289 ------------------------------------------------------------------------*/
29290 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29291 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029293 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029294 gpHostWlanFeatCaps->featCaps[0],
29295 gpHostWlanFeatCaps->featCaps[1],
29296 gpHostWlanFeatCaps->featCaps[2],
29297 gpHostWlanFeatCaps->featCaps[3]
29298 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
29300 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029301 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29302 wdiEventData.pEventData = gpHostWlanFeatCaps;
29303 wdiEventData.uEventDataSize = fCapsStructSize;
29304 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29305 wdiEventData.pUserData = pUserData;
29306
29307 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29308}
29309
29310/**
Yathish9f22e662012-12-10 14:21:35 -080029311 @brief Disable Active mode offload in Host
29312
29313 @param void
29314 @see
29315 @return void
29316*/
29317void
29318WDI_disableCapablityFeature(wpt_uint8 feature_index)
29319{
29320 supportEnabledFeatures[feature_index] = 0;
29321 return;
29322}
29323
29324/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029325 @brief Process Host-FW Capability Exchange Request function
29326
29327 @param pWDICtx: pointer to the WLAN DAL context
29328 pEventData: pointer to the event information structure
29329
29330 @see
29331 @return Result of the function call
29332*/
29333WDI_Status
29334WDI_ProcessFeatureCapsExchangeReq
29335(
29336 WDI_ControlBlockType* pWDICtx,
29337 WDI_EventInfoType* pEventData
29338)
29339{
29340 wpt_uint8* pSendBuffer = NULL;
29341 wpt_uint16 usDataOffset = 0;
29342 wpt_uint16 usSendSize = 0;
29343 wpt_uint16 usLen = 0;
29344
29345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29346
29347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029348 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029349
29350 /*-------------------------------------------------------------------------
29351 Sanity check
29352 -------------------------------------------------------------------------*/
29353 /* Call back function is NULL since not required for cap exchange req */
29354 if (( NULL == pEventData ) ||
29355 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29356 {
29357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029358 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029359 WDI_ASSERT(0);
29360 return WDI_STATUS_E_FAILURE;
29361 }
29362
29363 /*-----------------------------------------------------------------------
29364 Get message buffer
29365 -----------------------------------------------------------------------*/
29366 usLen = sizeof(tWlanFeatCaps);
29367
29368 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29369 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29370 usLen,
29371 &pSendBuffer, &usDataOffset, &usSendSize))||
29372 ( usSendSize < (usDataOffset + usLen )))
29373 {
29374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029375 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029376 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29377 WDI_ASSERT(0);
29378 return WDI_STATUS_E_FAILURE;
29379 }
29380
29381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029382 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029383 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29384 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29385 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29386 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29387 );
29388
29389 /* Copy host caps after the offset in the send buffer */
29390 wpalMemoryCopy( pSendBuffer+usDataOffset,
29391 (tWlanFeatCaps *)pEventData->pEventData,
29392 usLen);
29393
29394 /*-------------------------------------------------------------------------
29395 Send Start Request to HAL
29396 -------------------------------------------------------------------------*/
29397 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29398 (WDI_StartRspCb)pEventData->pCBfnc,
29399 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29400
29401}/*WDI_ProcessFeatureCapsExchangeReq*/
29402
29403/**
29404 @brief Process Host-FW Capability Exchange Response function
29405
29406 @param pWDICtx: pointer to the WLAN DAL context
29407 pEventData: pointer to the event information structure
29408
29409 @see
29410 @return Result of the function call
29411*/
29412WDI_Status
29413WDI_ProcessFeatureCapsExchangeRsp
29414(
29415 WDI_ControlBlockType* pWDICtx,
29416 WDI_EventInfoType* pEventData
29417)
29418{
29419 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29420 wpt_int32 fCapsStructSize;
29421 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29422
29423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029424 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029425
29426 /*-------------------------------------------------------------------------
29427 Sanity check
29428 -------------------------------------------------------------------------*/
29429 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29430 ( NULL == pEventData->pEventData ))
29431 {
29432 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029435 WDI_ASSERT(0);
29436 return WDI_STATUS_E_FAILURE;
29437 }
29438
29439 /* Allocate memory separately for global variable carrying FW caps */
29440 fCapsStructSize = sizeof(tWlanFeatCaps);
29441 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29442 if ( NULL == gpFwWlanFeatCaps )
29443 {
29444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029445 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029446 WDI_ASSERT(0);
29447 return WDI_STATUS_MEM_FAILURE;
29448 }
29449
29450 /*-------------------------------------------------------------------------
29451 Unpack HAL Response Message - the header was already extracted by the
29452 main Response Handling procedure
29453 -------------------------------------------------------------------------*/
29454 /*-------------------------------------------------------------------------
29455 Extract response and send it to UMAC
29456 -------------------------------------------------------------------------*/
29457
29458 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29459 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029461 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029462 gpFwWlanFeatCaps->featCaps[0],
29463 gpFwWlanFeatCaps->featCaps[1],
29464 gpFwWlanFeatCaps->featCaps[2],
29465 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029466 );
29467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
29468 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029469 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29470
29471 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29472 if (wdiFeatureCapsExchangeCb != NULL)
29473 wdiFeatureCapsExchangeCb(NULL, NULL);
29474
29475 return WDI_STATUS_SUCCESS;
29476}
29477
Mohit Khanna4a70d262012-09-11 16:30:12 -070029478#ifdef WLAN_FEATURE_11AC
29479WDI_Status
29480WDI_ProcessUpdateVHTOpModeRsp
29481(
29482 WDI_ControlBlockType* pWDICtx,
29483 WDI_EventInfoType* pEventData
29484)
29485{
29486 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29487 WDI_Status wdiStatus;
29488 eHalStatus halStatus;
29489
29490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29491
29492 /*-------------------------------------------------------------------------
29493 Sanity check
29494 -------------------------------------------------------------------------*/
29495 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29496 ( NULL == pEventData->pEventData))
29497 {
29498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029499 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029500 WDI_ASSERT(0);
29501 return WDI_STATUS_E_FAILURE;
29502 }
29503 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29504
29505 /*-------------------------------------------------------------------------
29506 Extract response and send it to UMAC
29507 -------------------------------------------------------------------------*/
29508 halStatus = *((eHalStatus*)pEventData->pEventData);
29509 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29510
29511 /*Notify UMAC*/
29512 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29513
29514 return WDI_STATUS_SUCCESS;
29515}
29516#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029517/**
29518 @brief WDI_getHostWlanFeatCaps
29519 WDI API that returns whether the feature passed to it as enum value in
29520 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29521 variable storing host capability bitmap to find this. This can be used by
29522 other moduels to decide certain things like call different APIs based on
29523 whether a particular feature is supported.
29524
29525 @param
29526
29527 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29528
29529 @see
29530 @return
29531 0 - if the feature is NOT supported in host
29532 any non-zero value - if the feature is SUPPORTED in host.
29533*/
29534wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29535{
29536 wpt_uint8 featSupported = 0;
29537 if (gpHostWlanFeatCaps != NULL)
29538 {
29539 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29540 }
29541 else
29542 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029544 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029545 }
29546 return featSupported;
29547}
29548
29549/**
29550 @brief WDI_getFwWlanFeatCaps
29551 WDI API that returns whether the feature passed to it as enum value in
29552 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29553 variable storing host capability bitmap to find this. This can be used by
29554 other moduels to decide certain things like call different APIs based on
29555 whether a particular feature is supported.
29556
29557 @param
29558
29559 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29560 in wlan_hal_msg.h.
29561
29562 @see
29563 @return
29564 0 - if the feature is NOT supported in FW
29565 any non-zero value - if the feature is SUPPORTED in FW.
29566*/
29567wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29568{
29569 wpt_uint8 featSupported = 0;
29570 if (gpFwWlanFeatCaps != NULL)
29571 {
29572 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29573 }
29574 else
29575 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029576 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029577 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029578 }
29579 return featSupported;
29580}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029581
Katya Nigamf0511f62015-05-05 16:40:57 +053029582wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
29583{
29584 /* 5gHz Channel */
29585 if( channel >= 34 && channel <= 165 )
29586 {
29587 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
29588 {
29589 if ( channel== 36 || channel == 52 || channel == 100 ||
29590 channel == 116 || channel == 149 )
29591 {
29592 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
29593 }
29594 else if ( channel == 40 || channel == 56 || channel == 104 ||
29595 channel == 120 || channel == 153 )
29596 {
29597 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
29598 }
29599 else if ( channel == 44 || channel == 60 || channel == 108 ||
29600 channel == 124 || channel == 157 )
29601 {
29602 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
29603 }
29604 else if ( channel == 48 || channel == 64 || channel == 112 ||
29605 channel == 128 || channel == 144 || channel == 161 )
29606 {
29607 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
29608 }
29609 else if ( channel == 165 )
29610 {
29611 return PHY_SINGLE_CHANNEL_CENTERED;
29612 }
29613 }
29614
29615 else
29616 {
29617 if ( channel== 40 || channel == 48 || channel == 56 ||
29618 channel == 64 || channel == 104 || channel == 112 ||
29619 channel == 120 || channel == 128 || channel == 136 ||
29620 channel == 144 || channel == 153 || channel == 161 )
29621 {
29622 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29623 }
29624 else if ( channel== 36 || channel == 44 || channel == 52 ||
29625 channel == 60 || channel == 100 || channel == 108 ||
29626 channel == 116 || channel == 124 || channel == 132 ||
29627 channel == 140 || channel == 149 || channel == 157 )
29628 {
29629 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29630 }
29631 else if ( channel == 165 )
29632 {
29633 return PHY_SINGLE_CHANNEL_CENTERED;
29634 }
29635 }
29636 }
29637
29638 /* 2.4Ghz Channel */
29639 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
29640 {
29641 if (channel >= 1 && channel <= 7)
29642 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29643 else if (channel >= 8 && channel <= 13)
29644 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29645 else if (channel ==14)
29646 return PHY_SINGLE_CHANNEL_CENTERED;
29647 }
29648 return PHY_SINGLE_CHANNEL_CENTERED;
29649}
29650
Mohit Khanna4a70d262012-09-11 16:30:12 -070029651#ifdef WLAN_FEATURE_11AC
29652WDI_Status
29653WDI_ProcessUpdateVHTOpModeReq
29654(
29655 WDI_ControlBlockType* pWDICtx,
29656 WDI_EventInfoType* pEventData
29657)
29658{
29659 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29660 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29661 wpt_uint8* pSendBuffer = NULL;
29662 wpt_uint16 usDataOffset = 0;
29663 wpt_uint16 usSendSize = 0;
29664
29665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29666
29667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029668 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029669
29670 /*-------------------------------------------------------------------------
29671 Sanity check
29672 -------------------------------------------------------------------------*/
29673 if (( NULL == pEventData ) ||
29674 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29675 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29676 {
29677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029678 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029679 WDI_ASSERT(0);
29680 return WDI_STATUS_E_FAILURE;
29681 }
29682
29683 /*-----------------------------------------------------------------------
29684 Get message buffer
29685 -----------------------------------------------------------------------*/
29686 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29687 sizeof(WDI_UpdateVHTOpMode),
29688 &pSendBuffer, &usDataOffset, &usSendSize))||
29689 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29690 {
29691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29692 "Unable to get send buffer in update vht opMode req");
29693 WDI_ASSERT(0);
29694 return WDI_STATUS_E_FAILURE;
29695 }
29696
29697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029698 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029699
29700 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29701 sizeof(WDI_UpdateVHTOpMode));
29702
29703 /*-------------------------------------------------------------------------
29704 Send Start Request to HAL
29705 -------------------------------------------------------------------------*/
29706 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29707 wdiVHTOpModeCb,
29708 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29709
29710}
29711
29712WDI_Status
29713WDI_UpdateVHTOpModeReq
29714(
29715 WDI_UpdateVHTOpMode *pData,
29716 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29717 void* pUserData
29718)
29719{
29720 WDI_EventInfoType wdiEventData;
29721
29722 /*------------------------------------------------------------------------
29723 Sanity Check
29724 ------------------------------------------------------------------------*/
29725 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29726 {
29727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29728 "WDI API call before module is initialized - Fail request");
29729
29730 return WDI_STATUS_E_NOT_ALLOWED;
29731 }
29732
29733 /*------------------------------------------------------------------------
29734 Fill in Event data and post to the Main FSM
29735 ------------------------------------------------------------------------*/
29736 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29737 wdiEventData.pEventData = pData;
29738 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29739 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29740 wdiEventData.pUserData = pUserData;
29741
29742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029743 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029744
29745 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29746
29747}
29748#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029749
29750/**
29751 @brief WDI_TransportChannelDebug -
29752 Display DXE Channel debugging information
29753 User may request to display DXE channel snapshot
29754 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029755
Jeff Johnsonb88db982012-12-10 13:34:59 -080029756 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029757 @param debugFlags : Enable stall detect features
29758 defined by WPAL_DeviceDebugFlags
29759 These features may effect
29760 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029761 @see
29762 @return none
29763*/
29764void WDI_TransportChannelDebug
29765(
29766 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029767 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029768)
29769{
Mihir Shete40a55652014-03-02 14:14:47 +053029770 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029771 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029772}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029773/**
29774 @brief WDI_SsrTimerCB
29775 Callback function for SSR timer, if this is called then the graceful
29776 shutdown for Riva did not happen.
29777
29778 @param pUserData : user data to timer
29779
29780 @see
29781 @return none
29782*/
29783void
29784WDI_SsrTimerCB
29785(
29786 void *pUserData
29787)
29788{
29789 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29791
29792 if (NULL == pWDICtx )
29793 {
29794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029795 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029796 WDI_ASSERT(0);
29797 return;
29798 }
29799 wpalRivaSubystemRestart();
29800
29801 return;
29802
29803}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029804
29805/**
29806 @brief WDI_SetEnableSSR -
29807 This API is called to enable/disable SSR on WDI timeout.
29808
29809 @param enableSSR : enable/disable SSR
29810
29811 @see
29812 @return none
29813*/
29814void WDI_SetEnableSSR(wpt_boolean enableSSR)
29815{
29816 gWDICb.bEnableSSR = enableSSR;
29817}
Leo Chang9056f462013-08-01 19:21:11 -070029818
29819
29820#ifdef FEATURE_WLAN_LPHB
29821/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029822 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029823 This function will be invoked when FW detects low power
29824 heart beat failure
29825
29826 @param pWDICtx : wdi context
29827 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029828 @see
29829 @return Result of the function call
29830*/
29831WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029832WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029833(
29834 WDI_ControlBlockType* pWDICtx,
29835 WDI_EventInfoType* pEventData
29836)
29837{
29838 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029839 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29841
29842 /*-------------------------------------------------------------------------
29843 Sanity check
29844 -------------------------------------------------------------------------*/
29845 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29846 (NULL == pEventData->pEventData))
29847 {
29848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29849 "%s: Invalid parameters", __func__);
29850 WDI_ASSERT(0);
29851 return WDI_STATUS_E_FAILURE;
29852 }
29853
29854 /*-------------------------------------------------------------------------
29855 Extract indication and send it to UMAC
29856 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029857 wpalMemoryCopy(&lphbIndicationParam,
29858 pEventData->pEventData,
29859 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029860
Leo Changd9df8aa2013-09-26 13:32:26 -070029861 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029862 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029863 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029864 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029865 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029866 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029867 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029868 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029869 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029870 /*Notify UMAC*/
29871 if (pWDICtx->wdiLowLevelIndCB)
29872 {
29873 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29874 }
29875
29876 return WDI_STATUS_SUCCESS;
29877}
29878
29879/**
29880 @brief WDI_ProcessLphbCfgRsp -
29881 LPHB configuration response from FW
29882
29883 @param pWDICtx : wdi context
29884 pEventData : indication data
29885
29886 @see
29887 @return Result of the function call
29888*/
29889WDI_Status WDI_ProcessLphbCfgRsp
29890(
29891 WDI_ControlBlockType* pWDICtx,
29892 WDI_EventInfoType* pEventData
29893)
29894{
29895 WDI_Status wdiStatus;
29896 eHalStatus halStatus;
29897 WDI_LphbCfgCb wdiLphbCfgCb;
29898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29899
29900 /*-------------------------------------------------------------------------
29901 Sanity check
29902 -------------------------------------------------------------------------*/
29903 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29904 (NULL == pEventData->pEventData))
29905 {
29906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29907 "%s: Invalid parameters", __func__);
29908 WDI_ASSERT(0);
29909 return WDI_STATUS_E_FAILURE;
29910 }
29911
29912 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29913
29914 /*-------------------------------------------------------------------------
29915 Extract response and send it to UMAC
29916 -------------------------------------------------------------------------*/
29917 halStatus = *((eHalStatus*)pEventData->pEventData);
29918 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29919
29920 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29921 "LPHB Cfg Rsp Return status %d", wdiStatus);
29922 /*Notify UMAC*/
29923 if (NULL != wdiLphbCfgCb)
29924 {
29925 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29926 }
29927
29928 return WDI_STATUS_SUCCESS;
29929}
29930
29931/**
29932 @brief WDI_ProcessLPHBConfReq -
29933 LPHB configuration request to FW
29934
29935 @param pWDICtx : wdi context
29936 pEventData : indication data
29937
29938 @see
29939 @return none
29940*/
29941WDI_Status WDI_ProcessLPHBConfReq
29942(
29943 WDI_ControlBlockType* pWDICtx,
29944 WDI_EventInfoType* pEventData
29945)
29946{
29947 WDI_LPHBReq *pLphbReqParams;
29948 WDI_Status wdiStatus;
29949 wpt_uint8* pSendBuffer = NULL;
29950 wpt_uint16 usDataOffset = 0;
29951 wpt_uint16 usSendSize = 0;
29952 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29954
29955 /*-------------------------------------------------------------------------
29956 Sanity check
29957 -------------------------------------------------------------------------*/
29958 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29959 {
29960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29961 "%s: Invalid parameters in Suspend ind",__func__);
29962 WDI_ASSERT(0);
29963 return WDI_STATUS_E_FAILURE;
29964 }
29965
29966 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29967
29968 /*-----------------------------------------------------------------------
29969 Get message buffer
29970 -----------------------------------------------------------------------*/
29971 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29972 WDI_LPHB_CFG_REQ,
29973 sizeof(tHalLowPowerHeartBeatReqMsg),
29974 &pSendBuffer, &usDataOffset, &usSendSize))||
29975 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29976 {
29977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29978 "Unable to get send buffer in LPHB Ind ");
29979 WDI_ASSERT(0);
29980 return WDI_STATUS_E_FAILURE;
29981 }
29982
29983 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29984 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29985
29986 halLphbReqRarams->lowPowerHeartBeatCmdType =
29987 (tANI_U16)(++pLphbReqParams->cmd);
29988 switch ((tANI_U16)pLphbReqParams->cmd)
29989 {
29990 case WDI_LPHB_SET_EN_PARAMS_INDID:
29991 halLphbReqRarams->sessionIdx =
29992 pLphbReqParams->params.lphbEnableReq.session;
29993 halLphbReqRarams->options.control.heartBeatEnable =
29994 pLphbReqParams->params.lphbEnableReq.enable;
29995 halLphbReqRarams->options.control.heartBeatType =
29996 pLphbReqParams->params.lphbEnableReq.item;
29997 break;
29998
29999 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30000 halLphbReqRarams->sessionIdx =
30001 pLphbReqParams->params.lphbTcpParamReq.session;
30002 halLphbReqRarams->options.tcpParams.timeOutSec =
30003 pLphbReqParams->params.lphbTcpParamReq.timeout;
30004 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30005 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30006 sizeof(v_U32_t));
30007 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30008 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30009 sizeof(v_U32_t));
30010
30011 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30012 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30013 WDI_MAC_ADDR_LEN);
30014
30015 halLphbReqRarams->options.tcpParams.hostPort =
30016 pLphbReqParams->params.lphbTcpParamReq.src_port;
30017 halLphbReqRarams->options.tcpParams.destPort =
30018 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070030019 halLphbReqRarams->options.tcpParams.timePeriodSec =
30020 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
30021 halLphbReqRarams->options.tcpParams.tcpSn =
30022 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070030023 break;
30024
30025 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
30026 halLphbReqRarams->sessionIdx =
30027 pLphbReqParams->params.lphbTcpFilterReq.session;
30028 halLphbReqRarams->options.tcpUdpFilter.offset =
30029 pLphbReqParams->params.lphbTcpFilterReq.offset;
30030 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30031 pLphbReqParams->params.lphbTcpFilterReq.length;
30032 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30033 pLphbReqParams->params.lphbTcpFilterReq.filter,
30034 WDI_LPHB_FILTER_LEN);
30035 break;
30036
30037 case WDI_LPHB_SET_UDP_PARAMS_INDID:
30038 halLphbReqRarams->sessionIdx =
30039 pLphbReqParams->params.lphbUdpParamReq.session;
30040 halLphbReqRarams->options.udpParams.timeOutSec =
30041 pLphbReqParams->params.lphbUdpParamReq.timeout;
30042 halLphbReqRarams->options.udpParams.timePeriodSec =
30043 pLphbReqParams->params.lphbUdpParamReq.interval;
30044 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
30045 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
30046 sizeof(v_U32_t));
30047 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
30048 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
30049 sizeof(v_U32_t));
30050
30051 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
30052 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
30053 WDI_MAC_ADDR_LEN);
30054
30055 halLphbReqRarams->options.udpParams.hostPort =
30056 pLphbReqParams->params.lphbUdpParamReq.src_port;
30057 halLphbReqRarams->options.udpParams.destPort =
30058 pLphbReqParams->params.lphbUdpParamReq.dst_port;
30059 break;
30060
30061 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
30062 halLphbReqRarams->sessionIdx =
30063 pLphbReqParams->params.lphbUdpFilterReq.session;
30064 halLphbReqRarams->options.tcpUdpFilter.offset =
30065 pLphbReqParams->params.lphbUdpFilterReq.offset;
30066 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30067 pLphbReqParams->params.lphbUdpFilterReq.length;
30068 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30069 pLphbReqParams->params.lphbUdpFilterReq.filter,
30070 WDI_LPHB_FILTER_LEN);
30071 break;
30072
30073 case WDI_LPHB_SET_NETWORK_INFO_INDID:
30074 /* NA */
30075 break;
30076
30077 default:
30078 break;
30079 }
30080
30081 /*-------------------------------------------------------------------------
30082 Send Suspend Request to HAL
30083 -------------------------------------------------------------------------*/
30084 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30085 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30086
30087 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30088 usSendSize, pWDICtx->pfncRspCB,
30089 pWDICtx->pReqStatusUserData,
30090 WDI_LPHB_CFG_RESP);
30091
30092 return wdiStatus;
30093}
30094
30095/**
30096 @brief WDI_LPHBConfReq -
30097 LPHB configuration request API
30098
30099 @param lphbconfParam : configuration parameter
30100 usrData : client context
30101 lphbCfgCb : callback function pointer
30102
30103 @see
30104 @return Success or fail status code
30105*/
30106WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
30107 void *usrData, WDI_LphbCfgCb lphbCfgCb)
30108{
30109 WDI_EventInfoType wdiEventData;
30110
30111 /*------------------------------------------------------------------------
30112 Sanity Check
30113 ------------------------------------------------------------------------*/
30114 if (eWLAN_PAL_FALSE == gWDIInitialized)
30115 {
30116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30117 "WDI API call before module is initialized - Fail request");
30118
30119 return WDI_STATUS_E_NOT_ALLOWED;
30120 }
30121
30122 /*------------------------------------------------------------------------
30123 Fill in Event data and post to the Main FSM
30124 ------------------------------------------------------------------------*/
30125 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
30126 wdiEventData.pEventData = lphbconfParam;
30127 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
30128 wdiEventData.pCBfnc = lphbCfgCb;
30129 wdiEventData.pUserData = usrData;
30130
30131 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30132}
30133#endif /* FEATURE_WLAN_LPHB */
30134
Ravi Joshid2ca7c42013-07-23 08:37:49 -070030135/**
30136 @brief WDI_ProcessIbssPeerInactivityInd
30137 Process peer inactivity indication coming from HAL
30138
30139 @param pWDICtx: pointer to the WLAN DAL context
30140 pEventData: pointer to the event information structure
30141 @see
30142 @return Result of the function call
30143*/
30144WDI_Status
30145WDI_ProcessIbssPeerInactivityInd
30146(
30147 WDI_ControlBlockType* pWDICtx,
30148 WDI_EventInfoType* pEventData
30149)
30150{
30151 WDI_LowLevelIndType wdiInd;
30152 tIbssPeerInactivityIndMsg halIbssIndMsg;
30153
30154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30155
30156 /*-------------------------------------------------------------------------
30157 Sanity check
30158 -------------------------------------------------------------------------*/
30159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30160 ( NULL == pEventData->pEventData ))
30161 {
30162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30163 "%s: Invalid parameters", __func__);
30164 WDI_ASSERT( 0 );
30165 return WDI_STATUS_E_FAILURE;
30166 }
30167
30168 /*-------------------------------------------------------------------------
30169 Extract indication and send it to UMAC
30170 -------------------------------------------------------------------------*/
30171 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30172 pEventData->pEventData,
30173 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30174
30175 /*Fill in the indication parameters*/
30176 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30177
30178 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30179 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30180
30181 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30182 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30183
30184 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30185 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30186 sizeof(tSirMacAddr));
30187
30188 /*Notify UMAC*/
30189 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30190
30191 return WDI_STATUS_SUCCESS;
30192
30193} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030194
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030195/**
30196*@brief WDI_RateUpdateInd will be called when the upper MAC
30197 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030198
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030199
30200 @param wdiRateUpdateIndParams:
30201
30202
30203 @see
30204 @return Result of the function call
30205*/
30206WDI_Status
30207WDI_RateUpdateInd
30208(
30209 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30210)
30211{
30212 WDI_EventInfoType wdiEventData;
30213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30214
30215 /*------------------------------------------------------------------------
30216 Sanity Check
30217 ------------------------------------------------------------------------*/
30218 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30219 {
30220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30221 "WDI API call before module is initialized - Fail request");
30222
30223 return WDI_STATUS_E_NOT_ALLOWED;
30224 }
30225
30226 /*------------------------------------------------------------------------
30227 Fill in Event data and post to the Main FSM
30228 ------------------------------------------------------------------------*/
30229 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30230 wdiEventData.pEventData = wdiRateUpdateIndParams;
30231 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30232 wdiEventData.pCBfnc = NULL;
30233 wdiEventData.pUserData = NULL;
30234
30235 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30236
30237}/* WDI_RateUpdateInd */
30238
30239/**
30240 @brief Process Rate Update Indication and post it to HAL
30241
30242 @param pWDICtx: pointer to the WLAN DAL context
30243 pEventData: pointer to the event information structure
30244
30245 @see
30246 @return Result of the function call
30247*/
30248WDI_Status
30249WDI_ProcessRateUpdateInd
30250(
30251 WDI_ControlBlockType* pWDICtx,
30252 WDI_EventInfoType* pEventData
30253)
30254{
30255 wpt_uint8* pSendBuffer = NULL;
30256 wpt_uint16 usDataOffset = 0;
30257 wpt_uint16 usSendSize = 0;
30258 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30259 tHalRateUpdateInd *pRateUpdateInd;
30260 WDI_Status wdiStatus;
30261
30262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30263
30264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30265 "%s", __func__);
30266
30267 /*-------------------------------------------------------------------------
30268 Sanity check
30269 -------------------------------------------------------------------------*/
30270 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30271 {
30272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30273 "%s: Invalid parameters", __func__);
30274 WDI_ASSERT(0);
30275 return WDI_STATUS_E_FAILURE;
30276 }
30277 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30278 /*-----------------------------------------------------------------------
30279 Get message buffer
30280 -----------------------------------------------------------------------*/
30281
30282 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30283 WDI_RATE_UPDATE_IND,
30284 sizeof(tHalRateUpdateParams),
30285 &pSendBuffer, &usDataOffset, &usSendSize))||
30286 ( usSendSize < (usDataOffset +
30287 sizeof(tHalRateUpdateParams) )))
30288 {
30289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30290 "Unable to get send buffer in Rate Update Indication %p ",
30291 pEventData);
30292 WDI_ASSERT(0);
30293 return WDI_STATUS_E_FAILURE;
30294 }
30295
30296 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30297
30298 /* Copy the bssid */
30299 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30300 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30301
30302 /* Copy the tx flags */
30303 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30304 pwdiRateUpdateInd->ucastDataRateTxFlag;
30305 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30306 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30307 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30308 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30309 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30310 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30311
30312 /* Copy the tx rates */
30313 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30314 pwdiRateUpdateInd->ucastDataRate;
30315 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30316 pwdiRateUpdateInd->reliableMcastDataRate;
30317 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30318 pwdiRateUpdateInd->mcastDataRate24GHz;
30319 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30320 pwdiRateUpdateInd->mcastDataRate5GHz;
30321
30322 /*-------------------------------------------------------------------------
30323 Send Rate Update Indication to HAL
30324 -------------------------------------------------------------------------*/
30325 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30326 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30327
30328 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30329
30330 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30331 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30332
30333} /* WDI_ProcessRateUpdateInd */
30334
30335#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030336/**
30337 @brief Process stop batch indication from WDA
30338
30339 @param pWDICtx: pointer to the WLAN DAL context
30340 pEventData: pointer to the event information structure
30341
30342 @see
30343 @return Result of the function call
30344*/
30345WDI_Status
30346WDI_ProcessStopBatchScanInd
30347(
30348 WDI_ControlBlockType* pWDICtx,
30349 WDI_EventInfoType* pEventData
30350)
30351{
30352 wpt_uint8* pSendBuffer = NULL;
30353 wpt_uint16 usDataOffset = 0;
30354 wpt_uint16 usSendSize = 0;
30355 WDI_Status wdiStatus;
30356 tHalBatchScanStopIndParam *pHalInd = NULL;
30357 WDI_StopBatchScanIndType *pWdiInd = NULL;
30358
30359
30360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30361
30362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30363 "%s", __func__);
30364
30365 /*-------------------------------------------------------------------------
30366 Sanity check
30367 -------------------------------------------------------------------------*/
30368
30369 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30370 {
30371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30372 "%s: Invalid parameters", __func__);
30373 WDI_ASSERT(0);
30374 return WDI_STATUS_E_FAILURE;
30375 }
30376 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30377 /*-----------------------------------------------------------------------
30378 Get message buffer
30379 -----------------------------------------------------------------------*/
30380
30381 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30382 WDI_STOP_BATCH_SCAN_IND,
30383 sizeof(tHalBatchScanStopIndParam),
30384 &pSendBuffer, &usDataOffset, &usSendSize))||
30385 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30386 {
30387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30388 "Unable to get send buffer in stop batch scan ind %p ",
30389 pEventData);
30390 WDI_ASSERT(0);
30391 return WDI_STATUS_E_FAILURE;
30392 }
30393
30394 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30395 pHalInd->param = pWdiInd->param;
30396
30397 pWDICtx->pReqStatusUserData = NULL;
30398 pWDICtx->pfncRspCB = NULL;
30399 /*-------------------------------------------------------------------------
30400 Send Stop batch scan indication to HAL
30401 -------------------------------------------------------------------------*/
30402 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30403 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30404}
30405
30406/**
30407 @brief This API is called to trigger batch scan results from FW
30408
30409 @param pWDICtx: pointer to the WLAN DAL context
30410 pEventData: pointer to the event information structure
30411
30412 @see
30413 @return Result of the function call
30414*/
30415WDI_Status
30416WDI_ProcessTriggerBatchScanResultInd
30417(
30418 WDI_ControlBlockType* pWDICtx,
30419 WDI_EventInfoType* pEventData
30420)
30421{
30422 WDI_Status wdiStatus;
30423 wpt_uint8* pSendBuffer = NULL;
30424 wpt_uint16 usDataOffset = 0;
30425 wpt_uint16 usSendSize = 0;
30426 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30427 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30428
30429
30430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30431
30432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30433 "%s", __func__);
30434
30435 /*-------------------------------------------------------------------------
30436 Sanity check
30437 -------------------------------------------------------------------------*/
30438
30439 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30440 {
30441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30442 "%s: Invalid parameters", __func__);
30443 WDI_ASSERT(0);
30444 return WDI_STATUS_E_FAILURE;
30445 }
30446 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30447 /*-----------------------------------------------------------------------
30448 Get message buffer
30449 -----------------------------------------------------------------------*/
30450
30451 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30452 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30453 sizeof(tHalBatchScanTriggerResultParam),
30454 &pSendBuffer, &usDataOffset, &usSendSize))||
30455 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30456 {
30457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30458 "Unable to get send buffer in stop batch scan ind %p ",
30459 pEventData);
30460 WDI_ASSERT(0);
30461 return WDI_STATUS_E_FAILURE;
30462 }
30463
30464 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30465 pHalInd->param = pWdiInd->param;
30466
30467 pWDICtx->pReqStatusUserData = NULL;
30468 pWDICtx->pfncRspCB = NULL;
30469 /*-------------------------------------------------------------------------
30470 Send trigger batch scan result indication to HAL
30471 -------------------------------------------------------------------------*/
30472 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30473 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30474}
30475
30476
30477/**
30478 @brief Process set batch scan response from FW
30479
30480 @param pWDICtx: pointer to the WLAN DAL context
30481 pEventData: pointer to the event information structure
30482
30483 @see
30484 @return Result of the function call
30485*/
30486WDI_Status
30487WDI_ProcessSetBatchScanRsp
30488(
30489 WDI_ControlBlockType* pWDICtx,
30490 WDI_EventInfoType* pEventData
30491)
30492{
30493 WDI_SetBatchScanCb wdiSetBatchScanCb;
30494 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30495
30496 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30498
30499 /*sanity check*/
30500 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30501 ( NULL == pEventData->pEventData))
30502 {
30503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30504 "%s: Invalid parameters", __func__);
30505 WDI_ASSERT(0);
30506 return WDI_STATUS_E_FAILURE;
30507 }
30508
30509 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30510 if ( NULL == wdiSetBatchScanCb)
30511 {
30512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30513 "%s: call back function is NULL", __func__);
30514 WDI_ASSERT(0);
30515 return WDI_STATUS_E_FAILURE;
30516 }
30517
30518 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30519
30520 if (NULL == pSetBatchScanRsp)
30521 {
30522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030523 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030524 pWDICtx, pEventData, pEventData->pEventData);
30525 WDI_ASSERT(0);
30526 return WDI_STATUS_E_FAILURE;
30527 }
30528
Sunil Duttbd736ed2014-05-26 21:19:41 +053030529 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030530 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30531
30532 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30533
Sunil Duttbd736ed2014-05-26 21:19:41 +053030534 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030535 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30536
30537 wpalMemoryFree(pSetBatchScanRsp);
30538
30539 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030540}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030541
30542/**
30543 @brief Process batch scan result indication from FW
30544
30545 @param pWDICtx: pointer to the WLAN DAL context
30546 pEventData: pointer to the event information structure
30547
30548 @see
30549 @return Result of the function call
30550*/
30551WDI_Status
30552WDI_ProcessBatchScanResultInd
30553(
30554 WDI_ControlBlockType* pWDICtx,
30555 WDI_EventInfoType* pEventData
30556)
30557{
30558 void *pBatchScanResultInd;
30559 WDI_LowLevelIndType wdiInd;
30560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30561
Sunil Duttbd736ed2014-05-26 21:19:41 +053030562 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030563 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30564 ( NULL == pEventData->pEventData))
30565 {
30566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30567 "%s: Invalid parameters", __func__);
30568 WDI_ASSERT(0);
30569 return WDI_STATUS_E_FAILURE;
30570 }
30571
Sunil Duttbd736ed2014-05-26 21:19:41 +053030572 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030573 pBatchScanResultInd = (void *)pEventData->pEventData;
30574
Sunil Duttbd736ed2014-05-26 21:19:41 +053030575 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030576 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30577
30578 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30579
Sunil Duttbd736ed2014-05-26 21:19:41 +053030580 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030581 if (pWDICtx->wdiLowLevelIndCB)
30582 {
30583 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30584 }
30585 else
30586 {
30587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30588 "%s: WDILowLevelIndCb is null", __func__);
30589 WDI_ASSERT(0);
30590 return WDI_STATUS_E_FAILURE;
30591 }
30592
30593 return WDI_STATUS_SUCCESS;
30594} /*End of WDI_ProcessBatchScanResultInd*/
30595
Sunil Duttbd736ed2014-05-26 21:19:41 +053030596#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30597/**
30598 @brief Process Link Layer Statistics Result indication from FW
30599
30600 @param pWDICtx: pointer to the WLAN DAL context
30601 pEventData: pointer to the event information structure
30602
30603 @see
30604 @return Result of the function call
30605*/
30606WDI_Status
30607WDI_ProcessLinkLayerStatsResultsInd
30608(
30609 WDI_ControlBlockType* pWDICtx,
30610 WDI_EventInfoType* pEventData
30611)
30612{
30613 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030614 WDI_LLstatsResultsType *halLLStatsResults;
30615 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030616 WDI_LowLevelIndType wdiInd;
30617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30618
30619 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30620 "%s: Event RESULTS Indication", __func__);
30621
30622 /* sanity check */
30623 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30624 ( NULL == pEventData->pEventData))
30625 {
30626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30627 "%s: Invalid parameters", __func__);
30628 WDI_ASSERT(0);
30629 return WDI_STATUS_E_FAILURE;
30630 }
30631
30632 /* extract response and send it to UMAC */
30633 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30634
30635 /* Fill in the indication parameters */
30636 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30637
Dino Mycled3d50022014-07-07 12:58:25 +053030638 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30639 = pLinkLayerStatsInd;
30640
30641 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30642
30643
30644 /* Need to fill in the MAC address */
30645 if ( WDI_STATUS_SUCCESS !=
30646 WDI_STATableGetStaMacAddr(pWDICtx,
30647 halLLStatsResults->iface_id,
30648 &macAddr))
30649 {
30650 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30651 " ifaceId: %u does not exist in the WDI Station Table",
30652 halLLStatsResults->iface_id);
30653
30654 return WDI_STATUS_E_FAILURE;
30655 }
30656 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30657 macAddr, WDI_MAC_ADDR_LEN);
30658
30659 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30660 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30661 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030662
30663 /* Notify UMAC */
30664 if (pWDICtx->wdiLowLevelIndCB)
30665 {
30666 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30667 }
30668 else
30669 {
30670 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30671 "%s: WDILowLevelIndCb is null", __func__);
30672 WDI_ASSERT(0);
30673 return WDI_STATUS_E_FAILURE;
30674 }
30675
30676 return WDI_STATUS_SUCCESS;
30677} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30678#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30679
Rajeev79dbe4c2013-10-05 11:03:42 +053030680/**
30681 @brief WDI_ProcessSetBatchScanReq -
30682 Set batch scan request to FW
30683
30684 @param pWDICtx : wdi context
30685 pEventData : indication data
30686
30687 @see
30688 @return none
30689*/
30690WDI_Status WDI_ProcessSetBatchScanReq
30691(
30692 WDI_ControlBlockType* pWDICtx,
30693 WDI_EventInfoType* pEventData
30694)
30695{
30696 WDI_SetBatchScanReqType *pWdiReq;
30697 WDI_Status wdiStatus;
30698 wpt_uint8* pSendBuffer = NULL;
30699 wpt_uint16 usDataOffset = 0;
30700 wpt_uint16 usSendSize = 0;
30701 tHalBatchScanSetParams *pHalReq;
30702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30703
30704 /*sanity check*/
30705 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30706 {
30707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30708 "%s: Invalid parameters in set batch scan request", __func__);
30709 WDI_ASSERT(0);
30710 return WDI_STATUS_E_FAILURE;
30711 }
30712
30713
30714 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30715
30716
30717 /*get message buffer*/
30718 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30719 WDI_SET_BATCH_SCAN_REQ,
30720 sizeof(tHalBatchScanSetParams),
30721 &pSendBuffer, &usDataOffset, &usSendSize))||
30722 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30723 {
30724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30725 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30726 WDI_ASSERT(0);
30727 return WDI_STATUS_E_FAILURE;
30728 }
30729
30730 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30731
30732 pHalReq->rtt = pWdiReq->rtt;
30733 pHalReq->rfBand = pWdiReq->rfBand;
30734 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30735 pHalReq->scanInterval = pWdiReq->scanFrequency;
30736 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30737
30738 /*send set batch scan request to fw*/
30739 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30740 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30741
30742 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30743 usSendSize, pWDICtx->pfncRspCB,
30744 pWDICtx->pReqStatusUserData,
30745 WDI_SET_BATCH_SCAN_RESP);
30746
30747 return wdiStatus;
30748}
30749
30750/**
30751 @brief WDI_SetBatchScanReq
30752 This API is called to set batch scan request in FW
30753
30754 @param pBatchScanReqParam : pointer to set batch scan re param
30755 usrData : Client context
30756 setBatchScanRspCb : set batch scan resp callback
30757 @see
30758 @return SUCCESS or FAIL
30759*/
30760WDI_Status WDI_SetBatchScanReq
30761(
30762 void *pBatchScanReqParam,
30763 void *usrData,
30764 WDI_SetBatchScanCb setBatchScanRspCb
30765)
30766{
30767 WDI_EventInfoType wdiEventData;
30768
30769 /*sanity check*/
30770 if (eWLAN_PAL_FALSE == gWDIInitialized)
30771 {
30772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30773 "WDI API call before module is initialized - Fail request");
30774
30775 return WDI_STATUS_E_NOT_ALLOWED;
30776 }
30777
30778 /* fill in event data and post to the main FSM */
30779 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30780 wdiEventData.pEventData = pBatchScanReqParam;
30781 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30782 wdiEventData.pCBfnc = setBatchScanRspCb;
30783 wdiEventData.pUserData = usrData;
30784
30785 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30786}
30787
30788/**
30789 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30790
30791 @param None
30792
30793 @see
30794
30795 @return Status of the request
30796*/
30797WDI_Status
30798WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30799{
30800 WDI_EventInfoType wdiEventData;
30801
30802 /*-------------------------------------------------------------------------
30803 Sanity Check
30804 ------------------------------------------------------------------------*/
30805 if (eWLAN_PAL_FALSE == gWDIInitialized)
30806 {
30807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30808 "WDI API call before module is initialized - Fail request!");
30809
30810 return WDI_STATUS_E_NOT_ALLOWED;
30811 }
30812
30813 /*-------------------------------------------------------------------------
30814 Fill in Event data and post to the Main FSM
30815 ------------------------------------------------------------------------*/
30816 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30817 wdiEventData.pEventData = pWdiReq;
30818 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30819 wdiEventData.pCBfnc = NULL;
30820 wdiEventData.pUserData = NULL;
30821
30822 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30823}
30824
30825/**
30826 @brief WDI_TriggerBatchScanResultInd
30827 This API is called to pull batch scan result from FW
30828
30829 @param pWdiReq : pointer to get batch scan ind param
30830 @see
30831 @return SUCCESS or FAIL
30832*/
30833WDI_Status WDI_TriggerBatchScanResultInd
30834(
30835 WDI_TriggerBatchScanResultIndType *pWdiReq
30836)
30837{
30838 WDI_EventInfoType wdiEventData;
30839 /*-------------------------------------------------------------------------
30840 Sanity Check
30841 ------------------------------------------------------------------------*/
30842 if (eWLAN_PAL_FALSE == gWDIInitialized)
30843 {
30844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30845 "WDI API call before module is initialized - Fail request!");
30846
30847 return WDI_STATUS_E_NOT_ALLOWED;
30848 }
30849
30850 /*-------------------------------------------------------------------------
30851 Fill in Event data and post to the Main FSM
30852 ------------------------------------------------------------------------*/
30853 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30854 wdiEventData.pEventData = pWdiReq;
30855 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30856 wdiEventData.pCBfnc = NULL;
30857 wdiEventData.pUserData = NULL;
30858
30859 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30860}
Rajeev79dbe4c2013-10-05 11:03:42 +053030861#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030862
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030863/**
30864 @brief Process Update Channel Rsp function (called when a response is
30865 being received over the bus from HAL)
30866
30867 @param pWDICtx: pointer to the WLAN DAL context
30868 pEventData: pointer to the event information structure
30869
30870 @see
30871 @return Result of the function call
30872*/
30873WDI_Status
30874WDI_ProcessUpdateChanRsp
30875(
30876 WDI_ControlBlockType* pWDICtx,
30877 WDI_EventInfoType* pEventData
30878)
30879{
30880 WDI_Status wdiStatus;
30881 eHalStatus halStatus;
30882 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30884
30885 /*-------------------------------------------------------------------------
30886 Sanity check
30887 -------------------------------------------------------------------------*/
30888 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30889 ( NULL == pEventData->pEventData))
30890 {
30891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30892 "%s: Invalid parameters", __func__);
30893 WDI_ASSERT(0);
30894 return WDI_STATUS_E_FAILURE;
30895 }
30896
30897 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30898
30899 /*-------------------------------------------------------------------------
30900 Extract response and send it to UMAC
30901 -------------------------------------------------------------------------*/
30902 halStatus = *((eHalStatus*)pEventData->pEventData);
30903 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30904
30905 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30906
30907 return WDI_STATUS_SUCCESS;
30908}/*WDI_ProcessUpdateChanRsp*/
30909
Leo Chang0b0e45a2013-12-15 15:18:55 -080030910#ifdef FEATURE_WLAN_CH_AVOID
30911/**
30912 @brief v -WDI_ProcessChAvoidInd
30913
30914
30915 @param pWDICtx : wdi context
30916 pEventData : indication data
30917 @see
30918 @return Result of the function call
30919*/
30920WDI_Status
30921WDI_ProcessChAvoidInd
30922(
30923 WDI_ControlBlockType* pWDICtx,
30924 WDI_EventInfoType* pEventData
30925)
30926{
30927 WDI_LowLevelIndType wdiInd;
30928 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30929 wpt_uint16 rangeLoop;
30930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30931
30932 /*-------------------------------------------------------------------------
30933 Sanity check
30934 -------------------------------------------------------------------------*/
30935 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30936 (NULL == pEventData->pEventData))
30937 {
30938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30939 "%s: Invalid parameters", __func__);
30940 WDI_ASSERT(0);
30941 return WDI_STATUS_E_FAILURE;
30942 }
30943
30944 /*-------------------------------------------------------------------------
30945 Extract indication and send it to UMAC
30946 -------------------------------------------------------------------------*/
30947 wpalMemoryCopy(&chAvoidIndicationParam,
30948 pEventData->pEventData,
30949 sizeof(tHalAvoidFreqRangeIndParams));
30950
30951 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30952 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30953 chAvoidIndicationParam.avoidCnt;
30954 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30955 (void *)chAvoidIndicationParam.avoidRange,
30956 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30957 sizeof(WDI_ChAvoidFreqType));
30958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30959 "%s: band count %d", __func__,
30960 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30961 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30962 {
30963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30964 "%s: srart freq %d, end freq %d", __func__,
30965 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30966 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30967 }
30968
30969 /*Notify UMAC*/
30970 if (pWDICtx->wdiLowLevelIndCB)
30971 {
30972 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30973 }
30974
30975 return WDI_STATUS_SUCCESS;
30976}
Atul Mittalc0f739f2014-07-31 13:47:47 +053030977
Leo Chang0b0e45a2013-12-15 15:18:55 -080030978#endif /* FEATURE_WLAN_CH_AVOID */
30979
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030980/**
30981 @brief Process OBSS Start scan result indication
30982
30983 @param pWDICtx: pointer to the WLAN DAL context
30984 pEventData: pointer to the event information structure
30985
30986 @see
30987 @return Result of the function call
30988*/
30989WDI_Status
30990WDI_ProcessHT40OBSSScanInd
30991(
30992 WDI_ControlBlockType* pWDICtx,
30993 WDI_EventInfoType* pEventData
30994)
30995{
30996 wpt_uint8* pSendBuffer = NULL;
30997 wpt_uint16 usDataOffset = 0;
30998 wpt_uint16 usSendSize = 0;
30999 wpt_uint16 usLen = 0;
31000 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
31001 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
31002 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
31003 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31004
31005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31006
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053031007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031008 "%s", __func__);
31009
31010 /*-------------------------------------------------------------------------
31011 Sanity check
31012 -------------------------------------------------------------------------*/
31013 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31014 {
31015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31016 "%s: Invalid parameters", __func__);
31017 WDI_ASSERT(0);
31018 return WDI_STATUS_E_FAILURE;
31019 }
31020 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
31021
31022 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
31023 /*-----------------------------------------------------------------------
31024 Get message buffer
31025 -----------------------------------------------------------------------*/
31026
31027 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31028 WDI_START_HT40_OBSS_SCAN_IND,
31029 sizeof(tHT40ObssScanIndType),
31030 &pSendBuffer, &usDataOffset, &usSendSize))||
31031 ( usSendSize < (usDataOffset + usLen )))
31032 {
31033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31034 "Unable to get send buffer in HT40 OBSS Start req %p ",
31035 pEventData);
31036 WDI_ASSERT(0);
31037 return WDI_STATUS_E_FAILURE;
31038 }
31039 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
31040 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
31041 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
31042 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
31043 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
31044 pHT40ObssScanInd->OBSSScanActiveDwellTime =
31045 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
31046 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
31047 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
31048 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
31049 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
31050 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
31051 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
31052 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
31053 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
31054 pHT40ObssScanInd->OBSSScanActivityThreshold =
31055 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
31056 pHT40ObssScanInd->selfStaIdx =
31057 pwdiHT40OBSSScanInd->selfStaIdx;
31058 pHT40ObssScanInd->bssIdx =
31059 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053031060 pHT40ObssScanInd->currentOperatingClass =
31061 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031062 pHT40ObssScanInd->fortyMHZIntolerent =
31063 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
31064 pHT40ObssScanInd->channelCount =
31065 pwdiHT40OBSSScanInd->channelCount;
31066
31067 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
31068 WDI_ROAM_SCAN_MAX_CHANNELS);
31069 pHT40ObssScanInd->ieFieldLen =
31070 pwdiHT40OBSSScanInd->ieFieldLen;
31071
31072 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
31073 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
31074 pWDICtx->pReqStatusUserData = NULL;
31075 pWDICtx->pfncRspCB = NULL;
31076
31077 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
31078 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
31079
31080 /*-------------------------------------------------------------------------
31081 Send OBSS Start Indication to HAL
31082 -------------------------------------------------------------------------*/
31083 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31084 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31085
31086} /*End of WDI_ProcessHT40OBSSStartScanInd*/
31087
31088
31089/**
31090 @brief wdi_HT40OBSSScanInd
31091 This API is called to start OBSS scan
31092
31093 @param pWdiReq : pointer to get ind param
31094 @see
31095 @return SUCCESS or FAIL
31096*/
31097WDI_Status WDI_HT40OBSSScanInd
31098(
31099 WDI_HT40ObssScanParamsType *pWdiReq
31100)
31101{
31102 WDI_EventInfoType wdiEventData;
31103
31104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31105 "%s", __func__);
31106 /*-------------------------------------------------------------------------
31107 Sanity Check
31108 ------------------------------------------------------------------------*/
31109 if (eWLAN_PAL_FALSE == gWDIInitialized)
31110 {
31111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31112 "WDI API call before module is initialized - Fail request!");
31113
31114 return WDI_STATUS_E_NOT_ALLOWED;
31115 }
31116
31117 /*-------------------------------------------------------------------------
31118 Fill in Event data and post to the Main FSM
31119 ------------------------------------------------------------------------*/
31120 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
31121 wdiEventData.pEventData = pWdiReq;
31122 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
31123 wdiEventData.pCBfnc = NULL;
31124 wdiEventData.pUserData = NULL;
31125
31126
31127 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31128}
31129
31130/**
31131 @brief Process OBSS Stop scan result
31132
31133 @param pWDICtx: pointer to the WLAN DAL context
31134 pEventData: pointer to the event information structure
31135
31136 @see
31137 @return Result of the function call
31138*/
31139WDI_Status
31140WDI_ProcessHT40OBSSStopScanInd
31141(
31142 WDI_ControlBlockType* pWDICtx,
31143 WDI_EventInfoType* pEventData
31144)
31145{
31146 wpt_uint8* pSendBuffer = NULL;
31147 wpt_uint16 usDataOffset = 0;
31148 wpt_uint16 usSendSize = 0;
31149 wpt_uint16 usLen = 0;
31150 wpt_uint8 *wdiBssIdx = 0;
31151 tANI_U8 *bssIdx = 0;
31152 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31153
31154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31155
31156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31157 "%s", __func__);
31158
31159 /*-------------------------------------------------------------------------
31160 Sanity check
31161 -------------------------------------------------------------------------*/
31162 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31163 {
31164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31165 "%s: Invalid parameters", __func__);
31166 WDI_ASSERT(0);
31167 return WDI_STATUS_E_FAILURE;
31168 }
31169 bssIdx = (wpt_uint8*)pEventData->pEventData;
31170 /*-----------------------------------------------------------------------
31171 Get message buffer
31172 -----------------------------------------------------------------------*/
31173
31174 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31175 WDI_STOP_HT40_OBSS_SCAN_IND,
31176 sizeof(tANI_U8),
31177 &pSendBuffer, &usDataOffset, &usSendSize))||
31178 ( usSendSize < (usDataOffset + usLen )))
31179 {
31180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31181 "Unable to get send buffer in HT40 OBSS Start req %p ",
31182 pEventData);
31183 WDI_ASSERT(0);
31184 return WDI_STATUS_E_FAILURE;
31185 }
31186
31187 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31188 bssIdx = wdiBssIdx;
31189
31190 pWDICtx->pReqStatusUserData = NULL;
31191 pWDICtx->pfncRspCB = NULL;
31192
31193 /*-------------------------------------------------------------------------
31194 Send DHCP Start Indication to HAL
31195 -------------------------------------------------------------------------*/
31196 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31197 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31198} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31199
31200/**
31201 @brief WDI_HT40OBSSStopScanInd
31202 This API is called to start OBSS scan
31203 @param pWdiReq : pointer to get ind param
31204 @see
31205 @return SUCCESS or FAIL
31206*/
31207WDI_Status WDI_HT40OBSSStopScanInd
31208(
31209 wpt_uint8 bssIdx
31210)
31211{
31212 WDI_EventInfoType wdiEventData;
31213
31214 /*-------------------------------------------------------------------------
31215 Sanity Check
31216 ------------------------------------------------------------------------*/
31217 if (eWLAN_PAL_FALSE == gWDIInitialized)
31218 {
31219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31220 "WDI API call before module is initialized - Fail request!");
31221
31222 return WDI_STATUS_E_NOT_ALLOWED;
31223 }
31224
31225 /*-------------------------------------------------------------------------
31226 Fill in Event data and post to the Main FSM
31227 ------------------------------------------------------------------------*/
31228 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31229 wdiEventData.pEventData = &bssIdx;
31230 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31231 wdiEventData.pCBfnc = NULL;
31232 wdiEventData.pUserData = NULL;
31233
31234 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31235}
31236
c_hpothu86041002014-04-14 19:06:51 +053031237WDI_Status
31238WDI_printRegInfo
31239(
31240 WDI_ControlBlockType* pWDICtx,
31241 WDI_EventInfoType* pEventData
31242)
31243{
31244 tHalRegDebugInfo *pRegTable;
31245 tHalRegDebugInfoParams *pRegParams;
31246 uint32 cnt=0;
31247
31248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31249 "%s: ", __func__);
31250 /*-------------------------------------------------------------------------
31251 Sanity check
31252 -------------------------------------------------------------------------*/
31253 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31254 ( NULL == pEventData->pEventData))
31255 {
31256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31257 "%s: Invalid parameters", __func__);
31258 WDI_ASSERT(0);
31259 return WDI_STATUS_E_FAILURE;
31260 }
31261
31262 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31263
31264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31265 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31266 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31267
31268 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31269
31270 if (pRegParams->regCount <= 0)
31271 {
31272 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31273 "%s incorrect parameters passed", __func__);
31274 return WDI_STATUS_E_FAILURE;
31275 }
31276
31277 while(pRegParams->regCount--)
31278 {
31279 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31280 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31281 cnt++;
31282 }
31283
31284 return WDI_STATUS_SUCCESS;
31285}
c_hpothu92367912014-05-01 15:18:17 +053031286
31287/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031288 * FUNCTION: WDI_delBaInd
31289 * send the delBA to peer.
31290 */
31291
31292WDI_Status
31293WDI_delBaInd
31294(
31295 WDI_ControlBlockType* pWDICtx,
31296 WDI_EventInfoType* pEventData
31297
31298)
31299{
31300 tHalWlanDelBaIndMsg halDelBaInd;
31301 WDI_LowLevelIndType wdiInd;
31302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31303
31304 /*-------------------------------------------------------------------------
31305 Sanity check
31306 -------------------------------------------------------------------------*/
31307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31308 ( NULL == pEventData->pEventData))
31309 {
31310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31311 "%s: Invalid parameters", __func__);
31312 WDI_ASSERT(0);
31313 return WDI_STATUS_E_FAILURE;
31314 }
31315
31316 /*-------------------------------------------------------------------------
31317 Extract indication and send it to UMAC
31318 -------------------------------------------------------------------------*/
31319
31320 /* Parameters need to be unpacked according to HAL struct*/
31321 wpalMemoryCopy( &halDelBaInd,
31322 pEventData->pEventData,
31323 sizeof(halDelBaInd));
31324
31325 /*Fill in the indication parameters*/
31326 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31327
31328 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31329 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31330 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31331
31332 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31333 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31334 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31335
31336 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31337 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31338 if ( pWDICtx->wdiLowLevelIndCB )
31339 {
31340 /*Notify UMAC*/
31341 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31342 }
31343
31344 return WDI_STATUS_SUCCESS;
31345
31346
31347}
31348
31349/*
c_hpothu92367912014-05-01 15:18:17 +053031350 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31351 * send the response to PE with beacon miss count
31352 * received from WDI.
31353 */
31354WDI_Status
31355WDI_ProcessGetBcnMissRateRsp
31356(
31357 WDI_ControlBlockType* pWDICtx,
31358 WDI_EventInfoType* pEventData
31359)
31360{
31361 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31362 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31363
31364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31365 "In %s",__func__);
31366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31367
31368 /*-------------------------------------------------------------------------
31369 Sanity check
31370 -------------------------------------------------------------------------*/
31371 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31372 ( NULL == pEventData->pEventData))
31373 {
31374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31375 "%s: Invalid parameters", __func__);
31376 WDI_ASSERT(0);
31377 return WDI_STATUS_E_FAILURE;
31378 }
31379
31380 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31381 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31382
31383 /*Notify UMAC*/
31384 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31385 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31386 return WDI_STATUS_SUCCESS;
31387}
31388
31389/*
31390 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31391 * Request to WDI to get missed beacon rate.
31392 */
31393WDI_Status
31394WDI_ProcessGetBcnMissRateReq
31395(
31396 WDI_ControlBlockType* pWDICtx,
31397 WDI_EventInfoType* pEventData
31398)
31399{
31400 wpt_uint8* pSendBuffer = NULL;
31401 wpt_uint16 usDataOffset = 0;
31402 wpt_uint16 usSendSize = 0;
31403 wpt_uint8 ucCurrentBSSSesIdx = 0;
31404 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031405 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31406 tHalBcnMissRateReqParams halBcnMissRateReq;
31407
31408/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31409
31410 /*-------------------------------------------------------------------------
31411 Sanity check
31412 -------------------------------------------------------------------------*/
31413 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31414 ( NULL == pEventData->pCBfnc ) )
31415 {
31416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31417 "%s: Invalid parameters", __func__);
31418 WDI_ASSERT(0);
31419 return WDI_STATUS_E_FAILURE;
31420 }
31421
31422 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31423
31424 wpalMutexAcquire(&pWDICtx->wptMutex);
31425
31426 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31427 pEventData->pEventData, &pBSSSes);
31428 if ( NULL == pBSSSes )
31429 {
31430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31431 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031432 MAC_ADDRESS_STR, __func__,
31433 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031434 wpalMutexRelease(&pWDICtx->wptMutex);
31435 return WDI_STATUS_E_NOT_ALLOWED;
31436 }
31437 wpalMutexRelease(&pWDICtx->wptMutex);
31438
31439 /*-----------------------------------------------------------------------
31440 Get message buffer
31441 -----------------------------------------------------------------------*/
31442 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31443 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31444 sizeof(tHalBcnMissRateReqParams),
31445 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31446 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31447 {
31448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31449 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31450 pEventData);
31451 WDI_ASSERT(0);
31452 return WDI_STATUS_E_FAILURE;
31453 }
31454
31455 pWDICtx->wdiReqStatusCB = NULL;
31456 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31457
31458 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31459
31460 wpalMemoryCopy( pSendBuffer+usDataOffset,
31461 &halBcnMissRateReq,
31462 sizeof(tHalBcnMissRateReqParams));
31463 /*-------------------------------------------------------------------------
31464 Send Get STA Request to HAL
31465 -------------------------------------------------------------------------*/
31466 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31467 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31468}
31469
31470/**
31471 @brief WDI_GetBcnMissRate
31472
31473 @param pUserData: user data will be passed back with the
31474 callback
31475 WDI_GetBcnMissRateCb: callback for passing back the response
31476 of the get stats operation received from the device
31477 bssid: bssid, to send bssIdx to FW
31478
31479 @return SUCCESS or FAIL
31480*/
31481WDI_Status WDI_GetBcnMissRate( void *pUserData,
31482 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31483 tANI_U8 *bssid )
31484{
31485 WDI_EventInfoType wdiEventData;
31486
31487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31488
31489 /*------------------------------------------------------------------------
31490 Sanity Check
31491 ------------------------------------------------------------------------*/
31492 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31493 {
31494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31495 "WDI API call before module is initialized - Fail request");
31496
31497 return WDI_STATUS_E_NOT_ALLOWED;
31498 }
31499
31500 /*------------------------------------------------------------------------
31501 Fill in Event data and post to the Main FSM
31502 ------------------------------------------------------------------------*/
31503 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31504 wdiEventData.pEventData = bssid;
31505 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31506 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31507 wdiEventData.pUserData = pUserData;
31508
31509 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31510}
Abhishek Singh85b74712014-10-08 11:38:19 +053031511
31512/*
31513 * FUNCTION: WDI_ProcessGetFwStatsRsp
31514 * send the response with FW stats asked.
31515 */
31516WDI_Status
31517 WDI_ProcessGetFwStatsRsp
31518(
31519 WDI_ControlBlockType* pWDICtx,
31520 WDI_EventInfoType* pEventData
31521)
31522{
31523 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31524 tpHalfwStatsRspParams pHalFwstatsRsp;
31525 WDI_FWStatsResults fwStats;
31526
31527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31528
31529 /*-------------------------------------------------------------------------
31530 Sanity check
31531 -------------------------------------------------------------------------*/
31532 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31533 ( NULL == pEventData->pEventData))
31534 {
31535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31536 "%s: Invalid parameters", __func__);
31537 WDI_ASSERT(0);
31538 return WDI_STATUS_E_FAILURE;
31539 }
31540 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31541 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31542
31543 if(pHalFwstatsRsp->length)
31544 {
31545 switch( pHalFwstatsRsp->type )
31546 {
31547 case FW_UBSP_STATS:
31548 {
31549 ubspFwStats *ubspStatsfromFw;
31550
31551 fwStats.type = pHalFwstatsRsp->type;
31552 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31553 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31554 ubspStatsfromFw->ubsp_enter_cnt;
31555 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31556 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31557 }
31558 break;
31559 default:
31560 {
31561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31562 "%s: No handling for stats type %d", __func__,
31563 pHalFwstatsRsp->type);
31564 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31565 NULL, pWDICtx->pRspCBUserData);
31566 return WDI_STATUS_E_FAILURE;
31567 }
31568 }
31569 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31570 }
31571 else
31572 {
31573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31574 "%s: Length = 0 for type %d return failure ", __func__,
31575 pHalFwstatsRsp->type);
31576 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31577 NULL, pWDICtx->pRspCBUserData);
31578 return WDI_STATUS_E_FAILURE;
31579 }
31580 return WDI_STATUS_SUCCESS;
31581}
31582
31583/*
31584 * FUNCTION: WDI_ProcessGetFwStatsReq
31585 * Request to WDI to get FW Stats.
31586 */
31587WDI_Status
31588 WDI_ProcessGetFwStatsReq
31589(
31590 WDI_ControlBlockType* pWDICtx,
31591 WDI_EventInfoType* pEventData
31592)
31593{
31594 wpt_uint8* pSendBuffer = NULL;
31595 wpt_uint16 usDataOffset = 0;
31596 wpt_uint16 usSendSize = 0;
31597 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31598 tHalfwStatsReqParams halFwStatsReq;
31599
31600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31601
31602 /*-------------------------------------------------------------------------
31603 Sanity check
31604 -------------------------------------------------------------------------*/
31605 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31606 ( NULL == pEventData->pCBfnc ) )
31607 {
31608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31609 "%s: Invalid parameters", __func__);
31610 WDI_ASSERT(0);
31611 return WDI_STATUS_E_FAILURE;
31612 }
31613
31614 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31615
31616 /*-----------------------------------------------------------------------
31617 Get message buffer
31618 -----------------------------------------------------------------------*/
31619 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31620 pWDICtx, WDI_GET_FW_STATS_REQ,
31621 sizeof(tHalfwStatsReqParams),
31622 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31623 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31624 {
31625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31626 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31627 pEventData);
31628 WDI_ASSERT(0);
31629 return WDI_STATUS_E_FAILURE;
31630 }
31631
31632 pWDICtx->wdiReqStatusCB = NULL;
31633 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31634 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31635 wpalMemoryCopy( pSendBuffer+usDataOffset,
31636 &halFwStatsReq,
31637 sizeof(tHalfwStatsReqParams));
31638 /*-------------------------------------------------------------------------
31639 Send Get STA Request to HAL
31640 -------------------------------------------------------------------------*/
31641 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31642 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31643}
31644
Sunil Duttbd736ed2014-05-26 21:19:41 +053031645#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31646
31647/**
31648 @brief WDI_LLStatsSetReq
31649 This API is called to set link layer stats request in FW
31650
31651 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31652 wdiLLStatsSetRspCb : set link layer stats resp callback
31653 usrData : Client context
31654 @see
31655 @return SUCCESS or FAIL
31656*/
31657WDI_Status
31658WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31659 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31660 void* pUserData)
31661{
31662 WDI_EventInfoType wdiEventData;
31663
31664 /*------------------------------------------------------------------------
31665 Sanity Check
31666 ------------------------------------------------------------------------*/
31667 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31668 {
31669 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31670 "WDI API call before module is initialized - Fail request");
31671
31672 return WDI_STATUS_E_NOT_ALLOWED;
31673 }
31674
31675 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31676 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31677 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31678 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31679 wdiEventData.pUserData = pUserData;
31680
31681 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31682}
31683
31684/**
31685 @brief WDI_ProcessLLStatsSetReq -
31686 Set Link Layer Stats request to FW
31687
31688 @param pWDICtx : wdi context
31689 pEventData : indication data
31690
31691 @see
31692 @return none
31693*/
31694WDI_Status
31695WDI_ProcessLLStatsSetReq
31696(
31697 WDI_ControlBlockType* pWDICtx,
31698 WDI_EventInfoType* pEventData
31699)
31700{
31701 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31702 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31703 wpt_uint8* pSendBuffer = NULL;
31704 wpt_uint16 usSendSize = 0;
31705 wpt_uint16 usDataOffset = 0;
31706 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31707
31708 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31709 ( NULL == pEventData->pCBfnc ))
31710 {
31711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31712 "%s: Invalid parameters", __func__);
31713 WDI_ASSERT(0);
31714 return WDI_STATUS_E_FAILURE;
31715 }
31716
31717 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31718 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31719
31720 /*-----------------------------------------------------------------------
31721 Get message buffer
31722 ! TO DO : proper conversion into the HAL Message Request Format
31723 -----------------------------------------------------------------------*/
31724 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31725 pWDICtx,
31726 WDI_LL_STATS_SET_REQ,
31727 sizeof(tHalMacLlSetStatsReqParams),
31728 &pSendBuffer, &usDataOffset,
31729 &usSendSize))||
31730 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31731 {
31732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31733 "Unable to get send buffer in %s %p %p %p", __func__,
31734 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31735 WDI_ASSERT(0);
31736 return WDI_STATUS_E_FAILURE;
31737 }
31738
31739
Dino Mycled3d50022014-07-07 12:58:25 +053031740 /* Need to fill in the self STA Index */
31741 if ( WDI_STATUS_SUCCESS !=
31742 WDI_STATableFindStaidByAddr(pWDICtx,
31743 pwdiLLStatsSetReqParams->macAddr,
31744 &halLLStatsSetParams.sta_id))
31745 {
31746 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31747 MAC_ADDRESS_STR
31748 ": This station does not exist in the WDI Station Table",
31749 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31750
31751 wpalMemoryFree(pSendBuffer);
31752 return WDI_STATUS_E_FAILURE;
31753 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031754
31755 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031756 halLLStatsSetParams.mpdu_size_threshold =
31757 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31758 halLLStatsSetParams.aggressive_statistics_gathering =
31759 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31760
31761 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31762 " halLLStatsSetParams.req_id = %u",
31763 halLLStatsSetParams.req_id);
31764 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31765 " halLLStatsSetParams.sta_id = %u",
31766 halLLStatsSetParams.sta_id);
31767 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31768 " halLLStatsSetParams.mpdu_size_threshold = %u",
31769 halLLStatsSetParams.mpdu_size_threshold);
31770 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31771 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31772 halLLStatsSetParams.aggressive_statistics_gathering);
31773
31774 wpalMemoryCopy(pSendBuffer+usDataOffset,
31775 &halLLStatsSetParams,
31776 sizeof(halLLStatsSetParams));
31777
31778 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31779
31780 /*-------------------------------------------------------------------------
31781 Send Clear Link Layer Stats Request to HAL
31782 -------------------------------------------------------------------------*/
31783 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31784 wdiLLStatsSetCb, pEventData->pUserData,
31785 WDI_LL_STATS_SET_RSP);
31786}
31787
31788/**
31789 @brief WDI_LLStatsGetReq
31790 This API is called to get link layer stats request in FW
31791
31792 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31793 wdiLLStatsGetRspCb : get link layer stats resp callback
31794 usrData : Client context
31795 @see
31796 @return SUCCESS or FAIL
31797*/
31798WDI_Status
31799WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31800 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31801 void* pUserData)
31802{
31803 WDI_EventInfoType wdiEventData;
31804
31805 /*------------------------------------------------------------------------
31806 Sanity Check
31807 ------------------------------------------------------------------------*/
31808 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31809 {
31810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31811 "WDI API call before module is initialized - Fail request");
31812
31813 return WDI_STATUS_E_NOT_ALLOWED;
31814 }
31815
31816 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31817 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31818 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31819 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31820 wdiEventData.pUserData = pUserData;
31821
31822 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31823}
31824
31825/**
31826 @brief WDI_ProcessLLStatsGetReq -
31827 Get Link Layer Stats request to FW
31828
31829 @param pWDICtx : wdi context
31830 pEventData : indication data
31831
31832 @see
31833 @return none
31834*/
31835WDI_Status
31836WDI_ProcessLLStatsGetReq
31837(
31838 WDI_ControlBlockType* pWDICtx,
31839 WDI_EventInfoType* pEventData
31840)
31841{
31842 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31843 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31844 wpt_uint8* pSendBuffer = NULL;
31845 wpt_uint16 usSendSize = 0;
31846 wpt_uint16 usDataOffset = 0;
31847 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31848
31849 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31850 ( NULL == pEventData->pCBfnc ))
31851 {
31852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31853 "%s: Invalid parameters", __func__);
31854 WDI_ASSERT(0);
31855 return WDI_STATUS_E_FAILURE;
31856 }
31857
31858 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31859 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31860
31861 /*-----------------------------------------------------------------------
31862 Get message buffer
31863 ! TO DO : proper conversion into the HAL Message Request Format
31864 -----------------------------------------------------------------------*/
31865 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31866 pWDICtx,
31867 WDI_LL_STATS_GET_REQ,
31868 sizeof(tHalMacLlGetStatsReqParams),
31869 &pSendBuffer, &usDataOffset,
31870 &usSendSize))||
31871 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31872 {
31873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31874 "Unable to get send buffer in %s %p %p %p", __func__,
31875 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31876 WDI_ASSERT(0);
31877 return WDI_STATUS_E_FAILURE;
31878 }
Dino Mycled3d50022014-07-07 12:58:25 +053031879 /* Need to fill in the self STA Index */
31880 if ( WDI_STATUS_SUCCESS !=
31881 WDI_STATableFindStaidByAddr(pWDICtx,
31882 pwdiLLStatsGetReqParams->macAddr,
31883 &halLLStatsGetParams.sta_id))
31884 {
31885 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31886 MAC_ADDRESS_STR
31887 ": This station does not exist in the WDI Station Table",
31888 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31889
31890 wpalMemoryFree(pSendBuffer);
31891 return WDI_STATUS_E_FAILURE;
31892 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031893
31894 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031895 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31896
31897 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31898 " halLLStatsGetParams.req_id = %u",
31899 halLLStatsGetParams.req_id);
31900 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31901 " halLLStatsGetParams.staId = %u",
31902 halLLStatsGetParams.sta_id);
31903 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31904 " halLLStatsGetParams.Mask = %u",
31905 halLLStatsGetParams.param_id_mask);
31906
31907 wpalMemoryCopy(pSendBuffer+usDataOffset,
31908 &halLLStatsGetParams,
31909 sizeof(halLLStatsGetParams));
31910
31911 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31912
31913 /*-------------------------------------------------------------------------
31914 Send Clear Link Layer Stats Request to HAL
31915 -------------------------------------------------------------------------*/
31916 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31917 wdiLLStatsGetCb, pEventData->pUserData,
31918 WDI_LL_STATS_GET_RSP);
31919}
31920
31921/**
31922 @brief WDI_LLStatsClearReq
31923 This API is called to clear link layer stats request in FW
31924
31925 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
31926 wdiLLStatsSetRspCb : clear link layer stats resp callback
31927 usrData : Client context
31928 @see
31929 @return SUCCESS or FAIL
31930*/
31931WDI_Status
31932WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
31933 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
31934 void* pUserData)
31935{
31936 WDI_EventInfoType wdiEventData;
31937
31938 /*------------------------------------------------------------------------
31939 Sanity Check
31940 ------------------------------------------------------------------------*/
31941 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31942 {
31943 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31944 "WDI API call before module is initialized - Fail request");
31945
31946 return WDI_STATUS_E_NOT_ALLOWED;
31947 }
31948
31949 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
31950 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
31951 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
31952 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
31953 wdiEventData.pUserData = pUserData;
31954
31955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31956 "%s:%d Enter", __func__, __LINE__);
31957
31958 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31959}
31960
31961/**
31962 @brief WDI_ProcessLLStatsClearReq -
31963 Clear Link Layer Stats request to FW
31964
31965 @param pWDICtx : wdi context
31966 pEventData : indication data
31967
31968 @see
31969 @return none
31970*/
31971WDI_Status
31972WDI_ProcessLLStatsClearReq
31973(
31974 WDI_ControlBlockType* pWDICtx,
31975 WDI_EventInfoType* pEventData
31976)
31977{
31978 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
31979 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
31980 wpt_uint8* pSendBuffer = NULL;
31981 wpt_uint16 usSendSize = 0;
31982 wpt_uint16 usDataOffset = 0;
31983 tHalMacLlClearStatsReqParams halLLStatsClearParams;
31984
31985 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31986 ( NULL == pEventData->pCBfnc ))
31987 {
31988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31989 "%s: Invalid parameters", __func__);
31990 WDI_ASSERT(0);
31991 return WDI_STATUS_E_FAILURE;
31992 }
31993
31994 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
31995 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
31996
31997 /*-----------------------------------------------------------------------
31998 Get message buffer
31999 ! TO DO : proper conversion into the HAL Message Request Format
32000 -----------------------------------------------------------------------*/
32001 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32002 pWDICtx,
32003 WDI_LL_STATS_CLEAR_REQ,
32004 sizeof(tHalMacLlClearStatsReqParams),
32005 &pSendBuffer, &usDataOffset,
32006 &usSendSize))||
32007 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
32008 {
32009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32010 "Unable to get send buffer in %s %p %p %p", __func__,
32011 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
32012 WDI_ASSERT(0);
32013 return WDI_STATUS_E_FAILURE;
32014 }
Dino Mycled3d50022014-07-07 12:58:25 +053032015 /* Need to fill in the self STA Index */
32016 if ( WDI_STATUS_SUCCESS !=
32017 WDI_STATableFindStaidByAddr(pWDICtx,
32018 pwdiLLStatsClearReqParams->macAddr,
32019 &halLLStatsClearParams.sta_id))
32020 {
32021 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32022 MAC_ADDRESS_STR
32023 ": This station does not exist in the WDI Station Table",
32024 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
32025
32026 wpalMemoryFree(pSendBuffer);
32027 return WDI_STATUS_E_FAILURE;
32028 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032029
32030 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032031 halLLStatsClearParams.stats_clear_req_mask =
32032 pwdiLLStatsClearReqParams->statsClearReqMask;
32033 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
32034
32035 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32036 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
32037 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32038 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
32039 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32040 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
32041 halLLStatsClearParams.stats_clear_req_mask);
32042 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32043 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
32044
32045 wpalMemoryCopy(pSendBuffer+usDataOffset,
32046 &halLLStatsClearParams,
32047 sizeof(halLLStatsClearParams));
32048
32049 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32050
32051 /*-------------------------------------------------------------------------
32052 Send Clear Link Layer Stats Request to HAL
32053 -------------------------------------------------------------------------*/
32054 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32055 wdiLLStatsClearCb, pEventData->pUserData,
32056 WDI_LL_STATS_CLEAR_RSP);
32057}
32058#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053032059
Abhishek Singh85b74712014-10-08 11:38:19 +053032060WDI_Status WDI_FWStatsGetReq( void* pUserData,
32061 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
32062 wpt_uint32 stats)
32063{
32064 WDI_EventInfoType wdiEventData;
32065
32066 /*------------------------------------------------------------------------
32067 Sanity Check
32068 ------------------------------------------------------------------------*/
32069 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32070 {
32071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32072 "WDI API call before module is initialized - Fail request");
32073 return WDI_STATUS_E_NOT_ALLOWED;
32074 }
32075 /*------------------------------------------------------------------------
32076 Fill in Event data and post to the Main FSM
32077 ------------------------------------------------------------------------*/
32078 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
32079 wdiEventData.pEventData = (void *)&stats;
32080 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
32081 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
32082 wdiEventData.pUserData = pUserData;
32083
32084 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32085
32086}
32087
Katya Nigamf0511f62015-05-05 16:40:57 +053032088WDI_Status
32089WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
32090 WDI_MonStartRspCb wdiMonStartRspCb,
32091 void* pUserData)
32092{
32093 WDI_EventInfoType wdiEventData;
32094
32095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32096 "%s", __func__);
32097
32098 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32099 {
32100 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32101 "WDI API call before module is initialized - Fail request");
32102
32103 return WDI_STATUS_E_NOT_ALLOWED;
32104 }
32105
32106 wdiEventData.wdiRequest = WDI_MON_START_REQ;
32107 wdiEventData.pEventData = pwdiMonStartReqParams;
32108 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
32109 wdiEventData.pCBfnc = wdiMonStartRspCb;
32110 wdiEventData.pUserData = pUserData;
32111
32112 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32113}
32114
32115WDI_Status
32116WDI_ProcessMonStartReq
32117(
32118 WDI_ControlBlockType* pWDICtx,
32119 WDI_EventInfoType* pEventData
32120)
32121{
32122 WDI_MonStartReqType* pwdiMonStartReqParams;
32123 WDI_MonStartRspCb wdiMonStartCb;
32124 wpt_uint8* pSendBuffer = NULL;
32125 wpt_uint16 usSendSize = 0;
32126 wpt_uint16 usDataOffset = 0;
32127 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
32128
32129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32130 "%s", __func__);
32131
32132 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32133 ( NULL == pEventData->pCBfnc ))
32134 {
32135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32136 "%s: Invalid parameters", __func__);
32137 WDI_ASSERT(0);
32138 return WDI_STATUS_E_FAILURE;
32139 }
32140
32141 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
32142 wdiMonStartCb = (WDI_MonStartRspCb)pEventData->pCBfnc;
32143
32144 /*-----------------------------------------------------------------------
32145 Get message buffer
32146 ! TO DO : proper conversion into the HAL Message Request Format
32147 -----------------------------------------------------------------------*/
32148 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32149 pWDICtx,
32150 WDI_MON_START_REQ,
32151 sizeof(tHalEnableMonitorModeReqParams),
32152 &pSendBuffer, &usDataOffset,
32153 &usSendSize))||
32154 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
32155 {
32156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32157 "Unable to get send buffer in %s %p %p %p", __func__,
32158 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
32159 WDI_ASSERT(0);
32160 return WDI_STATUS_E_FAILURE;
32161 }
32162
32163 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
32164 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
32165 pwdiMonStartReqParams->ChannelBW);
32166 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
32167 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
32168 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
32169 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
32170 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
32171 pwdiMonStartReqParams->mmFilters[0].macAddr,
32172 sizeof( wpt_macAddr ));
32173 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
32174 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
32175 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
32176 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
32177
32178 wpalMemoryCopy(pSendBuffer+usDataOffset,
32179 &halEnableMonitorModeParams,
32180 sizeof(halEnableMonitorModeParams));
32181
32182 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32183
32184 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32185 wdiMonStartCb, pEventData->pUserData,
32186 WDI_MON_START_RSP);
32187}
32188
32189WDI_Status
32190WDI_ProcessMonStartRsp
32191(
32192 WDI_ControlBlockType* pWDICtx,
32193 WDI_EventInfoType* pEventData
32194)
32195{
32196 WDI_MonStartRspCb wdiMonStartRspCb;
32197
32198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32199 "%s: Enter ", __func__);
32200 /*-------------------------------------------------------------------------
32201 Sanity check
32202 -------------------------------------------------------------------------*/
32203 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32204 ( NULL == pEventData->pEventData))
32205 {
32206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32207 "%s: Invalid parameters", __func__);
32208 WDI_ASSERT(0);
32209 return WDI_STATUS_E_FAILURE;
32210 }
32211
32212 wdiMonStartRspCb = (WDI_MonStartRspCb)pWDICtx->pfncRspCB;
32213
32214 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32215
32216 return WDI_STATUS_SUCCESS;
32217}
32218
32219WDI_Status
32220WDI_MonStopReq(WDI_MonStopRspCb wdiMonStopRspCb,
32221 void* pUserData)
32222{
32223 WDI_EventInfoType wdiEventData;
32224
32225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32226 "%s", __func__);
32227
32228 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32229 {
32230 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32231 "WDI API call before module is initialized - Fail request");
32232
32233 return WDI_STATUS_E_NOT_ALLOWED;
32234 }
32235
32236 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
32237 wdiEventData.pEventData = NULL;
32238 wdiEventData.uEventDataSize = sizeof(NULL);
32239 wdiEventData.pCBfnc = wdiMonStopRspCb;
32240 wdiEventData.pUserData = pUserData;
32241
32242 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32243}
32244
32245WDI_Status
32246WDI_ProcessMonStopReq
32247(
32248 WDI_ControlBlockType* pWDICtx,
32249 WDI_EventInfoType* pEventData
32250)
32251{
32252 WDI_MonStopRspCb wdiMonStopCb;
32253 wpt_uint8* pSendBuffer = NULL;
32254 wpt_uint16 usSendSize = 0;
32255 wpt_uint16 usDataOffset = 0;
32256 wpt_uint8 resetConfiguration;
32257
32258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32259 "%s", __func__);
32260
32261 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
32262 {
32263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32264 "%s: Invalid parameters", __func__);
32265 WDI_ASSERT(0);
32266 return WDI_STATUS_E_FAILURE;
32267 }
32268
32269 wdiMonStopCb = (WDI_MonStopRspCb)pEventData->pCBfnc;
32270
32271 /*-----------------------------------------------------------------------
32272 Get message buffer
32273 ! TO DO : proper conversion into the HAL Message Request Format
32274 -----------------------------------------------------------------------*/
32275 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32276 pWDICtx,
32277 WDI_MON_STOP_REQ,
32278 sizeof(wpt_uint8),
32279 &pSendBuffer, &usDataOffset,
32280 &usSendSize))||
32281 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
32282 {
32283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32284 "Unable to get send buffer in %s %p %p", __func__,
32285 pEventData, wdiMonStopCb);
32286 WDI_ASSERT(0);
32287 return WDI_STATUS_E_FAILURE;
32288 }
32289
32290 wpalMemoryCopy(pSendBuffer+usDataOffset,
32291 &resetConfiguration,
32292 sizeof(wpt_uint8));
32293
32294 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32295
32296 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32297 wdiMonStopCb, pEventData->pUserData,
32298 WDI_MON_STOP_RSP);
32299}
32300
32301WDI_Status
32302WDI_ProcessMonStopRsp
32303(
32304 WDI_ControlBlockType* pWDICtx,
32305 WDI_EventInfoType* pEventData
32306)
32307{
32308 WDI_MonStopRspCb wdiMonStopRspCb;
32309
32310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32311 "%s: Enter ", __func__);
32312 /*-------------------------------------------------------------------------
32313 Sanity check
32314 -------------------------------------------------------------------------*/
32315 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
32316 {
32317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32318 "%s: Invalid parameters", __func__);
32319 WDI_ASSERT(0);
32320 return WDI_STATUS_E_FAILURE;
32321 }
32322
32323 wdiMonStopRspCb = (WDI_MonStopRspCb)pWDICtx->pfncRspCB;
32324
32325 wdiMonStopRspCb(pWDICtx->pRspCBUserData);
32326
32327 return WDI_STATUS_SUCCESS;
32328}
32329
Dino Mycle41bdc942014-06-10 11:30:24 +053032330#ifdef WLAN_FEATURE_EXTSCAN
32331
32332/**
32333 @brief Process EXTSCAN BUffer full indication from FW
32334
32335 @param pWDICtx: pointer to the WLAN DAL context
32336 pEventData: pointer to the event information structure
32337
32338 @see
32339 @return Result of the function call
32340*/
32341WDI_Status
32342WDI_ProcessEXTScanProgressInd
32343(
32344 WDI_ControlBlockType* pWDICtx,
32345 WDI_EventInfoType* pEventData
32346)
32347{
32348 WDI_LowLevelIndType wdiInd;
32349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32350
32351 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32352 "%s: ", __func__);
32353
32354 /* sanity check */
32355 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32356 ( NULL == pEventData->pEventData))
32357 {
32358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32359 "%s: Invalid parameters", __func__);
32360 WDI_ASSERT(0);
32361 return WDI_STATUS_E_FAILURE;
32362 }
32363
32364 /* Fill in the indication parameters */
32365 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
32366
32367 /* extract response and send it to UMAC */
32368 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32369
32370 /* Notify UMAC */
32371 if (pWDICtx->wdiLowLevelIndCB)
32372 {
32373 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32374 }
32375 else
32376 {
Dino Mycled3d50022014-07-07 12:58:25 +053032377 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032378 "%s: WDILowLevelIndCb is null", __func__);
32379 WDI_ASSERT(0);
32380 return WDI_STATUS_E_FAILURE;
32381 }
32382 return WDI_STATUS_SUCCESS;
32383
32384} /* End of WDI_ProcessEXTScanProgressInd */
32385
32386
32387/**
32388 @brief Process EXTScan Scan Available indication from FW
32389
32390 @param pWDICtx: pointer to the WLAN DAL context
32391 pEventData: pointer to the event information structure
32392
32393 @see
32394 @return Result of the function call
32395*/
32396WDI_Status
32397WDI_ProcessEXTScanScanAvailableInd
32398(
32399 WDI_ControlBlockType* pWDICtx,
32400 WDI_EventInfoType* pEventData
32401)
32402{
32403 WDI_LowLevelIndType wdiInd;
32404 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32405
32406 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32407 "%s: ", __func__);
32408
32409 /* sanity check */
32410 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32411 ( NULL == pEventData->pEventData))
32412 {
32413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32414 "%s: Invalid parameters", __func__);
32415 WDI_ASSERT(0);
32416 return WDI_STATUS_E_FAILURE;
32417 }
32418
32419
32420
32421 /* Fill in the indication parameters */
32422 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32423
32424 /* extract response and send it to UMAC */
32425 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32426
32427 /* Notify UMAC */
32428 if (pWDICtx->wdiLowLevelIndCB)
32429 {
32430 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32431 }
32432 else
32433 {
32434 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32435 "%s: WDILowLevelIndCb is null", __func__);
32436 WDI_ASSERT(0);
32437 return WDI_STATUS_E_FAILURE;
32438 }
32439 return WDI_STATUS_SUCCESS;
32440} /* End of WDI_ProcessEXTScanScanDoneInd */
32441
32442/**
32443 @brief Process EXTScan Result Indication indication from FW
32444
32445 @param pWDICtx: pointer to the WLAN DAL context
32446 pEventData: pointer to the event information structure
32447
32448 @see
32449 @return Result of the function call
32450*/
32451WDI_Status
32452WDI_ProcessEXTScanResultInd
32453(
32454 WDI_ControlBlockType* pWDICtx,
32455 WDI_EventInfoType* pEventData
32456)
32457{
32458 WDI_LowLevelIndType wdiInd;
32459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32460
32461 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32462 "%s: ", __func__);
32463
32464 /* sanity check */
32465 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32466 ( NULL == pEventData->pEventData))
32467 {
32468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32469 "%s: Invalid parameters", __func__);
32470 WDI_ASSERT(0);
32471 return WDI_STATUS_E_FAILURE;
32472 }
32473
32474 /* Fill in the indication parameters */
32475 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32476
32477 /* extract response and send it to UMAC */
32478 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32479
32480 /* Notify UMAC */
32481 if (pWDICtx->wdiLowLevelIndCB)
32482 {
32483 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32484 }
32485 else
32486 {
32487 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32488 "%s: WDILowLevelIndCb is null", __func__);
32489 WDI_ASSERT(0);
32490 return WDI_STATUS_E_FAILURE;
32491 }
32492 return WDI_STATUS_SUCCESS;
32493} /* End of WDI_ProcessEXTScanResultInd */
32494
32495/**
32496 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32497
32498 @param pWDICtx: pointer to the WLAN DAL context
32499 pEventData: pointer to the event information structure
32500
32501 @see
32502 @return Result of the function call
32503*/
32504WDI_Status
32505WDI_ProcessEXTScanBssidHotListResultInd
32506(
32507 WDI_ControlBlockType* pWDICtx,
32508 WDI_EventInfoType* pEventData
32509)
32510{
32511 WDI_LowLevelIndType wdiInd;
32512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32513
32514 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32515 "%s: ", __func__);
32516
32517 /* sanity check */
32518 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32519 ( NULL == pEventData->pEventData))
32520 {
32521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32522 "%s: Invalid parameters", __func__);
32523 WDI_ASSERT(0);
32524 return WDI_STATUS_E_FAILURE;
32525 }
32526
32527 /* Fill in the indication parameters */
32528 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32529
32530 /* extract response and send it to UMAC */
32531 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32532
32533 /* Notify UMAC */
32534 if (pWDICtx->wdiLowLevelIndCB)
32535 {
32536 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32537 }
32538 else
32539 {
32540 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32541 "%s: WDILowLevelIndCb is null", __func__);
32542 WDI_ASSERT(0);
32543 return WDI_STATUS_E_FAILURE;
32544 }
32545 return WDI_STATUS_SUCCESS;
32546} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32547
32548/**
32549 @brief Process EXTScan Significant RSSI Result Indication indication from FW
32550
32551 @param pWDICtx: pointer to the WLAN DAL context
32552 pEventData: pointer to the event information structure
32553
32554 @see
32555 @return Result of the function call
32556*/
32557WDI_Status
32558WDI_ProcessEXTScanSignfRssiResultInd
32559(
32560 WDI_ControlBlockType* pWDICtx,
32561 WDI_EventInfoType* pEventData
32562)
32563{
32564 WDI_LowLevelIndType wdiInd;
32565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32566
32567 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32568 "%s: ", __func__);
32569
32570 /* sanity check */
32571 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32572 ( NULL == pEventData->pEventData))
32573 {
32574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32575 "%s: Invalid parameters", __func__);
32576 WDI_ASSERT(0);
32577 return WDI_STATUS_E_FAILURE;
32578 }
32579
32580 /* Fill in the indication parameters */
32581 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
32582
32583 /* extract response and send it to UMAC */
32584 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32585
32586 /* Notify UMAC */
32587 if (pWDICtx->wdiLowLevelIndCB)
32588 {
32589 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32590 }
32591 else
32592 {
32593 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32594 "%s: WDILowLevelIndCb is null", __func__);
32595 WDI_ASSERT(0);
32596 return WDI_STATUS_E_FAILURE;
32597 }
32598 return WDI_STATUS_SUCCESS;
32599} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
32600
32601/**
32602 @brief WDI_EXTScanGetCapabilitiesReq
32603
32604 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32605 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32606 of the Req operation received from the device
32607 pUserData: user data will be passed back with the callback
32608
32609 @return SUCCESS or FAIL
32610*/
32611WDI_Status
32612WDI_EXTScanGetCapabilitiesReq(
32613 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32614 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32615 void* pUserData)
32616{
32617 WDI_EventInfoType wdiEventData;
32618
32619 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32620 "%s: %d ",__func__, __LINE__);
32621 /*------------------------------------------------------------------------
32622 Sanity Check
32623 ------------------------------------------------------------------------*/
32624 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32625 {
32626 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32627 "WDI API call before module is initialized - Fail request");
32628
32629 return WDI_STATUS_E_NOT_ALLOWED;
32630 }
32631
32632 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32633 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32634 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32635 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32636 wdiEventData.pUserData = pUserData;
32637
32638 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32639}
32640
32641/**
32642 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32643 Extended Scan Get Capability request to FW
32644
32645 @param pWDICtx : wdi context
32646 pEventData : indication data
32647
32648 @see
32649 @return none
32650*/
32651WDI_Status
32652WDI_ProcessEXTScanGetCapabilitiesReq
32653(
32654 WDI_ControlBlockType* pWDICtx,
32655 WDI_EventInfoType* pEventData
32656)
32657{
32658 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32659 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32660 wpt_uint8* pSendBuffer = NULL;
32661 wpt_uint16 usSendSize = 0;
32662 wpt_uint16 usDataOffset = 0;
32663 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32664
32665 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32666 "%s: %d Enter",__func__, __LINE__);
32667
32668 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32669 ( NULL == pEventData->pCBfnc ))
32670 {
32671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32672 "%s: Invalid parameters", __func__);
32673 WDI_ASSERT(0);
32674 return WDI_STATUS_E_FAILURE;
32675 }
32676
32677 pwdiEXTScanGetCapabilitiesReqParams =
32678 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
32679 wdiEXTScanGetCapabilitiesRspCb =
32680 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
32681
32682 /*-----------------------------------------------------------------------
32683 Get message buffer
32684 ! TO DO : proper conversion into the HAL Message Request Format
32685 -----------------------------------------------------------------------*/
32686 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32687 pWDICtx,
32688 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
32689 sizeof(halEXTScanGetCapReqParams),
32690 &pSendBuffer, &usDataOffset,
32691 &usSendSize))||
32692 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
32693 {
32694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32695 "Unable to get send buffer in %s %p %p %p", __func__,
32696 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
32697 wdiEXTScanGetCapabilitiesRspCb);
32698 WDI_ASSERT(0);
32699 return WDI_STATUS_E_FAILURE;
32700 }
32701
32702 halEXTScanGetCapReqParams.requestId =
32703 pwdiEXTScanGetCapabilitiesReqParams->requestId;
32704 halEXTScanGetCapReqParams.sessionId =
32705 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
32706
32707 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32708 " requestId %u "
32709 " sessionId %u ",
32710 halEXTScanGetCapReqParams.requestId,
32711 halEXTScanGetCapReqParams.sessionId);
32712
32713 wpalMemoryCopy(pSendBuffer+usDataOffset,
32714 &halEXTScanGetCapReqParams,
32715 sizeof(halEXTScanGetCapReqParams));
32716
32717 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32718
32719
32720 /*-------------------------------------------------------------------------
32721 Send EXTScan Stop Request to HAL
32722 -------------------------------------------------------------------------*/
32723 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32724 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
32725 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
32726}
32727
32728/**
32729 @brief WDI_EXTScanGetCachedResultsReq
32730
32731 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
32732 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
32733 of the Req operation received from the device
32734 pUserData: user data will be passed back with the callback
32735
32736 @return SUCCESS or FAIL
32737*/
32738
32739WDI_Status
32740WDI_EXTScanGetCachedResultsReq(
32741 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
32742 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
32743 void* pUserData)
32744{
32745 WDI_EventInfoType wdiEventData;
32746
32747 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32748 "%s: %d Enter",__func__, __LINE__);
32749 /*------------------------------------------------------------------------
32750 Sanity Check
32751 ------------------------------------------------------------------------*/
32752 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32753 {
32754 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32755 "WDI API call before module is initialized - Fail request");
32756
32757 return WDI_STATUS_E_NOT_ALLOWED;
32758 }
32759
32760 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
32761 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
32762 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
32763 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
32764 wdiEventData.pUserData = pUserData;
32765
32766 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32767}
32768
32769/**
32770 @brief WDI_ProcessEXTScanGetCachedResultsReq -
32771 Extended Scan Get Cached Result request to FW
32772
32773 @param pWDICtx : wdi context
32774 pEventData : indication data
32775
32776 @see
32777 @return none
32778*/
32779WDI_Status
32780WDI_ProcessEXTScanGetCachedResultsReq
32781(
32782 WDI_ControlBlockType* pWDICtx,
32783 WDI_EventInfoType* pEventData
32784)
32785{
32786 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
32787 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
32788 wpt_uint8* pSendBuffer = NULL;
32789 wpt_uint16 usSendSize = 0;
32790 wpt_uint16 usDataOffset = 0;
32791 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
32792
32793 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32794 "%s: %d Enter",__func__, __LINE__);
32795
32796 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32797 ( NULL == pEventData->pCBfnc ))
32798 {
32799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32800 "%s: Invalid parameters", __func__);
32801 WDI_ASSERT(0);
32802 return WDI_STATUS_E_FAILURE;
32803 }
32804
32805 pwdiEXTScanGetCachedResultsReqParams =
32806 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
32807 wdiEXTScanGetCachedResultsCb =
32808 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
32809
32810 /*-----------------------------------------------------------------------
32811 Get message buffer
32812 ! TO DO : proper conversion into the HAL Message Request Format
32813 -----------------------------------------------------------------------*/
32814 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32815 pWDICtx,
32816 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
32817 sizeof(tHalExtScanGetScanReq),
32818 &pSendBuffer, &usDataOffset,
32819 &usSendSize))||
32820 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
32821 {
32822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32823 "Unable to get send buffer in %s %p %p %p", __func__,
32824 pEventData, pwdiEXTScanGetCachedResultsReqParams,
32825 wdiEXTScanGetCachedResultsCb);
32826 WDI_ASSERT(0);
32827 return WDI_STATUS_E_FAILURE;
32828 }
32829
32830 halEXTScanGetScanReqParams.requestId =
32831 pwdiEXTScanGetCachedResultsReqParams->requestId;
32832 halEXTScanGetScanReqParams.sessionId =
32833 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32834 halEXTScanGetScanReqParams.flush =
32835 pwdiEXTScanGetCachedResultsReqParams->flush;
32836
32837 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32838 " requestId %u "
32839 " sessionId %u "
32840 " flush %u ",
32841 halEXTScanGetScanReqParams.requestId,
32842 halEXTScanGetScanReqParams.sessionId,
32843 halEXTScanGetScanReqParams.flush);
32844
32845 wpalMemoryCopy(pSendBuffer+usDataOffset,
32846 &halEXTScanGetScanReqParams,
32847 sizeof(halEXTScanGetScanReqParams));
32848
32849 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32850
32851
32852 /*-------------------------------------------------------------------------
32853 Send EXTScan Stop Request to HAL
32854 -------------------------------------------------------------------------*/
32855 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32856 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32857 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32858}
32859
32860/**
32861 @brief WDI_EXTScanStopReq
32862
32863 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32864 WDI_EXTScanStopRspCb: callback for passing back the response
32865 of the Req operation received from the device
32866 pUserData: user data will be passed back with the callback
32867
32868 @return SUCCESS or FAIL
32869*/
32870WDI_Status
32871WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32872 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32873 void* pUserData)
32874{
32875 WDI_EventInfoType wdiEventData;
32876
32877 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32878 "%s: %d ",__func__, __LINE__);
32879 /*------------------------------------------------------------------------
32880 Sanity Check
32881 ------------------------------------------------------------------------*/
32882 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32883 {
32884 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32885 "WDI API call before module is initialized - Fail request");
32886
32887 return WDI_STATUS_E_NOT_ALLOWED;
32888 }
32889
32890 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32891 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32892 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32893 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32894 wdiEventData.pUserData = pUserData;
32895
32896 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32897}
32898
32899/**
32900 @brief WDI_ProcessEXTScanStopReq -
32901 Extended Scan Stop request to FW
32902
32903 @param pWDICtx : wdi context
32904 pEventData : indication data
32905
32906 @see
32907 @return none
32908*/
32909WDI_Status
32910WDI_ProcessEXTScanStopReq
32911(
32912 WDI_ControlBlockType* pWDICtx,
32913 WDI_EventInfoType* pEventData
32914)
32915{
32916 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
32917 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
32918 wpt_uint8* pSendBuffer = NULL;
32919 wpt_uint16 usSendSize = 0;
32920 wpt_uint16 usDataOffset = 0;
32921 tHalExtScanStopReq halEXTScanStopReqParams;
32922
32923 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32924 "%s: %d ",__func__, __LINE__);
32925
32926 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32927 ( NULL == pEventData->pCBfnc ))
32928 {
32929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32930 "%s: Invalid parameters", __func__);
32931 WDI_ASSERT(0);
32932 return WDI_STATUS_E_FAILURE;
32933 }
32934
32935 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
32936 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
32937
32938 /*-----------------------------------------------------------------------
32939 Get message buffer
32940 ! TO DO : proper conversion into the HAL Message Request Format
32941 -----------------------------------------------------------------------*/
32942 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32943 pWDICtx,
32944 WDI_EXTSCAN_STOP_REQ,
32945 sizeof(tHalExtScanStopReq),
32946 &pSendBuffer, &usDataOffset,
32947 &usSendSize))||
32948 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
32949 {
32950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32951 "Unable to get send buffer in %s %p %p %p", __func__,
32952 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
32953 WDI_ASSERT(0);
32954 return WDI_STATUS_E_FAILURE;
32955 }
32956
32957 halEXTScanStopReqParams.requestId =
32958 pwdiEXTScanStopReqParams->requestId;
32959 halEXTScanStopReqParams.sessionId =
32960 pwdiEXTScanStopReqParams->sessionId;
32961
32962 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32963 " halEXTScanStopReqParams.requestId %u "
32964 " halEXTScanStopReqParams.sessionId %u ",
32965 halEXTScanStopReqParams.requestId,
32966 halEXTScanStopReqParams.sessionId);
32967
32968 wpalMemoryCopy(pSendBuffer+usDataOffset,
32969 &halEXTScanStopReqParams,
32970 sizeof(halEXTScanStopReqParams));
32971
32972 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32973
32974
32975 /*-------------------------------------------------------------------------
32976 Send EXTScan Stop Request to HAL
32977 -------------------------------------------------------------------------*/
32978 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32979 wdiEXTScanStopCb, pEventData->pUserData,
32980 WDI_EXTSCAN_STOP_RSP);
32981}
32982
32983/**
32984 @brief WDI_EXTScanStartReq
32985
32986 @param WDI_EXTScanStartReqParams: Req parameter for the FW
32987 WDI_EXTScanStartRspCb: callback for passing back the response
32988 of the Req operation received from the device
32989 pUserData: user data will be passed back with the callback
32990
32991 @return SUCCESS or FAIL
32992*/
32993WDI_Status
32994WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
32995 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
32996 void* pUserData)
32997{
32998 WDI_EventInfoType wdiEventData;
32999
33000 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33001 "%s: %d Enter",__func__, __LINE__);
33002 /*------------------------------------------------------------------------
33003 Sanity Check
33004 ------------------------------------------------------------------------*/
33005 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33006 {
33007 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33008 "WDI API call before module is initialized - Fail request");
33009
33010 return WDI_STATUS_E_NOT_ALLOWED;
33011 }
33012
33013 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
33014 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
33015 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
33016 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
33017 wdiEventData.pUserData = pUserData;
33018
33019 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33020}
33021
33022/**
33023 @brief WDI_ProcessEXTScanStartReq -
33024 Extended Scan Start Request to FW
33025
33026 @param pWDICtx : wdi context
33027 pEventData : indication data
33028
33029 @see
33030 @return none
33031*/
33032WDI_Status
33033WDI_ProcessEXTScanStartReq
33034(
33035 WDI_ControlBlockType* pWDICtx,
33036 WDI_EventInfoType* pEventData
33037)
33038{
33039 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
33040 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
33041 wpt_uint8* pSendBuffer = NULL;
33042 wpt_uint16 usSendSize = 0;
33043 wpt_uint16 usDataOffset = 0;
33044 tpHalExtScanStartReq pHalExtScanStartReqParams;
33045 int i = 0;
33046 int j = 0;
33047
33048 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33049 "%s: %d Enter",__func__, __LINE__);
33050
33051 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33052 ( NULL == pEventData->pCBfnc ))
33053 {
33054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33055 "%s: Invalid parameters", __func__);
33056 WDI_ASSERT(0);
33057 return WDI_STATUS_E_FAILURE;
33058 }
33059
33060 pwdiEXTScanStartReqParams =
33061 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
33062 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
33063
33064 /*-----------------------------------------------------------------------
33065 Get message buffer
33066 ! TO DO : proper conversion into the HAL Message Request Format
33067 -----------------------------------------------------------------------*/
33068 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33069 pWDICtx,
33070 WDI_EXTSCAN_START_REQ,
33071 sizeof(tHalExtScanStartReq),
33072 &pSendBuffer, &usDataOffset,
33073 &usSendSize))||
33074 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
33075 {
33076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33077 "Unable to get send buffer in %s %p %p %p", __func__,
33078 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
33079 WDI_ASSERT(0);
33080 return WDI_STATUS_E_FAILURE;
33081 }
33082
33083 pHalExtScanStartReqParams =
33084 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
33085
33086 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
33087 pHalExtScanStartReqParams->maxApPerScan =
33088 pwdiEXTScanStartReqParams->maxAPperScan;
33089 pHalExtScanStartReqParams->reportThreshold =
33090 pwdiEXTScanStartReqParams->reportThreshold;
33091 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
33092 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
33093 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
33094
33095 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
33096 {
33097 pHalExtScanStartReqParams->bucketData[i].bucketId =
33098 pwdiEXTScanStartReqParams->buckets[i].bucket;
33099 pHalExtScanStartReqParams->bucketData[i].channelBand =
33100 pwdiEXTScanStartReqParams->buckets[i].band;
33101 pHalExtScanStartReqParams->bucketData[i].period =
33102 pwdiEXTScanStartReqParams->buckets[i].period;
33103 pHalExtScanStartReqParams->bucketData[i].reportEvents =
33104 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
33105 pHalExtScanStartReqParams->bucketData[i].numChannels =
33106 pwdiEXTScanStartReqParams->buckets[i].numChannels;
33107
33108 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
33109 {
33110 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
33111 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
33112 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
33113 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
33114 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
33115 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
33116 }
33117
33118 }
33119
33120
33121 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33122 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
33123 " sessionId %u numBuckets%u ",
33124 pHalExtScanStartReqParams->basePeriod,
33125 pHalExtScanStartReqParams->maxApPerScan,
33126 pHalExtScanStartReqParams->reportThreshold,
33127 pHalExtScanStartReqParams->requestId,
33128 pHalExtScanStartReqParams->sessionId,
33129 pHalExtScanStartReqParams->numBuckets);
33130
33131 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
33132 {
33133 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
33134 " %d) bucketId %u channelBand %u period %u "
33135 " reportEvents %u numChannels %u ",i,
33136 pHalExtScanStartReqParams->bucketData[i].bucketId,
33137 pHalExtScanStartReqParams->bucketData[i].channelBand,
33138 pHalExtScanStartReqParams->bucketData[i].period,
33139 pHalExtScanStartReqParams->bucketData[i].reportEvents,
33140 pHalExtScanStartReqParams->bucketData[i].numChannels);
33141
33142 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
33143 {
33144 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33145 "%d) channel %u dwellTimeMs %u passive %u ",j,
33146 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
33147 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
33148 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
33149 }
33150
33151 }
33152
Dino Mycle41bdc942014-06-10 11:30:24 +053033153 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33154
33155 /*-------------------------------------------------------------------------
33156 Send EXTSCAN Start Request to HAL
33157 -------------------------------------------------------------------------*/
33158 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33159 wdiEXTScanStartCb, pEventData->pUserData,
33160 WDI_EXTSCAN_START_RSP);
33161}
33162
33163/**
33164 @brief WDI_EXTScanSetBSSIDHotlistReq
33165
33166 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
33167 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
33168 of the Req operation received from the device
33169 pUserData: user data will be passed back with the callback
33170
33171 @return SUCCESS or FAIL
33172*/
33173WDI_Status
33174WDI_EXTScanSetBSSIDHotlistReq(
33175 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
33176 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
33177 void* pUserData)
33178{
33179 WDI_EventInfoType wdiEventData;
33180
33181 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33182 "%s: %d Enter ",__func__, __LINE__);
33183 /*------------------------------------------------------------------------
33184 Sanity Check
33185 ------------------------------------------------------------------------*/
33186 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33187 {
33188 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33189 "WDI API call before module is initialized - Fail request");
33190
33191 return WDI_STATUS_E_NOT_ALLOWED;
33192 }
33193
33194 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
33195 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
33196 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
33197 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
33198 wdiEventData.pUserData = pUserData;
33199
33200 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33201}
33202
33203/**
33204 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
33205 Extended Scan Set BSSSID Hotlist Request to FW
33206
33207 @param pWDICtx : wdi context
33208 pEventData : indication data
33209
33210 @see
33211 @return none
33212*/
33213WDI_Status
33214WDI_ProcessEXTScanSetBSSIDHotlistReq
33215(
33216 WDI_ControlBlockType* pWDICtx,
33217 WDI_EventInfoType* pEventData
33218)
33219{
33220 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
33221 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33222 wpt_uint8* pSendBuffer = NULL;
33223 wpt_uint16 usSendSize = 0;
33224 wpt_uint16 usDataOffset = 0;
33225 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
33226 int i;
33227
33228 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33229 "%s: %d Enter",__func__, __LINE__);
33230
33231 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33232 ( NULL == pEventData->pCBfnc ))
33233 {
33234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33235 "%s: Invalid parameters", __func__);
33236 WDI_ASSERT(0);
33237 return WDI_STATUS_E_FAILURE;
33238 }
33239
33240 pwdiEXTScanSetBSSIDHotlistReqParams =
33241 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
33242 wdiEXTScanSetBSSIDHotlistRspCb =
33243 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
33244
33245 /*-----------------------------------------------------------------------
33246 Get message buffer
33247 ! TO DO : proper conversion into the HAL Message Request Format
33248 -----------------------------------------------------------------------*/
33249 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33250 pWDICtx,
33251 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
33252 sizeof(tHalBssidHotlistSetReq),
33253 &pSendBuffer, &usDataOffset,
33254 &usSendSize))||
33255 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
33256 {
33257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33258 "Unable to get send buffer in %s %p %p %p", __func__,
33259 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
33260 wdiEXTScanSetBSSIDHotlistRspCb);
33261 WDI_ASSERT(0);
33262 return WDI_STATUS_E_FAILURE;
33263 }
33264 pHalBssidHotlistSetReqParams =
33265 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
33266
33267 pHalBssidHotlistSetReqParams->requestId =
33268 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
33269
33270 pHalBssidHotlistSetReqParams->sessionId =
33271 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
33272
33273 pHalBssidHotlistSetReqParams->numAp =
33274 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
33275
33276 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
33277
33278 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
33279 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
33280 WDI_MAC_ADDR_LEN);
33281
33282 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
33283 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
33284
33285 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
33286 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
33287
33288 pHalBssidHotlistSetReqParams->ap[i].channel =
33289 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
33290
33291 }
33292
33293 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33294 "ReqID %u sessionId %u numAp %u ",
33295 pHalBssidHotlistSetReqParams->requestId,
33296 pHalBssidHotlistSetReqParams->sessionId,
33297 pHalBssidHotlistSetReqParams->numAp);
33298
33299 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
33300
33301 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33302 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33303 __func__, __LINE__, i,
33304 pHalBssidHotlistSetReqParams->ap[i].bssid,
33305 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
33306 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
33307 pHalBssidHotlistSetReqParams->ap[i].channel);
33308
33309 }
33310
33311 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33312
33313
33314 /*-------------------------------------------------------------------------
33315 Send EXTScan Stop Request to HAL
33316 -------------------------------------------------------------------------*/
33317 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33318 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
33319 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
33320}
33321
33322/**
33323 @brief WDI_EXTScanResetBSSIDHotlistReq
33324
33325 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
33326 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
33327 of the Req operation received from the device
33328 pUserData: user data will be passed back with the callback
33329
33330 @return SUCCESS or FAIL
33331*/
33332WDI_Status
33333WDI_EXTScanResetBSSIDHotlistReq(
33334 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
33335 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
33336 void* pUserData)
33337{
33338 WDI_EventInfoType wdiEventData;
33339
33340 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33341 "%s: %d",__func__, __LINE__);
33342 /*------------------------------------------------------------------------
33343 Sanity Check
33344 ------------------------------------------------------------------------*/
33345 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33346 {
33347 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33348 "WDI API call before module is initialized - Fail request");
33349
33350 return WDI_STATUS_E_NOT_ALLOWED;
33351 }
33352
33353 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
33354 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
33355 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
33356 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
33357 wdiEventData.pUserData = pUserData;
33358
33359 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33360}
33361
33362/**
33363 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
33364 Extended Scan reset BSSID hotlist Request to FW
33365
33366 @param pWDICtx : wdi context
33367 pEventData : indication data
33368
33369 @see
33370 @return none
33371*/
33372WDI_Status
33373WDI_ProcessEXTScanResetBSSIDHotlistReq
33374(
33375 WDI_ControlBlockType* pWDICtx,
33376 WDI_EventInfoType* pEventData
33377)
33378{
33379 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33380 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33381 wpt_uint8* pSendBuffer = NULL;
33382 wpt_uint16 usSendSize = 0;
33383 wpt_uint16 usDataOffset = 0;
33384 tpHalHotlistResetReq pHalHotlistResetReqParams;
33385
33386 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33387 "%s: %d",__func__, __LINE__);
33388
33389 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33390 ( NULL == pEventData->pCBfnc ))
33391 {
33392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33393 "%s: Invalid parameters", __func__);
33394 WDI_ASSERT(0);
33395 return WDI_STATUS_E_FAILURE;
33396 }
33397
33398 pwdiEXTScanResetBSSIDHotlistReqParams =
33399 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33400 wdiEXTScanResetBSSIDHotlistRspCb =
33401 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33402
33403 /*-----------------------------------------------------------------------
33404 Get message buffer
33405 ! TO DO : proper conversion into the HAL Message Request Format
33406 -----------------------------------------------------------------------*/
33407 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33408 pWDICtx,
33409 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33410 sizeof(tHalHotlistResetReq),
33411 &pSendBuffer, &usDataOffset,
33412 &usSendSize))||
33413 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33414 {
33415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33416 "Unable to get send buffer in %s %p %p %p", __func__,
33417 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33418 wdiEXTScanResetBSSIDHotlistRspCb);
33419 WDI_ASSERT(0);
33420 return WDI_STATUS_E_FAILURE;
33421 }
33422 pHalHotlistResetReqParams =
33423 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33424
33425 pHalHotlistResetReqParams->requestId =
33426 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33427
33428 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33429
33430 /*-------------------------------------------------------------------------
33431 Send EXTScan Stop Request to HAL
33432 -------------------------------------------------------------------------*/
33433 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33434 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33435 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33436}
33437
33438/**
33439 @brief WDI_EXTScanSetSignfRSSIChangeReq
33440
33441 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
33442 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
33443 of the Req operation received from the device
33444 pUserData: user data will be passed back with the callback
33445
33446 @return SUCCESS or FAIL
33447*/
33448WDI_Status
33449WDI_EXTScanSetSignfRSSIChangeReq(
33450 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
33451 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
33452 void* pUserData)
33453{
33454 WDI_EventInfoType wdiEventData;
33455
33456 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33457 "%s: %d ",__func__, __LINE__);
33458 /*------------------------------------------------------------------------
33459 Sanity Check
33460 ------------------------------------------------------------------------*/
33461 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33462 {
33463 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33464 "WDI API call before module is initialized - Fail request");
33465
33466 return WDI_STATUS_E_NOT_ALLOWED;
33467 }
33468
33469 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
33470 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
33471 wdiEventData.uEventDataSize =
33472 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
33473 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
33474 wdiEventData.pUserData = pUserData;
33475
33476 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33477}
33478
33479/**
33480 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
33481 Extended Scan set Significant RSSI change Request to FW
33482
33483 @param pWDICtx : wdi context
33484 pEventData : indication data
33485
33486 @see
33487 @return none
33488*/
33489WDI_Status
33490WDI_ProcessEXTScanSetSignifRSSIChangeReq
33491(
33492 WDI_ControlBlockType* pWDICtx,
33493 WDI_EventInfoType* pEventData
33494)
33495{
33496 WDI_EXTScanSetSignfRSSIChangeReqParams*
33497 pwdiEXTScanSetSignfRSSIChangeReqParams;
33498 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33499 wpt_uint8* pSendBuffer = NULL;
33500 wpt_uint16 usSendSize = 0;
33501 wpt_uint16 usDataOffset = 0;
33502 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
33503 int i;
33504
33505 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33506 "%s: %d Enter",__func__, __LINE__);
33507
33508 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33509 ( NULL == pEventData->pCBfnc ))
33510 {
33511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33512 "%s: Invalid parameters", __func__);
33513 WDI_ASSERT(0);
33514 return WDI_STATUS_E_FAILURE;
33515 }
33516
33517 pwdiEXTScanSetSignfRSSIChangeReqParams =
33518 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
33519 wdiEXTScanSetSignfRSSIChangeRspCb =
33520 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33521
33522 /*-----------------------------------------------------------------------
33523 Get message buffer
33524 ! TO DO : proper conversion into the HAL Message Request Format
33525 -----------------------------------------------------------------------*/
33526 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33527 pWDICtx,
33528 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
33529 sizeof(tHalSigRssiSetReq),
33530 &pSendBuffer, &usDataOffset,
33531 &usSendSize))||
33532 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
33533 {
33534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33535 "Unable to get send buffer in %s %p %p %p", __func__,
33536 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
33537 wdiEXTScanSetSignfRSSIChangeRspCb);
33538 WDI_ASSERT(0);
33539 return WDI_STATUS_E_FAILURE;
33540 }
33541
33542 pHalSigRssiSetReqParams =
33543 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
33544
33545 pHalSigRssiSetReqParams->requestId =
33546 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
33547 pHalSigRssiSetReqParams->sessionId =
33548 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
33549 pHalSigRssiSetReqParams->rssiSampleSize =
33550 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
33551 pHalSigRssiSetReqParams->lostApSampleSize =
33552 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
33553 pHalSigRssiSetReqParams->minBreaching =
33554 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
33555 pHalSigRssiSetReqParams->numAp =
33556 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
33557
33558
33559 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
33560
33561 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
33562 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
33563 WDI_MAC_ADDR_LEN);
33564
33565 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
33566 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
33567
33568 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
33569 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
33570
33571 pHalSigRssiSetReqParams->ap[i].channel =
33572 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
33573
33574 }
33575
33576
33577 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33578 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
33579 " minBreaching %u numAp %u ",
33580 pHalSigRssiSetReqParams->requestId,
33581 pHalSigRssiSetReqParams->sessionId,
33582 pHalSigRssiSetReqParams->rssiSampleSize,
33583 pHalSigRssiSetReqParams->lostApSampleSize,
33584 pHalSigRssiSetReqParams->minBreaching,
33585 pHalSigRssiSetReqParams->numAp);
33586
33587 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
33588
33589 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33590 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33591 i,
33592 pHalSigRssiSetReqParams->ap[i].bssid,
33593 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
33594 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
33595 pHalSigRssiSetReqParams->ap[i].channel);
33596
33597 }
33598
33599 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33600
33601
33602 /*-------------------------------------------------------------------------
33603 Send EXTScan Stop Request to HAL
33604 -------------------------------------------------------------------------*/
33605 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33606 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
33607 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
33608}
33609
33610/**
33611 @brief WDI_EXTScanResetSignfRSSIChangeReq
33612
33613 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
33614 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
33615 of the Req operation received from the device
33616 pUserData: user data will be passed back with the callback
33617
33618 @return SUCCESS or FAIL
33619*/
33620WDI_Status
33621WDI_EXTScanResetSignfRSSIChangeReq(
33622 WDI_EXTScanResetSignfRSSIChangeReqParams*
33623 pwdiEXTScanResetSignfRSSIChangeReqParams,
33624 WDI_EXTScanResetSignfRSSIChangeRspCb
33625 wdiEXTScanResetSignfRSSIChangeRspCb,
33626 void* pUserData)
33627{
33628 WDI_EventInfoType wdiEventData;
33629
33630 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33631 "%s: %d ",__func__, __LINE__);
33632 /*------------------------------------------------------------------------
33633 Sanity Check
33634 ------------------------------------------------------------------------*/
33635 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33636 {
33637 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33638 "WDI API call before module is initialized - Fail request");
33639
33640 return WDI_STATUS_E_NOT_ALLOWED;
33641 }
33642
33643 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
33644 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
33645 wdiEventData.uEventDataSize =
33646 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
33647 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
33648 wdiEventData.pUserData = pUserData;
33649
33650 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33651}
33652
33653/**
33654 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
33655 Extended Scana reset Significant RSSI change Request to FW
33656
33657 @param pWDICtx : wdi context
33658 pEventData : indication data
33659
33660 @see
33661 @return none
33662*/
33663WDI_Status
33664WDI_ProcessEXTScanResetSignfRSSIChangeReq
33665(
33666 WDI_ControlBlockType* pWDICtx,
33667 WDI_EventInfoType* pEventData
33668)
33669{
33670 WDI_EXTScanResetSignfRSSIChangeReqParams*
33671 pwdiEXTScanResetSignfRSSIChangeReqParams;
33672 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33673 wpt_uint8* pSendBuffer = NULL;
33674 wpt_uint16 usSendSize = 0;
33675 wpt_uint16 usDataOffset = 0;
33676 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
33677
33678 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33679 "%s: %d ",__func__, __LINE__);
33680
33681 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33682 ( NULL == pEventData->pCBfnc ))
33683 {
33684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33685 "%s: Invalid parameters", __func__);
33686 WDI_ASSERT(0);
33687 return WDI_STATUS_E_FAILURE;
33688 }
33689
33690 pwdiEXTScanResetSignfRSSIChangeReqParams =
33691 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
33692 wdiEXTScanResetSignfRSSIChangeRspCb =
33693 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33694
33695 /*-----------------------------------------------------------------------
33696 Get message buffer
33697 ! TO DO : proper conversion into the HAL Message Request Format
33698 -----------------------------------------------------------------------*/
33699 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33700 pWDICtx,
33701 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
33702 sizeof(tHalSigRssiResetReq),
33703 &pSendBuffer, &usDataOffset,
33704 &usSendSize))||
33705 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
33706 {
33707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33708 "Unable to get send buffer in %s %p %p %p", __func__,
33709 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
33710 wdiEXTScanResetSignfRSSIChangeRspCb);
33711 WDI_ASSERT(0);
33712 return WDI_STATUS_E_FAILURE;
33713 }
33714 pHalSigRssiResetReqParams =
33715 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
33716
33717 pHalSigRssiResetReqParams->requestId =
33718 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
33719
33720 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33721
33722
33723 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33724 wdiEXTScanResetSignfRSSIChangeRspCb,
33725 pEventData->pUserData,
33726 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
33727}
33728
33729/**
33730 @brief Process Extended Scan Start Rsp function (called when a response
33731 is being received over the bus from HAL)
33732
33733 @param pWDICtx: pointer to the WLAN DAL context
33734 pEventData: pointer to the event information structure
33735
33736 @see
33737 @return Result of the function call
33738*/
33739WDI_Status
33740WDI_ProcessEXTScanStartRsp
33741(
33742 WDI_ControlBlockType* pWDICtx,
33743 WDI_EventInfoType* pEventData
33744)
33745{
33746 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
33747
33748 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33749 "%s: %d",__func__, __LINE__);
33750 /*-------------------------------------------------------------------------
33751 Sanity check
33752 -------------------------------------------------------------------------*/
33753 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33754 ( NULL == pEventData->pEventData))
33755 {
33756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33757 "%s: Invalid parameters", __func__);
33758 WDI_ASSERT(0);
33759 return WDI_STATUS_E_FAILURE;
33760 }
33761
33762 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33763 if ( NULL == wdiEXTScanStartRspCb)
33764 {
33765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33766 "%s: Callback function Invalid", __func__);
33767 WDI_ASSERT(0);
33768 return WDI_STATUS_E_FAILURE;
33769 }
33770
33771 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
33772
33773 return WDI_STATUS_SUCCESS;
33774}
33775
33776
33777/**
33778 @brief Process Extended Scan Stop Rsp function (called when a response
33779 is being received over the bus from HAL)
33780
33781 @param pWDICtx: pointer to the WLAN DAL context
33782 pEventData: pointer to the event information structure
33783
33784 @see
33785 @return Result of the function call
33786*/
33787WDI_Status
33788WDI_ProcessEXTScanStopRsp
33789(
33790 WDI_ControlBlockType* pWDICtx,
33791 WDI_EventInfoType* pEventData
33792)
33793{
33794 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
33795
33796 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33797 "%s: %d",__func__, __LINE__);
33798
33799
33800 /*-------------------------------------------------------------------------
33801 Sanity check
33802 -------------------------------------------------------------------------*/
33803 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33804 ( NULL == pEventData->pEventData))
33805 {
33806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33807 "%s: Invalid parameters", __func__);
33808 WDI_ASSERT(0);
33809 return WDI_STATUS_E_FAILURE;
33810 }
33811
33812 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33813 if ( NULL == wdiEXTScanStopRspCb)
33814 {
33815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33816 "%s: Callback function Invalid", __func__);
33817 WDI_ASSERT(0);
33818 return WDI_STATUS_E_FAILURE;
33819 }
33820
33821 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33822
33823 return WDI_STATUS_SUCCESS;
33824}
33825
33826/**
33827 @brief Process Extended Scan Get Cached Rsp function (called when a response
33828 is being received over the bus from HAL)
33829
33830 @param pWDICtx: pointer to the WLAN DAL context
33831 pEventData: pointer to the event information structure
33832
33833 @see
33834 @return Result of the function call
33835*/
33836WDI_Status
33837WDI_ProcessEXTScanGetCachedResultsRsp
33838(
33839 WDI_ControlBlockType* pWDICtx,
33840 WDI_EventInfoType* pEventData
33841)
33842{
33843 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33844
33845 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33846 "%s: %d Enter",__func__, __LINE__);
33847
33848
33849 /*-------------------------------------------------------------------------
33850 Sanity check
33851 -------------------------------------------------------------------------*/
33852 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33853 ( NULL == pEventData->pEventData))
33854 {
33855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33856 "%s: Invalid parameters", __func__);
33857 WDI_ASSERT(0);
33858 return WDI_STATUS_E_FAILURE;
33859 }
33860
33861 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33862 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
33863 {
33864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33865 "%s: Callback function Invalid", __func__);
33866 WDI_ASSERT(0);
33867 return WDI_STATUS_E_FAILURE;
33868 }
33869
33870 wdiEXTScanGetCachedResultsRspCb(
33871 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33872
33873 return WDI_STATUS_SUCCESS;
33874}
33875
33876/**
33877 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
33878 is being received over the bus from HAL)
33879
33880 @param pWDICtx: pointer to the WLAN DAL context
33881 pEventData: pointer to the event information structure
33882
33883 @see
33884 @return Result of the function call
33885*/
33886WDI_Status
33887WDI_ProcessEXTScanGetCapabilitiesRsp
33888(
33889 WDI_ControlBlockType* pWDICtx,
33890 WDI_EventInfoType* pEventData
33891)
33892{
33893 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33894
33895 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33896 "%s: %d ",__func__, __LINE__);
33897
33898
33899 /*-------------------------------------------------------------------------
33900 Sanity check
33901 -------------------------------------------------------------------------*/
33902 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33903 ( NULL == pEventData->pEventData))
33904 {
33905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33906 "%s: Invalid parameters", __func__);
33907 WDI_ASSERT(0);
33908 return WDI_STATUS_E_FAILURE;
33909 }
33910
33911 wdiEXTScanGetCapabilitiesRspCb =
33912 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
33913 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
33914 {
33915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33916 "%s: Callback function Invalid", __func__);
33917 WDI_ASSERT(0);
33918 return WDI_STATUS_E_FAILURE;
33919 }
33920
33921 wdiEXTScanGetCapabilitiesRspCb(
33922 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33923
33924 return WDI_STATUS_SUCCESS;
33925}
33926
33927/**
33928 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
33929 response is being received over the bus from HAL)
33930
33931 @param pWDICtx: pointer to the WLAN DAL context
33932 pEventData: pointer to the event information structure
33933
33934 @see
33935 @return Result of the function call
33936*/
33937WDI_Status
33938WDI_ProcessEXTScanSetHotlistBSSIDRsp
33939(
33940 WDI_ControlBlockType* pWDICtx,
33941 WDI_EventInfoType* pEventData
33942)
33943{
33944 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33945
33946 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33947 "%s: %d ",__func__, __LINE__);
33948
33949
33950 /*-------------------------------------------------------------------------
33951 Sanity check
33952 -------------------------------------------------------------------------*/
33953 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33954 ( NULL == pEventData->pEventData))
33955 {
33956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33957 "%s: Invalid parameters", __func__);
33958 WDI_ASSERT(0);
33959 return WDI_STATUS_E_FAILURE;
33960 }
33961
33962 wdiEXTScanSetBSSIDHotlistRspCb =
33963 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33964 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
33965 {
33966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33967 "%s: Callback function Invalid", __func__);
33968 WDI_ASSERT(0);
33969 return WDI_STATUS_E_FAILURE;
33970 }
33971
33972 wdiEXTScanSetBSSIDHotlistRspCb(
33973 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33974
33975 return WDI_STATUS_SUCCESS;
33976}
33977
33978/**
33979 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
33980 when a response is being received over the bus from HAL)
33981
33982 @param pWDICtx: pointer to the WLAN DAL context
33983 pEventData: pointer to the event information structure
33984
33985 @see
33986 @return Result of the function call
33987*/
33988WDI_Status
33989WDI_ProcessEXTScanResetHotlistBSSIDRsp
33990(
33991 WDI_ControlBlockType* pWDICtx,
33992 WDI_EventInfoType* pEventData
33993)
33994{
33995 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33996
33997 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33998 "%s: %d ",__func__, __LINE__);
33999
34000
34001 /*-------------------------------------------------------------------------
34002 Sanity check
34003 -------------------------------------------------------------------------*/
34004 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34005 ( NULL == pEventData->pEventData))
34006 {
34007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34008 "%s: Invalid parameters", __func__);
34009 WDI_ASSERT(0);
34010 return WDI_STATUS_E_FAILURE;
34011 }
34012
34013 wdiEXTScanResetBSSIDHotlistRspCb =
34014 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34015 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
34016 {
34017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34018 "%s: Callback function Invalid", __func__);
34019 WDI_ASSERT(0);
34020 return WDI_STATUS_E_FAILURE;
34021 }
34022
34023 wdiEXTScanResetBSSIDHotlistRspCb(
34024 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34025
34026 return WDI_STATUS_SUCCESS;
34027}
34028
34029/**
34030 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
34031 when a response is being received over the bus from HAL)
34032
34033 @param pWDICtx: pointer to the WLAN DAL context
34034 pEventData: pointer to the event information structure
34035
34036 @see
34037 @return Result of the function call
34038*/
34039WDI_Status
34040WDI_ProcessEXTScanSetSignfRSSIChangeRsp
34041(
34042 WDI_ControlBlockType* pWDICtx,
34043 WDI_EventInfoType* pEventData
34044)
34045{
34046 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
34047
34048 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34049 "%s: %d",__func__, __LINE__);
34050
34051
34052 /*-------------------------------------------------------------------------
34053 Sanity check
34054 -------------------------------------------------------------------------*/
34055 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34056 ( NULL == pEventData->pEventData))
34057 {
34058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34059 "%s: Invalid parameters", __func__);
34060 WDI_ASSERT(0);
34061 return WDI_STATUS_E_FAILURE;
34062 }
34063
34064 wdiEXTScanSetSignfRSSIChangeRspCb =
34065 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
34066 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
34067 {
34068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34069 "%s: Callback function Invalid", __func__);
34070 WDI_ASSERT(0);
34071 return WDI_STATUS_E_FAILURE;
34072 }
34073
34074 wdiEXTScanSetSignfRSSIChangeRspCb(
34075 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34076
34077 return WDI_STATUS_SUCCESS;
34078}
34079
34080/**
34081 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
34082 (called when a response is being received over the bus from HAL)
34083
34084 @param pWDICtx: pointer to the WLAN DAL context
34085 pEventData: pointer to the event information structure
34086
34087 @see
34088 @return Result of the function call
34089*/
34090WDI_Status
34091WDI_ProcessEXTScanResetSignfRSSIChangeRsp
34092(
34093 WDI_ControlBlockType* pWDICtx,
34094 WDI_EventInfoType* pEventData
34095)
34096{
34097 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
34098
34099 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34100 "%s: %d Enter",__func__, __LINE__);
34101
34102
34103 /*-------------------------------------------------------------------------
34104 Sanity check
34105 -------------------------------------------------------------------------*/
34106 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34107 ( NULL == pEventData->pEventData))
34108 {
34109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34110 "%s: Invalid parameters", __func__);
34111 WDI_ASSERT(0);
34112 return WDI_STATUS_E_FAILURE;
34113 }
34114
34115 wdiEXTScanResetSignfRSSIChangeRspCb =
34116 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
34117 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
34118 {
34119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34120 "%s: Callback function Invalid", __func__);
34121 WDI_ASSERT(0);
34122 return WDI_STATUS_E_FAILURE;
34123 }
34124
34125 wdiEXTScanResetSignfRSSIChangeRspCb(
34126 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34127
34128 return WDI_STATUS_SUCCESS;
34129}
34130#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053034131
34132/**
34133 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
34134
34135 @param None
34136
34137 @see
34138
34139 @return Status of the request
34140*/
34141WDI_Status
34142WDI_SetSpoofMacAddrReq
34143(
34144 WDI_SpoofMacAddrInfoType* pWdiReq,
34145 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
34146 void* pUserData)
34147{
34148 WDI_EventInfoType wdiEventData;
34149
34150 /*-------------------------------------------------------------------------
34151 Sanity Check
34152 ------------------------------------------------------------------------*/
34153 if (eWLAN_PAL_FALSE == gWDIInitialized)
34154 {
34155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34156 "WDI API call before module is initialized - Fail request!");
34157
34158 return WDI_STATUS_E_NOT_ALLOWED;
34159 }
34160
34161 /*-------------------------------------------------------------------------
34162 Fill in Event data and post to the Main FSM
34163 ------------------------------------------------------------------------*/
34164 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
34165 wdiEventData.pEventData = pWdiReq;
34166 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
34167 wdiEventData.pCBfnc = spoofMacAddrRspCb;
34168 wdiEventData.pUserData = pUserData;
34169
34170 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34171}
34172
34173/**
34174 @brief Process SpoofMacAddr Request
34175
34176 @param pWDICtx: pointer to the WLAN DAL context
34177 pEventData: pointer to the event information structure
34178
34179 @see
34180 @return Result of the function call
34181*/
34182WDI_Status
34183WDI_ProcessSpoofMacAddrReq
34184(
34185 WDI_ControlBlockType* pWDICtx,
34186 WDI_EventInfoType* pEventData
34187)
34188{
34189 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
34190 wpt_uint8* pSendBuffer = NULL;
34191 wpt_uint16 usDataOffset = 0;
34192 wpt_uint16 usSendSize = 0;
34193 WDI_Status wdiStatus;
34194 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
34195 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
34196
34197
34198 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34199 "%s: %d Enter",__func__, __LINE__);
34200
34201 /*-------------------------------------------------------------------------
34202 Sanity check
34203 -------------------------------------------------------------------------*/
34204 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34205 ( NULL == pEventData->pEventData))
34206 {
34207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34208 "%s: Invalid parameters", __func__);
34209 WDI_ASSERT(0);
34210 return WDI_STATUS_E_FAILURE;
34211 }
34212 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
34213
34214 /*-----------------------------------------------------------------------
34215 Get message buffer
34216 -----------------------------------------------------------------------*/
34217 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34218 WDI_SPOOF_MAC_ADDR_REQ,
34219 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
34220 &pSendBuffer, &usDataOffset, &usSendSize))||
34221 (usSendSize < (usDataOffset +
34222 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
34223 {
34224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34225 "Unable to get send buffer in Process Spoof Mac Addr Req");
34226 WDI_ASSERT(0);
34227 return WDI_STATUS_E_FAILURE;
34228 }
34229
34230 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
34231 wdiSpoofMacAddr->macAddr,
34232 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
34233
34234 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
34235
34236 wpalMemoryCopy( pSendBuffer+usDataOffset,
34237 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
34238 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
34239
34240 /*-------------------------------------------------------------------------
34241 Send Suspend Request to HAL
34242 -------------------------------------------------------------------------*/
34243 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34244 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
34245
34246 return wdiStatus;
34247}
34248
34249/**
34250 @brief Process Spoof Mac Address Rsp function
34251 (called when a response is being received over the bus from HAL)
34252
34253 @param pWDICtx: pointer to the WLAN DAL context
34254 pEventData: pointer to the event information structure
34255
34256 @see
34257 @return Result of the function call
34258*/
34259WDI_Status
34260WDI_ProcessSpoofMacAddrRsp
34261(
34262 WDI_ControlBlockType* pWDICtx,
34263 WDI_EventInfoType* pEventData
34264)
34265{
34266 tMacSpoofedScanResp halRsp;
34267 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
34268 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
34269
34270 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34271 "%s: %d Enter",__func__, __LINE__);
34272
34273 /*-------------------------------------------------------------------------
34274 Sanity check
34275 -------------------------------------------------------------------------*/
34276 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34277 ( NULL == pEventData->pEventData))
34278 {
34279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34280 "%s: Invalid parameters", __func__);
34281 WDI_ASSERT(0);
34282 return WDI_STATUS_E_FAILURE;
34283 }
34284 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
34285
34286 /*-------------------------------------------------------------------------
34287 Extract response and send it to UMAC
34288 -------------------------------------------------------------------------*/
34289 wpalMemoryCopy( &halRsp,
34290 pEventData->pEventData, sizeof(halRsp));
34291
34292 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34293
34294 /*Notify UMAC*/
34295 wdiSpoofMacAddrRspCb(
34296 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
34297
34298 return WDI_STATUS_SUCCESS;
34299}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034300
34301/**
Siddharth Bhal64246172015-02-27 01:04:37 +053034302 @brief Process Get Frame Log Rsp function
34303 (called when a response is being received over the bus from HAL)
34304
34305 @param pWDICtx: pointer to the WLAN DAL context
34306 pEventData: pointer to the event information structure
34307
34308 @see
34309 @return Result of the function call
34310*/
34311WDI_Status
34312WDI_ProcessGetFrameLogRsp
34313(
34314 WDI_ControlBlockType* pWDICtx,
34315 WDI_EventInfoType* pEventData
34316)
34317{
34318 tGetFrameLogResp halRsp;
34319 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
34320 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
34321
34322 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34323 "%s: %d Enter",__func__, __LINE__);
34324
34325 /*-------------------------------------------------------------------------
34326 Sanity check
34327 -------------------------------------------------------------------------*/
34328 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34329 ( NULL == pEventData->pEventData))
34330 {
34331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34332 "%s: Invalid parameters", __func__);
34333 WDI_ASSERT(0);
34334 return WDI_STATUS_E_FAILURE;
34335 }
34336
34337 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
34338
34339 /*-------------------------------------------------------------------------
34340 Extract response and send it to UMAC
34341 -------------------------------------------------------------------------*/
34342 wpalMemoryCopy( &halRsp,
34343 pEventData->pEventData, sizeof(halRsp));
34344
34345 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34346
34347 /*Notify UMAC*/
34348 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
34349
34350 return WDI_STATUS_SUCCESS;
34351}
34352/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034353 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053034354
34355 @param pWDICtx: pointer to the WLAN DAL context
34356 pEventData: pointer to the event information structure
34357
34358 @see
34359 @return Result of the function call
34360*/
34361WDI_Status
34362WDI_ProcessGetFrameLogReq
34363(
34364 WDI_ControlBlockType* pWDICtx,
34365 WDI_EventInfoType* pEventData
34366)
34367{
34368 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
34369 wpt_uint8* pSendBuffer = NULL;
34370 wpt_uint16 usDataOffset = 0;
34371 wpt_uint16 usSendSize = 0;
34372 WDI_Status wdiStatus;
34373 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034374 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053034375
34376
34377 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34378 "%s: %d Enter",__func__, __LINE__);
34379
34380 /*-------------------------------------------------------------------------
34381 Sanity check
34382 ------------------------------------------------------------------------*/
34383 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34384 ( NULL == pEventData->pEventData))
34385 {
34386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34387 "%s: Invalid parameters", __func__);
34388 WDI_ASSERT(0);
34389 return WDI_STATUS_E_FAILURE;
34390 }
34391
34392 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
34393
34394 /*-----------------------------------------------------------------------
34395 Get message buffer
34396 -----------------------------------------------------------------------*/
34397 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34398 WDI_GET_FRAME_LOG_REQ,
34399 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
34400 &pSendBuffer, &usDataOffset, &usSendSize))||
34401 (usSendSize < (usDataOffset +
34402 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
34403 {
34404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34405 "Unable to get send buffer in GetFrameLog Req");
34406 WDI_ASSERT(0);
34407 return WDI_STATUS_E_FAILURE;
34408 }
34409
34410 halGetFrameLogReq.tGetFrameLogReqParams.flags =
34411 wdiGetFrameLogReq->flags;
34412
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034413 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053034414
34415 wpalMemoryCopy( pSendBuffer+usDataOffset,
34416 &halGetFrameLogReq.tGetFrameLogReqParams,
34417 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
34418
34419 /*-------------------------------------------------------------------------
34420 Send Suspend Request to HAL
34421 ------------------------------------------------------------------------*/
34422 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34423 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
34424
34425 return wdiStatus;
34426}
34427/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034428 @brief Process MgmtFrame Logging Init Rsp function
34429 (called when a response is being received over the bus from HAL)
34430
34431 @param pWDICtx: pointer to the WLAN DAL context
34432 pEventData: pointer to the event information structure
34433
34434 @see
34435 @return Result of the function call
34436*/
34437WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034438WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034439(
34440 WDI_ControlBlockType* pWDICtx,
34441 WDI_EventInfoType* pEventData
34442)
34443{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034444 tFWLoggingInitResp halRsp;
34445 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
34446 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034447
34448 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34449 "%s: %d Enter",__func__, __LINE__);
34450
34451 /*-------------------------------------------------------------------------
34452 Sanity check
34453 -------------------------------------------------------------------------*/
34454 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34455 ( NULL == pEventData->pEventData))
34456 {
34457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34458 "%s: Invalid parameters", __func__);
34459 WDI_ASSERT(0);
34460 return WDI_STATUS_E_FAILURE;
34461 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034462 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034463
34464 /*-------------------------------------------------------------------------
34465 Extract response and send it to UMAC
34466 -------------------------------------------------------------------------*/
34467 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34468
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034469 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034470
34471 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034472 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034473
34474 return WDI_STATUS_SUCCESS;
34475}
34476
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034477WDI_Status
34478WDI_ProcessFWLoggingDXEdoneInd
34479(
34480 WDI_ControlBlockType* pWDICtx,
34481 WDI_EventInfoType* pEventData
34482)
34483{
34484 wpt_uint8* pSendBuffer = NULL;
34485 wpt_uint16 usDataOffset = 0;
34486 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034487 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053034488 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034489 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
34490
34491
34492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34493
34494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34495 "%s", __func__);
34496
34497 /*-------------------------------------------------------------------------
34498 Sanity check
34499 -------------------------------------------------------------------------*/
Mihir Shete5affadc2015-05-29 20:54:57 +053034500 if (NULL == pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034501 {
34502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34503 "%s: Invalid parameters", __func__);
34504 WDI_ASSERT(0);
34505 return WDI_STATUS_E_FAILURE;
34506 }
Mihir Shete5affadc2015-05-29 20:54:57 +053034507 pLoggingSession = (WDI_DS_LoggingSessionType *)
34508 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
34509 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034510 /*-----------------------------------------------------------------------
34511 Get message buffer
34512 -----------------------------------------------------------------------*/
34513
34514 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34515 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053034516 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034517 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053034518 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034519 {
34520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34521 "Unable to get send buffer in RTS CTS ind %p ",
34522 pEventData);
34523 WDI_ASSERT(0);
34524 return WDI_STATUS_E_FAILURE;
34525 }
34526 FWLoggingDxeDoneIndParams =
34527 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
34528
34529 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053034530 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034531 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053034532
34533 FWLoggingDxeDoneIndParams->status = eHAL_STATUS_SUCCESS;
34534
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034535 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053034536 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034537 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
34538
34539 pWDICtx->pReqStatusUserData = NULL;
34540 pWDICtx->pfncRspCB = NULL;
34541 /*-------------------------------------------------------------------------
34542 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
34543 -------------------------------------------------------------------------*/
34544 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
34545 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
34546}
34547
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034548/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034549 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034550
34551 @param pWDICtx: pointer to the WLAN DAL context
34552 pEventData: pointer to the event information structure
34553
34554 @see
34555 @return Result of the function call
34556*/
34557WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034558WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034559(
34560 WDI_ControlBlockType* pWDICtx,
34561 WDI_EventInfoType* pEventData
34562)
34563{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034564 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034565 wpt_uint8* pSendBuffer = NULL;
34566 wpt_uint16 usDataOffset = 0;
34567 wpt_uint16 usSendSize = 0;
34568 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034569 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
34570 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034571
34572
34573 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34574 "%s: %d Enter",__func__, __LINE__);
34575
34576 /*-------------------------------------------------------------------------
34577 Sanity check
34578 ------------------------------------------------------------------------*/
34579 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34580 ( NULL == pEventData->pEventData))
34581 {
34582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34583 "%s: Invalid parameters", __func__);
34584 WDI_ASSERT(0);
34585 return WDI_STATUS_E_FAILURE;
34586 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034587 wdiFWLoggingInitReq =
34588 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034589
34590 /*-----------------------------------------------------------------------
34591 Get message buffer
34592 -----------------------------------------------------------------------*/
34593 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034594 WDI_FW_LOGGING_INIT_REQ,
34595 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034596 &pSendBuffer, &usDataOffset, &usSendSize))||
34597 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034598 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034599 {
34600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34601 "Unable to get send buffer in Process Mgmt Logging Init Req");
34602 WDI_ASSERT(0);
34603 return WDI_STATUS_E_FAILURE;
34604 }
34605
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034606 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
34607 wdiFWLoggingInitReq->enableFlag;
34608 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
34609 wdiFWLoggingInitReq->frameSize;
34610 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
34611 wdiFWLoggingInitReq->frameType;
34612 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
34613 wdiFWLoggingInitReq->bufferMode;
34614 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
34615 wdiFWLoggingInitReq->continuousFrameLogging;
34616 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
34617 wdiFWLoggingInitReq->minLogBufferSize;
34618 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
34619 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053034620 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
34621 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
34622 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
34623 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034624
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034625 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034626
34627 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034628 &halFWLoggingInitReq.tFWLoggingInitReqParams,
34629 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034630
34631 /*-------------------------------------------------------------------------
34632 Send Mgmt Logging Init Request to HAL
34633 ------------------------------------------------------------------------*/
34634 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034635 wdiFWLoggingInitRspCb, pEventData->pUserData,
34636 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034637
34638 return wdiStatus;
34639}
34640
34641/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034642 @brief WDI_EncryptMsgReq
34643
34644 @param pwdiEncryptMsgParams: Req parameter for the FW
34645 wdiEncryptMsgCbRsp: callback for passing back the response
34646 of the Req operation received from the device
34647 pUserData: user data will be passed back with the callback
34648
34649 @return SUCCESS or FAIL
34650*/
34651WDI_Status
34652WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
34653 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
34654 void* pUserData)
34655{
34656 WDI_EventInfoType wdiEventData;
34657
34658 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34659 "%s: %d Enter" ,__func__, __LINE__);
34660 /*------------------------------------------------------------------------
34661 Sanity Check
34662 ------------------------------------------------------------------------*/
34663 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34664 {
34665 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34666 "WDI API call before module is initialized - Fail request");
34667
34668 return WDI_STATUS_E_NOT_ALLOWED;
34669 }
34670
34671 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
34672 wdiEventData.pEventData = pwdiEncryptMsgParams;
34673 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
34674 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
34675 wdiEventData.pUserData = pUserData;
34676
34677 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34678}
34679
34680/*
34681 * FUNCTION: WDI_ProcessEncryptMsgReq
34682 * Request to WDI to encrypt the given message.
34683 *
34684 * @param pWDICtx: pointer to the WLAN DAL context
34685 * pEventData: pointer to the event information structure
34686 *
34687 * @return Result of the function call
34688 */
34689
34690WDI_Status
34691WDI_ProcessEncryptMsgReq
34692(
34693 WDI_ControlBlockType* pWDICtx,
34694 WDI_EventInfoType* pEventData
34695)
34696{
34697 wpt_uint8* pSendBuffer = NULL;
34698 wpt_uint16 usDataOffset = 0;
34699 wpt_uint16 usSendSize = 0;
34700 WDI_EncryptMsgRspCb* wdiEncMsgCb;
34701 tSetEncryptedDataParams *pHalEncryptDataReq;
34702 wpt_pkt80211 *pkt = NULL;
34703
34704 /*-------------------------------------------------------------------------
34705 Sanity check
34706 -------------------------------------------------------------------------*/
34707 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
34708 ( NULL == pEventData->pCBfnc ) )
34709 {
34710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34711 "%s: Invalid parameters", __func__);
34712 WDI_ASSERT(0);
34713 return WDI_STATUS_E_FAILURE;
34714 }
34715
34716 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
34717
34718 /*-----------------------------------------------------------------------
34719 Get message buffer
34720 -----------------------------------------------------------------------*/
34721 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34722 pWDICtx, WDI_ENCRYPT_MSG_REQ,
34723 sizeof(tSetEncryptedDataReqMsg),
34724 &pSendBuffer, &usDataOffset, &usSendSize)) ||
34725 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
34726 {
34727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34728 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
34729 pEventData);
34730 WDI_ASSERT(0);
34731 return WDI_STATUS_E_FAILURE;
34732 }
34733
34734 pWDICtx->wdiReqStatusCB = NULL;
34735 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34736 pkt = (wpt_pkt80211 *)pEventData->pEventData;
34737
34738 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
34739 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
34740
34741 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
34742
34743 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
34744 pkt->encParams.keyParams.key[0].keyId;
34745
34746 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
34747 &pkt->encParams.keyParams.key[0].key[0], 16);
34748
34749 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
34750
34751 pHalEncryptDataReq->data.length = pkt->data.length;
34752 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
34753
34754 /*-------------------------------------------------------------------------
34755 Send Get STA Request to HAL
34756 -------------------------------------------------------------------------*/
34757 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
34758 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
34759}
34760
34761/*
34762 * FUNCTION: WDI_ProcessEncryptMsgRsp
34763 * Receives the encrypted message from the firmware
34764 * @param pWDICtx: pointer to the WLAN DAL context
34765 * pEventData: pointer to the event information structure
34766 *
34767 * @return Result of the function call
34768 */
34769WDI_Status
34770WDI_ProcessEncryptMsgRsp
34771(
34772 WDI_ControlBlockType* pWDICtx,
34773 WDI_EventInfoType* pEventData
34774)
34775{
34776 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
34777 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
34778
34779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34780 "In %s",__func__);
34781
34782 /*-------------------------------------------------------------------------
34783 Sanity check
34784 -------------------------------------------------------------------------*/
34785 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34786 ( NULL == pEventData->pEventData))
34787 {
34788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34789 "%s: Invalid parameters", __func__);
34790 WDI_ASSERT(0);
34791 return WDI_STATUS_E_FAILURE;
34792 }
34793
34794 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
34795
34796 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
34797
34798 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
34799 pEventData->pEventData,
34800 pWDICtx->pRspCBUserData);
34801 return WDI_STATUS_SUCCESS;
34802}
Srinivas Dasari32a79262015-02-19 13:04:49 +053034803
34804WDI_Status
34805WDI_NanRequest
34806(
34807 WDI_NanRequestType *pwdiNanRequest,
34808 void *usrData
34809)
34810{
34811 WDI_EventInfoType wdiEventData;
34812
34813 /*------------------------------------------------------------------------
34814 Sanity Check
34815 ------------------------------------------------------------------------*/
34816 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34817 {
34818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34819 "WDI API call before module is initialized - Fail request");
34820
34821 return WDI_STATUS_E_NOT_ALLOWED;
34822 }
34823
34824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34825 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
34826 pwdiNanRequest->request_data_len);
34827
34828 /*------------------------------------------------------------------------
34829 Fill in Event data and post to the Main FSM
34830 ------------------------------------------------------------------------*/
34831 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
34832 wdiEventData.pEventData = pwdiNanRequest;
34833 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
34834 + pwdiNanRequest->request_data_len;
34835 wdiEventData.pUserData = usrData;
34836 wdiEventData.pCBfnc = NULL;
34837
34838
34839 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34840}
34841
34842WDI_Status
34843WDI_ProcessNanRequest
34844(
34845 WDI_ControlBlockType* pWDICtx,
34846 WDI_EventInfoType* pEventData
34847)
34848{
34849 WDI_NanRequestType *pwdiNanRequest = NULL;
34850 wpt_uint8* pSendBuffer = NULL;
34851 wpt_uint16 usDataOffset = 0;
34852 wpt_uint16 usSendSize = 0;
34853
34854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34855 "WDI_ProcessNanRequest");
34856
34857 /*-------------------------------------------------------------------------
34858 Sanity check
34859 -------------------------------------------------------------------------*/
34860 if (( NULL == pEventData ) ||
34861 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
34862 {
34863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34864 "%s: Invalid parameters", __FUNCTION__);
34865 WDI_ASSERT(0);
34866 return WDI_STATUS_E_FAILURE;
34867 }
34868
34869 /*-----------------------------------------------------------------------
34870 Get message buffer
34871 -----------------------------------------------------------------------*/
34872 if (( WDI_STATUS_SUCCESS
34873 != WDI_GetMessageBuffer( pWDICtx,
34874 WDI_NAN_REQUEST,
34875 pwdiNanRequest->request_data_len,
34876 &pSendBuffer,
34877 &usDataOffset,
34878 &usSendSize))||
34879 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
34880 {
34881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34882 "Unable to get send buffer in NAN request %p %p",
34883 pEventData, pwdiNanRequest);
34884 WDI_ASSERT(0);
34885 return WDI_STATUS_E_FAILURE;
34886 }
34887
34888 wpalMemoryCopy( pSendBuffer+usDataOffset,
34889 pwdiNanRequest->request_data,
34890 pwdiNanRequest->request_data_len);
34891
34892 pWDICtx->pReqStatusUserData = NULL;
34893 pWDICtx->pfncRspCB = NULL;
34894 vos_mem_free( pEventData->pUserData);
34895
34896 /*-------------------------------------------------------------------------
34897 Send NAN Request to HAL
34898 -------------------------------------------------------------------------*/
34899 return WDI_SendMsg( pWDICtx,
34900 pSendBuffer,
34901 usSendSize,
34902 NULL,
34903 NULL,
34904 WDI_NAN_RESPONSE);
34905}
34906
34907/**
34908 @brief Process NAN Response function (called when a
34909 response is being received over the bus from HAL)
34910
34911 @param pWDICtx: pointer to the WLAN DAL context
34912 pEventData: pointer to the event information structure
34913
34914 @see
34915 @return Result of the function call
34916*/
34917WDI_Status
34918WDI_ProcessNanResponse
34919(
34920 WDI_ControlBlockType* pWDICtx,
34921 WDI_EventInfoType* pEventData
34922)
34923{
34924 WDI_Status wdiStatus;
34925 eHalStatus halStatus;
34926
34927 /*-------------------------------------------------------------------------
34928 Sanity check
34929 -------------------------------------------------------------------------*/
34930 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34931 ( NULL == pEventData->pEventData))
34932 {
34933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34934 "%s: Invalid parameters", __func__);
34935 WDI_ASSERT(0);
34936 return WDI_STATUS_E_FAILURE;
34937 }
34938
34939 halStatus = *((eHalStatus*)pEventData->pEventData);
34940 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
34941
34942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34943 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
34944
34945 return WDI_STATUS_SUCCESS;
34946}/*WDI_ProcessNanResponse*/
34947
34948
34949/**
34950 @brief Process NAN Event function (called when
34951 an indication is being received over the
34952 bus from HAL)
34953
34954 @param pWDICtx: pointer to the WLAN DAL context
34955 pEventData: pointer to the event information structure
34956
34957 @see
34958 @return Result of the function call
34959*/
34960WDI_Status
34961WDI_ProcessNanEvent
34962(
34963 WDI_ControlBlockType* pWDICtx,
34964 WDI_EventInfoType* pEventData
34965)
34966{
34967 WDI_LowLevelIndType wdiInd;
34968
34969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34970
34971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34972 ( NULL == pEventData->pEventData ))
34973 {
34974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34975 "%s: Invalid parameters", __func__);
34976 WDI_ASSERT( 0 );
34977 return WDI_STATUS_E_FAILURE;
34978 }
34979
34980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34981 "%s: Received NAN event", __func__);
34982 /*-------------------------------------------------------------------------
34983 Extract indication and send it to UMAC
34984 -------------------------------------------------------------------------*/
34985 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
34986 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
34987 pEventData->uEventDataSize;
34988 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
34989 pEventData->pEventData;
34990
34991 /*Notify UMAC*/
34992 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34993
34994 return WDI_STATUS_SUCCESS;
34995}/*WDI_ProcessNanEvent*/
34996
Abhishek Singh41988ba2015-05-25 19:42:29 +053034997WDI_Status
34998WDI_ProcessSetRtsCtsHtvhtInd
34999(
35000 WDI_ControlBlockType* pWDICtx,
35001 WDI_EventInfoType* pEventData
35002)
35003{
35004 wpt_uint8* pSendBuffer = NULL;
35005 wpt_uint16 usDataOffset = 0;
35006 wpt_uint16 usSendSize = 0;
35007 wpt_uint32 *rtsCtsVal;
35008 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
35009 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
35010
35011
35012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35013
35014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35015 "%s", __func__);
35016
35017 /*-------------------------------------------------------------------------
35018 Sanity check
35019 -------------------------------------------------------------------------*/
35020 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
35021 {
35022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35023 "%s: Invalid parameters", __func__);
35024 WDI_ASSERT(0);
35025 return WDI_STATUS_E_FAILURE;
35026 }
35027 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
35028 /*-----------------------------------------------------------------------
35029 Get message buffer
35030 -----------------------------------------------------------------------*/
35031
35032 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35033 WDI_SET_RTS_CTS_HTVHT_IND,
35034 sizeof(tHalRtsCtsHtvhtIndParams),
35035 &pSendBuffer, &usDataOffset, &usSendSize))||
35036 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
35037 {
35038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35039 "Unable to get send buffer in RTS CTS ind %p ",
35040 pEventData);
35041 WDI_ASSERT(0);
35042 return WDI_STATUS_E_FAILURE;
35043 }
35044 rtsCtsHtvhtIndParams =
35045 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
35046 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
35047
35048 pWDICtx->pReqStatusUserData = NULL;
35049 pWDICtx->pfncRspCB = NULL;
35050 /*-------------------------------------------------------------------------
35051 Send SET_RTS_CTS_HTVHT Indication to HAL
35052 -------------------------------------------------------------------------*/
35053 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35054 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35055}
35056
35057WDI_Status
35058WDI_SetRtsCtsHTVhtInd
35059(
35060 wpt_uint32 rtsCtsVal
35061)
35062{
35063 WDI_EventInfoType wdiEventData;
35064 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35065
35066 /*------------------------------------------------------------------------
35067 Sanity Check
35068 ------------------------------------------------------------------------*/
35069 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35070 {
35071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35072 "WDI API call before module is initialized - Fail request");
35073 return WDI_STATUS_E_NOT_ALLOWED;
35074 }
35075
35076 /*------------------------------------------------------------------------
35077 Fill in Event data and post to the Main FSM
35078 ------------------------------------------------------------------------*/
35079 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
35080 wdiEventData.pEventData = (void *) &rtsCtsVal;
35081 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
35082 wdiEventData.pCBfnc = NULL;
35083 wdiEventData.pUserData = NULL;
35084
35085 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35086
35087}/* WDI_SetRtsCtsHTVhtInd */