blob: 058735196627b78e13c4ae9a388acb1de00c780e [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 */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530457 WDI_ProcessEXTScanSetSSIDHotlistReq, /* WDI_EXTSCAN_SET_SSID_HOTLIST_REQ */
458 WDI_ProcessEXTScanResetSSIDHotlistReq, /* WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ */
Dino Mycle41bdc942014-06-10 11:30:24 +0530459#else
460 NULL,
461 NULL,
462 NULL,
463 NULL,
464 NULL,
465 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530466 NULL,
467 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530468#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 */
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530482 WDI_ProcessFatalEventLogsReq, /*WDI_FATAL_EVENT_LOGGING_REQ*/
schang86c22c42013-03-13 18:41:24 -0700483 /*-------------------------------------------------------------------------
484 Indications
485 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700486 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800487 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530488 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
489 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700490#ifdef WLAN_FEATURE_11W
491 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
492#else
493 NULL,
494#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700495 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
496 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530497#ifdef FEATURE_WLAN_BATCH_SCAN
498 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
499 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
500#else
501 NULL,
502 NULL,
503#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700504 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800505
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530506 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800507 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
508
509 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530510#ifdef FEATURE_WLAN_TDLS
511 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
512#else
513 NULL,
514#endif
Abhishek Singh41988ba2015-05-25 19:42:29 +0530515 WDI_ProcessSetRtsCtsHtvhtInd, /* WDI_SET_RTS_CTS_HTVHT_IND */
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530516 WDI_ProcessFWLoggingDXEdoneInd, /* WDI_FW_LOGGING_DXE_DONE_IND */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +0530517 WDI_ProcessEnableDisableCAEventInd, /* WDI_SEND_FREQ_RANGE_CONTROL_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700518};
519
520
Jeff Johnsone7245742012-09-05 17:12:55 -0700521/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700522 DAL Request Processing Array - the functions in this table will only be
523 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700524 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700525 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700526WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700527{
528 /*INIT*/
529 WDI_ProcessStartRsp, /* WDI_START_RESP */
530 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
531 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
532
533 /*SCAN*/
534 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
535 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
536 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
537 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
538
539 /* ASSOCIATION*/
540 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
541 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
542 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
543 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
544 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
545
546 /* Security */
547 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
548 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
549 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
550 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
551
552 /* QoS and BA APIs */
553 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
554 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
555 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
556 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
557 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
558
559 /* Miscellaneous Control APIs */
560 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
561 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
562 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
563 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
564 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
565
566 /* BA APIs*/
567 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
568 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700569
Jeff Johnson295189b2012-06-20 16:38:30 -0700570 /* IBSS APIs*/
571 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
572 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
573
574 /*Soft AP APIs*/
575 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
576 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
577 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
578 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
579
580 /* PowerSave APIs */
581 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
582 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
583 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
584 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
585 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
586 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
587 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
588 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
589 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
590 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
591 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
592 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
593 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
594 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
595 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
596 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
597 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
598 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700599
Jeff Johnson295189b2012-06-20 16:38:30 -0700600
601 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
602
603 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
604 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
605#ifdef WLAN_FEATURE_VOWIFI_11R
606 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
607#else
608 NULL,
609#endif /* WLAN_FEATURE_VOWIFI_11R */
610 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
611 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700612#ifdef FEATURE_OEM_DATA_SUPPORT
613 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
614#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700615 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700616#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700617 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
618
Jeff Johnson295189b2012-06-20 16:38:30 -0700619 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700620
Jeff Johnson295189b2012-06-20 16:38:30 -0700621 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700622
Jeff Johnsone7245742012-09-05 17:12:55 -0700623 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
624
Jeff Johnson295189b2012-06-20 16:38:30 -0700625#ifdef FEATURE_WLAN_SCAN_PNO
626 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
627 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
628 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
629#else
630 NULL,
631 NULL,
632 NULL,
633#endif // FEATURE_WLAN_SCAN_PNO
634
635 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700636 /*---------------------------------------------------------------------
637 Indications
638 ---------------------------------------------------------------------*/
639#ifdef WLAN_FEATURE_PACKET_FILTERING
640 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700641 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700642 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700643 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700644 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700645 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700646 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700647 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700648#else
649 NULL,
650 NULL,
651 NULL,
652 NULL,
653#endif // WLAN_FEATURE_PACKET_FILTERING
654
655 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
656 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
657
658 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800659#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700660 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
661#else
662 NULL,
663#endif
664
665#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700666 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
667 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700668#else
669 NULL,
670 NULL,
671#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700672 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
673 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700674#ifdef WLAN_FEATURE_11AC
675 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700676#else
677 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700678#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800679#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800680 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
681#else
682 NULL,
683#endif
schang86c22c42013-03-13 18:41:24 -0700684 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700685#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700686 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700687#else
688 NULL,
689#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530690#ifdef FEATURE_WLAN_TDLS
691 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
692#else
693 NULL,
694#endif
Leo Chang9056f462013-08-01 19:21:11 -0700695#ifdef FEATURE_WLAN_LPHB
696 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
697#else
698 NULL,
699#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530700
701#ifdef FEATURE_WLAN_BATCH_SCAN
702 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
703#else
704 NULL,
705#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800706 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530707
c_hpothu92367912014-05-01 15:18:17 +0530708 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800709
c_hpothu92367912014-05-01 15:18:17 +0530710 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
711
712 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800713
Sunil Duttbd736ed2014-05-26 21:19:41 +0530714
715#ifdef WLAN_FEATURE_LINK_LAYER_STATS
716 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
717 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
718 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
719#else
720 NULL,
721 NULL,
722 NULL,
723#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530724#ifdef WLAN_FEATURE_EXTSCAN
725 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
726 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
727 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
728 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
729 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
730 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530731 WDI_ProcessEXTScanSetHotlistSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_SSID_RSP */
732 WDI_ProcessEXTScanResetHotlistSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP */
Dino Mycle41bdc942014-06-10 11:30:24 +0530733#else
734 NULL,
735 NULL,
736 NULL,
737 NULL,
738 NULL,
739 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530740 NULL,
741 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530742#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530743 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530744
745 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530746
747 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530748 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530749 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530750
Srinivas Dasari32a79262015-02-19 13:04:49 +0530751 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
752
Katya Nigamf0511f62015-05-05 16:40:57 +0530753 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
754 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530755 WDI_ProcessFatalEventLogsRsp, /*WDI_FATAL_EVENT_LOGGING_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700756 /*---------------------------------------------------------------------
757 Indications
758 ---------------------------------------------------------------------*/
759 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
760 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
761 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
762 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
763 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
764 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
765
766 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
767
768 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
769
Jeff Johnson295189b2012-06-20 16:38:30 -0700770 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700771
772#ifdef FEATURE_WLAN_SCAN_PNO
773 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
774#else
775 NULL,
776#endif // FEATURE_WLAN_SCAN_PNO
777
778#ifdef WLAN_WAKEUP_EVENTS
779 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
780#else // WLAN_WAKEUP_EVENTS
781 NULL,
782#endif // WLAN_WAKEUP_EVENTS
783
784 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800785
Viral Modid86bde22012-12-10 13:09:21 -0800786 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530787#ifdef FEATURE_WLAN_TDLS
788 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
789#else
790 NULL,
791#endif
Leo Chang9056f462013-08-01 19:21:11 -0700792
793#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700794 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700795#else
796 NULL,
797#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700798
799 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700800
801 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530802
803#ifdef FEATURE_WLAN_BATCH_SCAN
804 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
805#else
806 NULL,
807#endif
808
Leo Chang0b0e45a2013-12-15 15:18:55 -0800809#ifdef FEATURE_WLAN_CH_AVOID
810 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
811#else
812 NULL,
813#endif /* FEATURE_WLAN_CH_AVOID */
814
Sunil Duttbd736ed2014-05-26 21:19:41 +0530815 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
816#ifdef WLAN_FEATURE_LINK_LAYER_STATS
817 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
818#else
819 NULL,
820#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530821#ifdef WLAN_FEATURE_EXTSCAN
822 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
823 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
824 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
825 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530826 WDI_ProcessEXTScanSsidHotListResultInd, /* WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND */
Dino Mycle41bdc942014-06-10 11:30:24 +0530827#else
828 NULL,
829 NULL,
830 NULL,
831 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530832 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530833#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530834#ifdef FEATURE_WLAN_TDLS
835 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
836#else
837 NULL,
838#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530839 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530840 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +0530841 WDI_Process_LostLinkParamInd, /* WDI_HAL_LOST_LINK_PARAMS_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700842};
843
844
Jeff Johnsone7245742012-09-05 17:12:55 -0700845/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700846 WLAN DAL Global Control Block
847 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700848WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700849static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
850
Jeff Johnsone7245742012-09-05 17:12:55 -0700851const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700852
853/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700854WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700855void* WDI_GET_PAL_CTX( void )
856{
Jeff Johnsone7245742012-09-05 17:12:55 -0700857 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700858}/*WDI_GET_PAL_CTX*/
859
Jeff Johnsone7245742012-09-05 17:12:55 -0700860/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700861 Helper inline converters
862 ============================================================================*/
863/*Convert WDI driver type into HAL driver type*/
864WPT_STATIC WPT_INLINE WDI_Status
865WDI_HAL_2_WDI_STATUS
866(
867 eHalStatus halStatus
868);
869
870/*Convert WDI request type into HAL request type*/
871WPT_STATIC WPT_INLINE tHalHostMsgType
872WDI_2_HAL_REQ_TYPE
873(
874 WDI_RequestEnumType wdiReqType
875);
876
877/*Convert WDI response type into HAL response type*/
878WPT_STATIC WPT_INLINE WDI_ResponseEnumType
879HAL_2_WDI_RSP_TYPE
880(
881 tHalHostMsgType halMsg
882);
883
884/*Convert WDI driver type into HAL driver type*/
885WPT_STATIC WPT_INLINE tDriverType
886WDI_2_HAL_DRV_TYPE
887(
888 WDI_DriverType wdiDriverType
889);
890
891/*Convert WDI stop reason into HAL stop reason*/
892WPT_STATIC WPT_INLINE tHalStopType
893WDI_2_HAL_STOP_REASON
894(
895 WDI_StopType wdiStopType
896);
897
898/*Convert WDI scan mode type into HAL scan mode type*/
899WPT_STATIC WPT_INLINE eHalSysMode
900WDI_2_HAL_SCAN_MODE
901(
902 WDI_ScanMode wdiScanMode
903);
904
905/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700906WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700907WDI_2_HAL_SEC_CH_OFFSET
908(
909 WDI_HTSecondaryChannelOffset wdiSecChOffset
910);
911
912/*Convert WDI BSS type into HAL BSS type*/
913WPT_STATIC WPT_INLINE tSirBssType
914WDI_2_HAL_BSS_TYPE
915(
916 WDI_BssType wdiBSSType
917);
918
919/*Convert WDI NW type into HAL NW type*/
920WPT_STATIC WPT_INLINE tSirNwType
921WDI_2_HAL_NW_TYPE
922(
923 WDI_NwType wdiNWType
924);
925
926/*Convert WDI chanel bonding type into HAL cb type*/
927WPT_STATIC WPT_INLINE ePhyChanBondState
928WDI_2_HAL_CB_STATE
929(
930 WDI_PhyChanBondState wdiCbState
931);
932
933/*Convert WDI chanel bonding type into HAL cb type*/
934WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
935WDI_2_HAL_HT_OPER_MODE
936(
937 WDI_HTOperatingMode wdiHTOperMode
938);
939
940/*Convert WDI mimo PS type into HAL mimo PS type*/
941WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
942WDI_2_HAL_MIMO_PS
943(
944 WDI_HTMIMOPowerSaveState wdiHTOperMode
945);
946
947/*Convert WDI ENC type into HAL ENC type*/
948WPT_STATIC WPT_INLINE tAniEdType
949WDI_2_HAL_ENC_TYPE
950(
951 WDI_EncryptType wdiEncType
952);
953
954/*Convert WDI WEP type into HAL WEP type*/
955WPT_STATIC WPT_INLINE tAniWepType
956WDI_2_HAL_WEP_TYPE
957(
958 WDI_WepType wdiWEPType
959);
960
961/*Convert WDI Link State into HAL Link State*/
962WPT_STATIC WPT_INLINE tSirLinkState
963WDI_2_HAL_LINK_STATE
964(
965 WDI_LinkStateType wdiLinkState
966);
967
Jeff Johnsone7245742012-09-05 17:12:55 -0700968/*Translate a STA Context from WDI into HAL*/
969WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700970void
971WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700972(
Jeff Johnson295189b2012-06-20 16:38:30 -0700973 tConfigStaParams* phalConfigSta,
974 WDI_ConfigStaReqInfoType* pwdiConfigSta
975);
Jeff Johnsone7245742012-09-05 17:12:55 -0700976
977/*Translate a Rate set info from WDI into HAL*/
978WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700979WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700980(
Jeff Johnson295189b2012-06-20 16:38:30 -0700981 tSirMacRateSet* pHalRateSet,
982 WDI_RateSet* pwdiRateSet
983);
984
985/*Translate an EDCA Parameter Record from WDI into HAL*/
986WPT_STATIC WPT_INLINE void
987WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700988(
Jeff Johnson295189b2012-06-20 16:38:30 -0700989 tSirMacEdcaParamRecord* phalEdcaParam,
990 WDI_EdcaParamRecord* pWDIEdcaParam
991);
992
993/*Copy a management frame header from WDI fmt into HAL fmt*/
994WPT_STATIC WPT_INLINE void
995WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
996(
997 tSirMacMgmtHdr* pmacMgmtHdr,
998 WDI_MacMgmtHdr* pwdiMacMgmtHdr
999);
1000
1001/*Copy config bss parameters from WDI fmt into HAL fmt*/
1002WPT_STATIC WPT_INLINE void
1003WDI_CopyWDIConfigBSSToHALConfigBSS
1004(
1005 tConfigBssParams* phalConfigBSS,
1006 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1007);
1008
Jeff Johnsone7245742012-09-05 17:12:55 -07001009/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001010 pointed to by user data */
1011WPT_STATIC WPT_INLINE void
1012WDI_ExtractRequestCBFromEvent
1013(
1014 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001015 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001016 void** ppUserData
1017);
1018
1019wpt_uint8
1020WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001021(
Jeff Johnson295189b2012-06-20 16:38:30 -07001022 WDI_ControlBlockType* pWDICtx,
1023 WDI_BSSSessionType** ppSession
1024);
1025
1026void
1027WDI_AddBcastSTAtoSTATable
1028(
1029 WDI_ControlBlockType* pWDICtx,
1030 WDI_AddStaParams * staParams,
1031 wpt_uint16 usBcastStaIdx
1032);
1033
1034WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001035(
Jeff Johnson295189b2012-06-20 16:38:30 -07001036 WDI_ControlBlockType* pWDICtx,
1037 WDI_EventInfoType* pEventData
1038);
1039
1040void
1041WDI_SetPowerStateCb
1042(
1043 wpt_status status,
1044 unsigned int dxePhyAddr,
1045 void *pContext
1046);
1047
Jeff Johnson295189b2012-06-20 16:38:30 -07001048/**
1049 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001050
1051 @param wdiReqMsgId: WDI Message request Id
1052
1053 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001054 @return Result of the function call
1055*/
1056static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1057{
1058 switch (wdiReqMsgId)
1059 {
1060 CASE_RETURN_STRING( WDI_START_REQ );
1061 CASE_RETURN_STRING( WDI_STOP_REQ );
1062 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1063 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1064 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1065 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1066 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1067 CASE_RETURN_STRING( WDI_JOIN_REQ );
1068 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1069 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1070 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1071 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1072 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1073 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1074 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1075 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1076 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1077 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1078 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1079 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1080 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1081 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001082 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001083 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1084 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1085 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1086 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1087 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1088 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1089 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1090 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1091 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1092 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1093 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1094 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001095 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001096 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301097#ifdef FEATURE_WLAN_TDLS
1098 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301099 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301100#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001101 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1102 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1103 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1104 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1105 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1106 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1107 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1108 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1109 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1110 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1111 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1112 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1113 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1114 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1115 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1116 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1117 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1118 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1119 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1120 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1121 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1122 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1123 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1124 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1125 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001126 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001127 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1128 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1129 #ifdef FEATURE_WLAN_SCAN_PNO
1130 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1131 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1132 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1133 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001134#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001135 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001136#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001137 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1138 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1139 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1140 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1141 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1142 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1143 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1144 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1145 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301146 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001147 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001148 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001149#ifdef WLAN_FEATURE_11W
1150 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1151#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301152#ifdef FEATURE_WLAN_BATCH_SCAN
1153 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1154 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1155 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1156#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301157 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1158 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001159 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301160#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1161 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1162 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1163 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1164#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301165#ifdef WLAN_FEATURE_EXTSCAN
1166 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1167 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1168 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1169 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1170 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1171 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301172 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SSID_HOTLIST_REQ);
1173 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ);
Dino Mycle41bdc942014-06-10 11:30:24 +05301174#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301175 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301176 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301177 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301178 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301179 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301180 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301181 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301182 CASE_RETURN_STRING( WDI_MON_START_REQ );
1183 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301184 CASE_RETURN_STRING( WDI_FATAL_EVENT_LOGGING_REQ );
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +05301185 CASE_RETURN_STRING( WDI_SEND_FREQ_RANGE_CONTROL_IND );
Jeff Johnson295189b2012-06-20 16:38:30 -07001186 default:
1187 return "Unknown WDI MessageId";
1188 }
1189}
1190
1191
1192
1193/**
1194 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001195
1196 @param wdiRespMsgId: WDI Message response Id
1197
1198 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001199 @return Result of the function call
1200*/
1201static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1202{
1203 switch (wdiRespMsgId)
1204 {
1205 CASE_RETURN_STRING( WDI_START_RESP );
1206 CASE_RETURN_STRING( WDI_STOP_RESP );
1207 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1208 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1209 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1210 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1211 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1212 CASE_RETURN_STRING( WDI_JOIN_RESP );
1213 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1214 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1215 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1216 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1217 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1218 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1219 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1220 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1221 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1222 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1223 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1224 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1225 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1226 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1227 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1228 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1229 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1230 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1231 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1232 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1233 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1234 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1235 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1236 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1237 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1238 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1239 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301240#ifdef FEATURE_WLAN_TDLS
1241 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301242 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301243 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1244#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001245 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1246 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1247 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1248 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1249 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1250 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1251 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1252 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1253 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1254 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1255 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1256 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1257 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1258 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1259 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1260 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1261 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1262 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1263 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1264 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1265 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1266 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1267 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1268 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1269 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001270 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001271 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1272 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1273 #ifdef FEATURE_WLAN_SCAN_PNO
1274 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1275 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1276 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1277 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001278#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001279 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001280#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001281 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1282 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1283 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1284 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1285 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1286 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1287 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1288 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001289 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301290#ifdef FEATURE_WLAN_BATCH_SCAN
1291 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1292#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001293 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301294 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301295 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301296#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1297 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1298 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1299 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1300#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301301#ifdef WLAN_FEATURE_EXTSCAN
1302 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1303 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1304 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1305 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1306 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1307 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301308 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
1309 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
Dino Mycle41bdc942014-06-10 11:30:24 +05301310 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1311 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1312 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1313 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301314 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301315
1316#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301317 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301318 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301319 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301320 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301321 CASE_RETURN_STRING (WDI_FATAL_EVENT_LOGGING_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001322 default:
1323 return "Unknown WDI MessageId";
1324 }
1325}
1326
1327/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301328 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1329 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301330 @param capabilityBitmap - Base address of a 4 element Bitmap array
1331 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301332 @see
1333 @returns None
1334 */
1335void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1336{
Abhishek Singh08b60122014-02-04 18:05:23 +05301337 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301338 char *pTempCapStr = NULL;
1339 char *pCapStr = NULL;
1340 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1341 if (NULL == pTempCapStr)
1342 {
1343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1344 "Memory allocation failed for CapStr");
1345 return;
1346 }
1347
1348 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301349 for (j = 0; j < 4; j++) {
1350 for (i = 0; i < 32; i++) {
1351 if ((*(capabilityBitmap + j) & (1 << i))) {
1352 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301353 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1354 pCapStr += strlen("MCC");
1355 break;
1356 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1357 pCapStr += strlen("P2P");
1358 break;
1359 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1360 pCapStr += strlen("DOT11AC");
1361 break;
1362 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1363 pCapStr += strlen("SLM_SESSIONIZATION");
1364 break;
1365 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1366 pCapStr += strlen("DOT11AC_OPMODE");
1367 break;
1368 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1369 pCapStr += strlen("SAP32STA");
1370 break;
1371 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1372 pCapStr += strlen("TDLS");
1373 break;
1374 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1375 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1376 break;
1377 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1378 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1379 break;
1380 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1381 pCapStr += strlen("BEACON_OFFLOAD");
1382 break;
1383 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1384 pCapStr += strlen("SCAN_OFFLOAD");
1385 break;
1386 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1387 pCapStr += strlen("ROAM_OFFLOAD");
1388 break;
1389 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1390 pCapStr += strlen("BCN_MISS_OFFLOAD");
1391 break;
1392 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1393 pCapStr += strlen("STA_POWERSAVE");
1394 break;
1395 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1396 pCapStr += strlen("AP_UAPSD");
1397 break;
1398 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1399 pCapStr += strlen("AP_DFS");
1400 break;
1401 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1402 pCapStr += strlen("BLOCKACK");
1403 break;
1404 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1405 pCapStr += strlen("PHY_ERR");
1406 break;
1407 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1408 pCapStr += strlen("BCN_FILTER");
1409 break;
1410 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1411 pCapStr += strlen("RTT");
1412 break;
1413 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1414 pCapStr += strlen("RATECTRL");
1415 break;
1416 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1417 pCapStr += strlen("WOW");
1418 break;
1419 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1420 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1421 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301422 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1423 pCapStr += strlen("FW_IN_TX_PATH");
1424 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301425 case HT40_OBSS_SCAN:
1426 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1427 "%s", "HT40_OBSS_SCAN");
1428 pCapStr += strlen("HT40_OBSS_SCAN");
1429 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301430 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1431 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1432 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1433 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1434 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301435 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1436 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1437 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301438 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1439 pCapStr += strlen("CH_SWITCH_V1");
1440 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301441#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1442 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1443 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1444 break;
1445#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301446#ifdef WLAN_FEATURE_EXTSCAN
1447 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1448 pCapStr += strlen("EXTENDED_SCAN");
1449 break;
1450#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301451 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1452 pCapStr += strlen("MU_MIMO");
1453 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301454
Mihir Shetec34258c2014-07-30 17:50:27 +05301455 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1456 pCapStr += strlen("DYNAMIC_WMM_PS");
1457 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301458 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1459 pCapStr += strlen("FW_STATS");
1460 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301461 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1462 pCapStr += strlen("MAC_SPOOFED_SCAN");
1463 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301464 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1465 pCapStr += strlen("WPS_PRBRSP_TMPL");
1466 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301467 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1468 pCapStr += strlen("BCN_IE_FLT_DELTA");
1469 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301470 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1471 pCapStr += strlen("MGMT_FRAME_LOGGING");
1472 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301473 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1474 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1475 break;
1476
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301477 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1478 pCapStr += strlen("DISA");
1479 break;
1480
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301481 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1482 pCapStr += strlen("TDLS_OFF_CHANNEL");
1483 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301484 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1485 pCapStr += strlen("LOGGING_ENHANCEMENT");
1486 break;
1487
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301488
Abhishek Singh08b60122014-02-04 18:05:23 +05301489 }
1490 *pCapStr++ = ',';
1491 *pCapStr++ = ' ';
1492 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301493 }
1494 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301495 pCapStr -= 2;
1496 *pCapStr = '\0';
Ratheesh S P36dbc932015-08-07 14:28:57 +05301497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "\t\t%s", pTempCapStr);
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301498 if (pTempCapStr)
1499 {
1500 vos_mem_free(pTempCapStr);
1501 pTempCapStr = NULL;
1502 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301503}
1504
1505/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001506 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001507
1508 @param halStatusId: HAL status Id
1509
1510 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001511 @return Result of the function call
1512*/
1513static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1514{
1515 switch (halStatusId)
1516 {
1517 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1518 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1519 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1520 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1521 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1522 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1523 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1524 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1525 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1526 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1527 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1528 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1529 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1530 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1531 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1532 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1533 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1534 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1535 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1536 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1537 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1538 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1539 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1540 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1541 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1542 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1543 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1544 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1545 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1546 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1547 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1548 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1549 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1550 default:
1551 return "Unknown HAL status";
1552 }
1553}
1554
Jeff Johnsone7245742012-09-05 17:12:55 -07001555/*========================================================================
1556
Jeff Johnson295189b2012-06-20 16:38:30 -07001557 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001558
Jeff Johnson295189b2012-06-20 16:38:30 -07001559==========================================================================*/
1560
1561/**
1562 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001563
Jeff Johnson295189b2012-06-20 16:38:30 -07001564 DAL will allocate all the resources it needs. It will open PAL, it will also
1565 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001566 DXE/SMD or any other drivers that they need.
1567
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301568 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001569 ppWDIGlobalCtx: output pointer of Global Context
1570 pWdiDevCapability: output pointer of device capability
1571
1572 @return Result of the function call
1573*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001574WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001575WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001576(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301577 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001578 void** ppWDIGlobalCtx,
1579 WDI_DeviceCapabilityType* pWdiDevCapability,
1580 unsigned int driverType
1581)
1582{
1583 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001584 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001585 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001586 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1588
1589 /*---------------------------------------------------------------------
1590 Sanity check
1591 ---------------------------------------------------------------------*/
1592 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1593 {
1594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1595 "Invalid input parameters in WDI_Init");
1596
Jeff Johnsone7245742012-09-05 17:12:55 -07001597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001598 }
1599
1600 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001601 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001602 ---------------------------------------------------------------------*/
1603 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1604 {
1605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1606 "WDI module already initialized - return");
1607
Jeff Johnsone7245742012-09-05 17:12:55 -07001608 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001609 }
1610
1611 /*Module is now initialized - this flag is to ensure the fact that multiple
1612 init will not happen on WDI
1613 !! - potential race does exist because read and set are not atomic,
1614 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001615 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001616
1617 /*Setup the control block */
1618 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301619 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001620
1621 /*Setup the STA Table*/
1622 wdiStatus = WDI_STATableInit(&gWDICb);
1623 if ( WDI_STATUS_SUCCESS != wdiStatus )
1624 {
1625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1626 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001627 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001628 goto fail_STATableInit;
1629 }
1630
1631 /*------------------------------------------------------------------------
1632 Open the PAL
1633 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301634 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001635 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1636 {
1637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1638 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001639 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001640 goto fail_wpalOpen;
1641 }
1642
1643 /*Initialize main synchro mutex - it will be used to ensure integrity of
1644 the main WDI Control Block*/
1645 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1646 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1647 {
1648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1649 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001650 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001651 goto fail_mutex;
1652 }
1653
1654 /*Initialize the response timer - it will be used to time all messages
1655 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001656 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1657 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001658 &gWDICb);
1659 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1660 {
1661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1662 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001663 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001664 goto fail_timer;
1665 }
1666
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001667 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1668 WDI_SsrTimerCB,
1669 &gWDICb);
1670 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1671 {
1672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1673 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001674 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001675 goto fail_timer2;
1676 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001677 /* Initialize the WDI Pending Request Queue*/
1678 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1679 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1680 {
1681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1682 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001683 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001684 goto fail_pend_queue;
1685 }
1686
1687 /*Init WDI Pending Assoc Id Queue */
1688 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1689 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1690 {
1691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1692 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001693 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001694 goto fail_assoc_queue;
1695 }
1696
1697 /*Initialize the BSS sessions pending Queue */
1698 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1699 {
1700 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1701 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1702 {
1703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1704 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001705 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001706 goto fail_bss_queue;
1707 }
1708 }
1709
1710 /*Indicate the control block is sufficiently initialized for callbacks*/
1711 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1712
1713 /*------------------------------------------------------------------------
1714 Initialize the Data Path Utility Module
1715 ------------------------------------------------------------------------*/
1716 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1717 if ( WDI_STATUS_SUCCESS != wdiStatus )
1718 {
1719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1720 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001721 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001722 goto fail_dp_util_init;
1723 }
1724
1725 /* Init Set power state event */
1726 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001727 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001728 {
1729 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1730 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001731 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001732 goto fail_power_event;
1733 }
1734
1735 /* Init WCTS action event */
1736 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001737 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001738 {
1739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1740 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001741 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001742 goto fail_wcts_event;
1743 }
1744
1745 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001746 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 ------------------------------------------------------------------------*/
1748 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1749 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001750 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001751 wctsCBs.wctsRxMsgCBData = &gWDICb;
1752
Jeff Johnsone7245742012-09-05 17:12:55 -07001753 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001754 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001755 WDI_CT_CHANNEL_SIZE,
1756 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001757
1758 if ( NULL == gWDICb.wctsHandle )
1759 {
1760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001761 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 goto fail_wcts_open;
1763 }
1764
1765 gWDICb.driverMode = (tDriverType)driverType;
1766 /* FTM mode not need to open Transport Driver */
1767 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001768 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 /*------------------------------------------------------------------------
1770 Open the Data Transport
1771 ------------------------------------------------------------------------*/
1772 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1773 {
1774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001775 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001776 goto fail_wdts_open;
1777 }
1778 }
1779
1780 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001781 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301782 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001783 /*Send the context as a ptr to the global WDI Control Block*/
1784 *ppWDIGlobalCtx = &gWDICb;
1785
1786 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001787 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001788 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1789 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1790 return WDI_STATUS_SUCCESS;
1791
1792 /* ERROR handlers
1793 Undo everything that completed successfully */
1794
1795 fail_wdts_open:
1796 {
1797 wpt_status eventStatus;
1798
1799 /* Closing WCTS in this scenario is tricky since it has to close
1800 the SMD channel and then we get notified asynchronously when
1801 the channel has been closed. So we take some of the logic from
1802 the "normal" close procedure in WDI_Close()
1803 */
1804
1805 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001806 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001807 {
1808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001809 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001810 }
1811
1812 WCTS_CloseTransport(gWDICb.wctsHandle);
1813
1814 /* Wait for WCTS to close the control transport. If we were able
1815 to reset the event flag, then we'll wait for the event,
1816 otherwise we'll wait for a maximum amount of time required for
1817 the channel to be closed */
1818 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1819 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001820 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001821 WDI_WCTS_ACTION_TIMEOUT);
1822 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1823 {
1824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001825 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001826 }
1827 }
1828 else
1829 {
1830 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1831 }
1832 }
1833 fail_wcts_open:
1834 wpalEventDelete(&gWDICb.wctsActionEvent);
1835 fail_wcts_event:
1836 wpalEventDelete(&gWDICb.setPowerStateEvent);
1837 fail_power_event:
1838 WDI_DP_UtilsExit(&gWDICb);
1839 fail_dp_util_init:
1840 gWDICb.magic = 0;
1841 fail_bss_queue:
1842 /* entries 0 thru i-1 were successfully initialized */
1843 while (0 < i)
1844 {
1845 i--;
1846 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1847 }
1848 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1849 fail_assoc_queue:
1850 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1851 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001852 wpalTimerDelete(&gWDICb.ssrTimer);
1853 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001854 wpalTimerDelete(&gWDICb.wptResponseTimer);
1855 fail_timer:
1856 wpalMutexDelete(&gWDICb.wptMutex);
1857 fail_mutex:
1858 wpalClose(gWDICb.pPALContext);
1859 fail_wpalOpen:
1860 WDI_STATableClose(&gWDICb);
1861 fail_STATableInit:
1862 gWDIInitialized = eWLAN_PAL_FALSE;
1863
1864 return WDI_STATUS_E_FAILURE;
1865
1866}/*WDI_Init*/;
1867
1868/**
1869 @brief WDI_Start will be called when the upper MAC is ready to
1870 commence operation with the WLAN Device. Upon the call
1871 of this API the WLAN DAL will pack and send a HAL Start
1872 message to the lower RIVA sub-system if the SMD channel
1873 has been fully opened and the RIVA subsystem is up.
1874
1875 If the RIVA sub-system is not yet up and running DAL
1876 will queue the request for Open and will wait for the
1877 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001878 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001879
1880 WDI_Init must have been called.
1881
Jeff Johnsone7245742012-09-05 17:12:55 -07001882 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001883 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001884
Jeff Johnson295189b2012-06-20 16:38:30 -07001885 wdiStartRspCb: callback for passing back the response of
1886 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001887
Jeff Johnson295189b2012-06-20 16:38:30 -07001888 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001889 callback
1890
Jeff Johnson295189b2012-06-20 16:38:30 -07001891 @see WDI_Start
1892 @return Result of the function call
1893*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001894WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001895WDI_Start
1896(
1897 WDI_StartReqParamsType* pwdiStartParams,
1898 WDI_StartRspCb wdiStartRspCb,
1899 void* pUserData
1900)
1901{
1902 WDI_EventInfoType wdiEventData;
1903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1904
1905 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001906 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001907 ------------------------------------------------------------------------*/
1908 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1909 {
1910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1911 "WDI API call before module is initialized - Fail request");
1912
Jeff Johnsone7245742012-09-05 17:12:55 -07001913 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001914 }
1915
1916 /*------------------------------------------------------------------------
1917 Fill in Event data and post to the Main FSM
1918 ------------------------------------------------------------------------*/
1919 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001920 wdiEventData.pEventData = pwdiStartParams;
1921 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1922 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001923 wdiEventData.pUserData = pUserData;
1924
1925 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1926
1927}/*WDI_Start*/
1928
1929/**
1930 @brief WDI_Stop will be called when the upper MAC is ready to
1931 stop any operation with the WLAN Device. Upon the call
1932 of this API the WLAN DAL will pack and send a HAL Stop
1933 message to the lower RIVA sub-system if the DAL Core is
1934 in started state.
1935
1936 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001937
1938 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001939
1940 WDI_Start must have been called.
1941
Jeff Johnsone7245742012-09-05 17:12:55 -07001942 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001943 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001944
Jeff Johnson295189b2012-06-20 16:38:30 -07001945 wdiStopRspCb: callback for passing back the response of
1946 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001947
Jeff Johnson295189b2012-06-20 16:38:30 -07001948 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001949 callback
1950
Jeff Johnson295189b2012-06-20 16:38:30 -07001951 @see WDI_Start
1952 @return Result of the function call
1953*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001954WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001955WDI_Stop
1956(
1957 WDI_StopReqParamsType* pwdiStopParams,
1958 WDI_StopRspCb wdiStopRspCb,
1959 void* pUserData
1960)
1961{
1962 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001963 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1965
1966 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001967 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001968 ------------------------------------------------------------------------*/
1969 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1970 {
1971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1972 "WDI API call before module is initialized - Fail request");
1973
Jeff Johnsone7245742012-09-05 17:12:55 -07001974 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001975 }
1976
Jeff Johnson43971f52012-07-17 12:26:56 -07001977 /*Access to the global state must be locked before cleaning */
1978 wpalMutexAcquire(&pWDICtx->wptMutex);
1979
1980 /*Clear all pending request*/
1981 WDI_ClearPendingRequests(pWDICtx);
1982
1983 /*We have completed cleaning unlock now*/
1984 wpalMutexRelease(&pWDICtx->wptMutex);
1985
Jeff Johnson295189b2012-06-20 16:38:30 -07001986 /* Free the global variables */
1987 wpalMemoryFree(gpHostWlanFeatCaps);
1988 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001989 gpHostWlanFeatCaps = NULL;
1990 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001991
1992 /*------------------------------------------------------------------------
1993 Fill in Event data and post to the Main FSM
1994 ------------------------------------------------------------------------*/
1995 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001996 wdiEventData.pEventData = pwdiStopParams;
1997 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1998 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001999 wdiEventData.pUserData = pUserData;
2000
2001 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
2002
2003}/*WDI_Stop*/
2004
2005
2006
2007/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002008 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002009 needs to interact with DAL. DAL will free its control
2010 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002011
2012 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002013
2014 WDI_Stop must have been called.
2015
2016 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002017
Jeff Johnson295189b2012-06-20 16:38:30 -07002018 @see WDI_Stop
2019 @return Result of the function call
2020*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002021WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002022WDI_Close
2023(
2024 void
2025)
2026{
2027 wpt_uint8 i;
2028 WDI_EventInfoType wdiEventData;
2029 wpt_status wptStatus;
2030 wpt_status eventStatus;
2031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2032
2033 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002034 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002035 ------------------------------------------------------------------------*/
2036 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2037 {
2038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2039 "WDI API call before module is initialized - Fail request");
2040
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002042 }
2043
2044 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2045 (the control transport will be closed by the FSM and we'll want
2046 to wait until that completes)*/
2047 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002048 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002049 {
2050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002051 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002052 /* fall through and try to finish closing via the FSM */
2053 }
2054
2055 /*------------------------------------------------------------------------
2056 Fill in Event data and post to the Main FSM
2057 ------------------------------------------------------------------------*/
2058 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002059 wdiEventData.pEventData = NULL;
2060 wdiEventData.uEventDataSize = 0;
2061 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002062 wdiEventData.pUserData = NULL;
2063
2064 gWDIInitialized = eWLAN_PAL_FALSE;
2065
2066 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2067
2068 /*Wait for WCTS to close the control transport
2069 (but only if we were able to reset the event flag*/
2070 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2071 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002072 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002073 WDI_WCTS_ACTION_TIMEOUT);
2074 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2075 {
2076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002077 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002078 }
2079 }
2080
2081 /* Destroy the WCTS action event */
2082 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2083 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2084 {
2085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2086 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002087 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002088 }
2089
2090 /* Destroy the Set Power State event */
2091 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2092 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2093 {
2094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2095 "WDI Close failed to destroy an event");
2096
Jeff Johnsone7245742012-09-05 17:12:55 -07002097 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002098 }
2099
2100 /*------------------------------------------------------------------------
2101 Closes the Data Path Utility Module
2102 ------------------------------------------------------------------------*/
2103 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2104 {
2105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2106 "WDI Init failed to close the DP Util Module");
2107
Jeff Johnsone7245742012-09-05 17:12:55 -07002108 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002109 }
2110
2111 /*destroy the BSS sessions pending Queue */
2112 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2113 {
2114 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2115 }
2116
2117 /* destroy the WDI Pending Assoc Id Request Queue*/
2118 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2119
2120 /* destroy the WDI Pending Request Queue*/
2121 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002122
Jeff Johnson295189b2012-06-20 16:38:30 -07002123 /*destroy the response timer */
2124 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2125
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002126 /*destroy the SSR timer */
2127 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2128
Jeff Johnson295189b2012-06-20 16:38:30 -07002129 /*invalidate the main synchro mutex */
2130 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2131 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2132 {
2133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2134 "Failed to delete mutex %d", wptStatus);
2135 WDI_ASSERT(0);
2136 }
2137
2138 /*Clear control block. note that this will clear the "magic"
2139 which will inhibit all asynchronous callbacks*/
2140 WDI_CleanCB(&gWDICb);
2141
2142 return wptStatus;
2143
2144}/*WDI_Close*/
2145
2146/**
2147 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2148 This will do most of the WDI stop & close
2149 operations without doing any handshake with Riva
2150
2151 This will also make sure that the control transport
2152 will NOT be closed.
2153
2154 This request will not be queued.
2155
2156
2157 WDI_Start must have been called.
2158
2159 @param closeTransport: Close control channel if this is set
2160
2161 @return Result of the function call
2162*/
2163WDI_Status
2164WDI_Shutdown
2165(
2166 wpt_boolean closeTransport
2167)
2168{
2169 WDI_EventInfoType wdiEventData;
2170 wpt_status wptStatus;
2171 int i = 0;
2172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2173
2174 /*------------------------------------------------------------------------
2175 Sanity Check
2176 ------------------------------------------------------------------------*/
2177 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2178 {
2179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2180 "WDI API call before module is initialized - Fail request");
2181
2182 return WDI_STATUS_E_NOT_ALLOWED;
2183 }
2184
2185 /*------------------------------------------------------------------------
2186 Fill in Event data and post to the Main FSM
2187 ------------------------------------------------------------------------*/
2188 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2189 wdiEventData.pEventData = NULL;
2190 wdiEventData.uEventDataSize = 0;
2191
2192 /* Shutdown will not be queued, if the state is busy timer will be
2193 * stopped & this message will be processed.*/
2194 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2195 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2196 {
2197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002198 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002199 }
2200 /* Destroy the Set Power State event */
2201 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2202 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2203 {
2204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2205 "WDI Close failed to destroy an event");
2206
2207 WDI_ASSERT(0);
2208 }
2209 /*------------------------------------------------------------------------
2210 Closes the Data Path Utility Module
2211 ------------------------------------------------------------------------*/
2212 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2213 {
2214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2215 "WDI Init failed to close the DP Util Module");
2216
2217 WDI_ASSERT(0);
2218 }
2219 if ( closeTransport )
2220 {
2221 /* Close control transport, called from module unload */
2222 WCTS_CloseTransport(gWDICb.wctsHandle);
2223 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002224 else
2225 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002226 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002227 the pending messages in the transport queue */
2228 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2229 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002230 /*destroy the BSS sessions pending Queue */
2231 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2232 {
2233 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2234 }
2235
2236 /* destroy the WDI Pending Assoc Id Request Queue*/
2237 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2238 /* destroy the WDI Pending Request Queue*/
2239 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2240 /*destroy the response timer */
2241 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002242 /*destroy the SSR timer */
2243 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002244
2245 /*invalidate the main synchro mutex */
2246 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2247 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2248 {
2249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002250 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002251 WDI_ASSERT(0);
2252 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002253 /* Free the global variables */
2254 wpalMemoryFree(gpHostWlanFeatCaps);
2255 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002256 gpHostWlanFeatCaps = NULL;
2257 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002258 /*Clear control block. note that this will clear the "magic"
2259 which will inhibit all asynchronous callbacks*/
2260 WDI_CleanCB(&gWDICb);
2261 return wptStatus;
2262
2263}/*WDI_Shutdown*/
2264
2265
Jeff Johnsone7245742012-09-05 17:12:55 -07002266/*========================================================================
2267
Jeff Johnson295189b2012-06-20 16:38:30 -07002268 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002269
Jeff Johnson295189b2012-06-20 16:38:30 -07002270==========================================================================*/
2271
2272/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002273 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002274 the WLAN Device to get ready for a scan procedure. Upon
2275 the call of this API the WLAN DAL will pack and send a
2276 HAL Init Scan request message to the lower RIVA
2277 sub-system if DAL is in state STARTED.
2278
2279 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002280 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002281
2282 WDI_Start must have been called.
2283
2284 @param wdiInitScanParams: the init scan parameters as specified
2285 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002286
Jeff Johnson295189b2012-06-20 16:38:30 -07002287 wdiInitScanRspCb: callback for passing back the response
2288 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002289
Jeff Johnson295189b2012-06-20 16:38:30 -07002290 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002291 callback
2292
Jeff Johnson295189b2012-06-20 16:38:30 -07002293 @see WDI_Start
2294 @return Result of the function call
2295*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002296WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002297WDI_InitScanReq
2298(
2299 WDI_InitScanReqParamsType* pwdiInitScanParams,
2300 WDI_InitScanRspCb wdiInitScanRspCb,
2301 void* pUserData
2302)
2303{
2304 WDI_EventInfoType wdiEventData;
2305 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2306
2307 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002308 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002309 ------------------------------------------------------------------------*/
2310 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2311 {
2312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2313 "WDI API call before module is initialized - Fail request");
2314
Jeff Johnsone7245742012-09-05 17:12:55 -07002315 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002316 }
2317
2318 /*------------------------------------------------------------------------
2319 Fill in Event data and post to the Main FSM
2320 ------------------------------------------------------------------------*/
2321 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002322 wdiEventData.pEventData = pwdiInitScanParams;
2323 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2324 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002325 wdiEventData.pUserData = pUserData;
2326
2327 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2328
2329}/*WDI_InitScanReq*/
2330
2331/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002332 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002333 wishes to change the Scan channel on the WLAN Device.
2334 Upon the call of this API the WLAN DAL will pack and
2335 send a HAL Start Scan request message to the lower RIVA
2336 sub-system if DAL is in state STARTED.
2337
2338 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002339 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002340
2341 WDI_InitScanReq must have been called.
2342
Jeff Johnsone7245742012-09-05 17:12:55 -07002343 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002344 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002345
Jeff Johnson295189b2012-06-20 16:38:30 -07002346 wdiStartScanRspCb: callback for passing back the
2347 response of the start scan operation received from the
2348 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002349
Jeff Johnson295189b2012-06-20 16:38:30 -07002350 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002351 callback
2352
Jeff Johnson295189b2012-06-20 16:38:30 -07002353 @see WDI_InitScanReq
2354 @return Result of the function call
2355*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002356WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002357WDI_StartScanReq
2358(
2359 WDI_StartScanReqParamsType* pwdiStartScanParams,
2360 WDI_StartScanRspCb wdiStartScanRspCb,
2361 void* pUserData
2362)
2363{
2364 WDI_EventInfoType wdiEventData;
2365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2366
2367 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002368 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002369 ------------------------------------------------------------------------*/
2370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2371 {
2372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2373 "WDI API call before module is initialized - Fail request");
2374
Jeff Johnsone7245742012-09-05 17:12:55 -07002375 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002376 }
2377
2378 /*------------------------------------------------------------------------
2379 Fill in Event data and post to the Main FSM
2380 ------------------------------------------------------------------------*/
2381 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002382 wdiEventData.pEventData = pwdiStartScanParams;
2383 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2384 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002385 wdiEventData.pUserData = pUserData;
2386
2387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2388
2389}/*WDI_StartScanReq*/
2390
2391
2392/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002393 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002394 wants to end scanning for a particular channel that it
2395 had set before by calling Scan Start on the WLAN Device.
2396 Upon the call of this API the WLAN DAL will pack and
2397 send a HAL End Scan request message to the lower RIVA
2398 sub-system if DAL is in state STARTED.
2399
2400 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002401 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002402
2403 WDI_StartScanReq must have been called.
2404
Jeff Johnsone7245742012-09-05 17:12:55 -07002405 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002406 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002407
Jeff Johnson295189b2012-06-20 16:38:30 -07002408 wdiEndScanRspCb: callback for passing back the response
2409 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002410
Jeff Johnson295189b2012-06-20 16:38:30 -07002411 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002412 callback
2413
Jeff Johnson295189b2012-06-20 16:38:30 -07002414 @see WDI_StartScanReq
2415 @return Result of the function call
2416*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002417WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002418WDI_EndScanReq
2419(
2420 WDI_EndScanReqParamsType* pwdiEndScanParams,
2421 WDI_EndScanRspCb wdiEndScanRspCb,
2422 void* pUserData
2423)
2424{
2425 WDI_EventInfoType wdiEventData;
2426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2427
2428 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002429 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 ------------------------------------------------------------------------*/
2431 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2432 {
2433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2434 "WDI API call before module is initialized - Fail request");
2435
Jeff Johnsone7245742012-09-05 17:12:55 -07002436 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002437 }
2438
2439 /*------------------------------------------------------------------------
2440 Fill in Event data and post to the Main FSM
2441 ------------------------------------------------------------------------*/
2442 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002443 wdiEventData.pEventData = pwdiEndScanParams;
2444 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2445 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002446 wdiEventData.pUserData = pUserData;
2447
2448 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2449
2450}/*WDI_EndScanReq*/
2451
2452
2453/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002454 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002455 completed the scan process on the WLAN Device. Upon the
2456 call of this API the WLAN DAL will pack and send a HAL
2457 Finish Scan Request request message to the lower RIVA
2458 sub-system if DAL is in state STARTED.
2459
2460 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002461 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002462
2463 WDI_InitScanReq must have been called.
2464
Jeff Johnsone7245742012-09-05 17:12:55 -07002465 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002466 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002467
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 wdiFinishScanRspCb: callback for passing back the
2469 response of the finish scan operation received from the
2470 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002471
Jeff Johnson295189b2012-06-20 16:38:30 -07002472 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002473 callback
2474
Jeff Johnson295189b2012-06-20 16:38:30 -07002475 @see WDI_InitScanReq
2476 @return Result of the function call
2477*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002478WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002479WDI_FinishScanReq
2480(
2481 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2482 WDI_FinishScanRspCb wdiFinishScanRspCb,
2483 void* pUserData
2484)
2485{
2486 WDI_EventInfoType wdiEventData;
2487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2488
2489 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002490 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002491 ------------------------------------------------------------------------*/
2492 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2493 {
2494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2495 "WDI API call before module is initialized - Fail request");
2496
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002498 }
2499
2500 /*------------------------------------------------------------------------
2501 Fill in Event data and post to the Main FSM
2502 ------------------------------------------------------------------------*/
2503 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002504 wdiEventData.pEventData = pwdiFinishScanParams;
2505 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2506 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002507 wdiEventData.pUserData = pUserData;
2508
2509 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2510
2511}/*WDI_FinishScanReq*/
2512
Jeff Johnsone7245742012-09-05 17:12:55 -07002513/*========================================================================
2514
Jeff Johnson295189b2012-06-20 16:38:30 -07002515 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002516
Jeff Johnson295189b2012-06-20 16:38:30 -07002517==========================================================================*/
2518
2519/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002520 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002521 to start an association procedure to a BSS. Upon the
2522 call of this API the WLAN DAL will pack and send a HAL
2523 Join request message to the lower RIVA sub-system if
2524 DAL is in state STARTED.
2525
2526 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002527 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002528
2529 WDI_Start must have been called.
2530
Jeff Johnsone7245742012-09-05 17:12:55 -07002531 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002532 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002533
Jeff Johnson295189b2012-06-20 16:38:30 -07002534 wdiJoinRspCb: callback for passing back the response of
2535 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002536
Jeff Johnson295189b2012-06-20 16:38:30 -07002537 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002538 callback
2539
Jeff Johnson295189b2012-06-20 16:38:30 -07002540 @see WDI_Start
2541 @return Result of the function call
2542*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002543WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002544WDI_JoinReq
2545(
2546 WDI_JoinReqParamsType* pwdiJoinParams,
2547 WDI_JoinRspCb wdiJoinRspCb,
2548 void* pUserData
2549)
2550{
2551 WDI_EventInfoType wdiEventData;
2552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2553
2554 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002555 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002556 ------------------------------------------------------------------------*/
2557 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2558 {
2559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2560 "WDI API call before module is initialized - Fail request");
2561
Jeff Johnsone7245742012-09-05 17:12:55 -07002562 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002563 }
2564
2565 /*------------------------------------------------------------------------
2566 Fill in Event data and post to the Main FSM
2567 ------------------------------------------------------------------------*/
2568 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002569 wdiEventData.pEventData = pwdiJoinParams;
2570 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2571 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002572 wdiEventData.pUserData = pUserData;
2573
2574 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2575
2576}/*WDI_JoinReq*/
2577
2578/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002579 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002580 wishes to configure the newly acquired or in process of
2581 being acquired BSS to the HW . Upon the call of this API
2582 the WLAN DAL will pack and send a HAL Config BSS request
2583 message to the lower RIVA sub-system if DAL is in state
2584 STARTED.
2585
2586 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002587 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002588
2589 WDI_JoinReq must have been called.
2590
Jeff Johnsone7245742012-09-05 17:12:55 -07002591 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002592 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002593
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 wdiConfigBSSRspCb: callback for passing back the
2595 response of the config BSS operation received from the
2596 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002597
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002599 callback
2600
Jeff Johnson295189b2012-06-20 16:38:30 -07002601 @see WDI_JoinReq
2602 @return Result of the function call
2603*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002604WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002605WDI_ConfigBSSReq
2606(
2607 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2608 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2609 void* pUserData
2610)
2611{
2612 WDI_EventInfoType wdiEventData;
2613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2614
2615 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002616 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002617 ------------------------------------------------------------------------*/
2618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2619 {
2620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2621 "WDI API call before module is initialized - Fail request");
2622
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002624 }
2625
2626 /*------------------------------------------------------------------------
2627 Fill in Event data and post to the Main FSM
2628 ------------------------------------------------------------------------*/
2629 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002630 wdiEventData.pEventData = pwdiConfigBSSParams;
2631 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2632 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002633 wdiEventData.pUserData = pUserData;
2634
2635 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2636
2637}/*WDI_ConfigBSSReq*/
2638
2639/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002640 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002641 disassociating from the BSS and wishes to notify HW.
2642 Upon the call of this API the WLAN DAL will pack and
2643 send a HAL Del BSS request message to the lower RIVA
2644 sub-system if DAL is in state STARTED.
2645
2646 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002647 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002648
2649 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2650
Jeff Johnsone7245742012-09-05 17:12:55 -07002651 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002652 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002653
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 wdiDelBSSRspCb: callback for passing back the response
2655 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002656
Jeff Johnson295189b2012-06-20 16:38:30 -07002657 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002658 callback
2659
2660 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002661 @return Result of the function call
2662*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002663WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002664WDI_DelBSSReq
2665(
2666 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2667 WDI_DelBSSRspCb wdiDelBSSRspCb,
2668 void* pUserData
2669)
2670{
2671 WDI_EventInfoType wdiEventData;
2672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2673
2674 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002675 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002676 ------------------------------------------------------------------------*/
2677 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2678 {
2679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2680 "WDI API call before module is initialized - Fail request");
2681
Jeff Johnsone7245742012-09-05 17:12:55 -07002682 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002683 }
2684
2685 /*------------------------------------------------------------------------
2686 Fill in Event data and post to the Main FSM
2687 ------------------------------------------------------------------------*/
2688 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002689 wdiEventData.pEventData = pwdiDelBSSParams;
2690 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2691 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002692 wdiEventData.pUserData = pUserData;
2693
2694 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2695
2696}/*WDI_DelBSSReq*/
2697
2698/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002699 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002700 associated to a BSS and wishes to configure HW for
2701 associated state. Upon the call of this API the WLAN DAL
2702 will pack and send a HAL Post Assoc request message to
2703 the lower RIVA sub-system if DAL is in state STARTED.
2704
2705 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002706 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002707
2708 WDI_JoinReq must have been called.
2709
2710 @param wdiPostAssocReqParams: the assoc parameters as specified
2711 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002712
Jeff Johnson295189b2012-06-20 16:38:30 -07002713 wdiPostAssocRspCb: callback for passing back the
2714 response of the post assoc operation received from the
2715 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002716
Jeff Johnson295189b2012-06-20 16:38:30 -07002717 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002718 callback
2719
Jeff Johnson295189b2012-06-20 16:38:30 -07002720 @see WDI_JoinReq
2721 @return Result of the function call
2722*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002723WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002724WDI_PostAssocReq
2725(
2726 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2727 WDI_PostAssocRspCb wdiPostAssocRspCb,
2728 void* pUserData
2729)
2730{
2731 WDI_EventInfoType wdiEventData;
2732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2733
2734 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002735 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002736 ------------------------------------------------------------------------*/
2737 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2738 {
2739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2740 "WDI API call before module is initialized - Fail request");
2741
Jeff Johnsone7245742012-09-05 17:12:55 -07002742 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002743 }
2744
2745 /*------------------------------------------------------------------------
2746 Fill in Event data and post to the Main FSM
2747 ------------------------------------------------------------------------*/
2748 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002749 wdiEventData.pEventData = pwdiPostAssocReqParams;
2750 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2751 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002752 wdiEventData.pUserData = pUserData;
2753
2754 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2755
2756}/*WDI_PostAssocReq*/
2757
2758/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002759 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002760 association with another STA has ended and the station
2761 must be deleted from HW. Upon the call of this API the
2762 WLAN DAL will pack and send a HAL Del STA request
2763 message to the lower RIVA sub-system if DAL is in state
2764 STARTED.
2765
2766 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002767 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002768
2769 WDI_PostAssocReq must have been called.
2770
Jeff Johnsone7245742012-09-05 17:12:55 -07002771 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002772 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002773
Jeff Johnson295189b2012-06-20 16:38:30 -07002774 wdiDelSTARspCb: callback for passing back the response
2775 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002776
Jeff Johnson295189b2012-06-20 16:38:30 -07002777 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002778 callback
2779
Jeff Johnson295189b2012-06-20 16:38:30 -07002780 @see WDI_PostAssocReq
2781 @return Result of the function call
2782*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002783WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002784WDI_DelSTAReq
2785(
2786 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2787 WDI_DelSTARspCb wdiDelSTARspCb,
2788 void* pUserData
2789)
2790{
2791 WDI_EventInfoType wdiEventData;
2792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2793
2794 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002795 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002796 ------------------------------------------------------------------------*/
2797 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2798 {
2799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2800 "WDI API call before module is initialized - Fail request");
2801
Jeff Johnsone7245742012-09-05 17:12:55 -07002802 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002803 }
2804
2805 /*------------------------------------------------------------------------
2806 Fill in Event data and post to the Main FSM
2807 ------------------------------------------------------------------------*/
2808 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002809 wdiEventData.pEventData = pwdiDelSTAParams;
2810 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2811 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002812 wdiEventData.pUserData = pUserData;
2813
2814 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2815
2816}/*WDI_DelSTAReq*/
2817
Jeff Johnsone7245742012-09-05 17:12:55 -07002818/*========================================================================
2819
Jeff Johnson295189b2012-06-20 16:38:30 -07002820 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002821
Jeff Johnson295189b2012-06-20 16:38:30 -07002822==========================================================================*/
2823
2824/**
2825 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2826 install a BSS encryption key on the HW. Upon the call of this
2827 API the WLAN DAL will pack and send a Set BSS Key request
2828 message to the lower RIVA sub-system if DAL is in state
2829 STARTED.
2830
2831 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002832 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002833
2834 WDI_PostAssocReq must have been called.
2835
Jeff Johnsone7245742012-09-05 17:12:55 -07002836 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002837 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002838
Jeff Johnson295189b2012-06-20 16:38:30 -07002839 wdiSetBSSKeyRspCb: callback for passing back the
2840 response of the set BSS Key operation received from the
2841 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002842
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002844 callback
2845
Jeff Johnson295189b2012-06-20 16:38:30 -07002846 @see WDI_PostAssocReq
2847 @return Result of the function call
2848*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002849WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002850WDI_SetBSSKeyReq
2851(
2852 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2853 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2854 void* pUserData
2855)
2856{
2857 WDI_EventInfoType wdiEventData;
2858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2859
2860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002861 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002862 ------------------------------------------------------------------------*/
2863 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2864 {
2865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2866 "WDI API call before module is initialized - Fail request");
2867
Jeff Johnsone7245742012-09-05 17:12:55 -07002868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002869 }
2870
2871 /*------------------------------------------------------------------------
2872 Fill in Event data and post to the Main FSM
2873 ------------------------------------------------------------------------*/
2874 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002875 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2876 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2877 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002878 wdiEventData.pUserData = pUserData;
2879
2880 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2881
2882}/*WDI_SetBSSKeyReq*/
2883
2884/**
2885 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2886 uninstall a BSS key from HW. Upon the call of this API the
2887 WLAN DAL will pack and send a HAL Remove BSS Key request
2888 message to the lower RIVA sub-system if DAL is in state
2889 STARTED.
2890
2891 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002892 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002893
2894 WDI_SetBSSKeyReq must have been called.
2895
Jeff Johnsone7245742012-09-05 17:12:55 -07002896 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002898
Jeff Johnson295189b2012-06-20 16:38:30 -07002899 wdiRemoveBSSKeyRspCb: callback for passing back the
2900 response of the remove BSS key operation received from
2901 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002902
Jeff Johnson295189b2012-06-20 16:38:30 -07002903 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002904 callback
2905
Jeff Johnson295189b2012-06-20 16:38:30 -07002906 @see WDI_SetBSSKeyReq
2907 @return Result of the function call
2908*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002909WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002910WDI_RemoveBSSKeyReq
2911(
2912 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2913 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2914 void* pUserData
2915)
2916{
2917 WDI_EventInfoType wdiEventData;
2918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2919
2920 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002921 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002922 ------------------------------------------------------------------------*/
2923 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2924 {
2925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2926 "WDI API call before module is initialized - Fail request");
2927
Jeff Johnsone7245742012-09-05 17:12:55 -07002928 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002929 }
2930
2931 /*------------------------------------------------------------------------
2932 Fill in Event data and post to the Main FSM
2933 ------------------------------------------------------------------------*/
2934 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002935 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2936 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2937 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002938 wdiEventData.pUserData = pUserData;
2939
2940 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2941
2942}/*WDI_RemoveBSSKeyReq*/
2943
2944
2945/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002946 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002947 ready to install a STA(ast) encryption key in HW. Upon
2948 the call of this API the WLAN DAL will pack and send a
2949 HAL Set STA Key request message to the lower RIVA
2950 sub-system if DAL is in state STARTED.
2951
2952 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002953 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002954
2955 WDI_PostAssocReq must have been called.
2956
Jeff Johnsone7245742012-09-05 17:12:55 -07002957 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002958 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002959
Jeff Johnson295189b2012-06-20 16:38:30 -07002960 wdiSetSTAKeyRspCb: callback for passing back the
2961 response of the set STA key operation received from the
2962 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002963
Jeff Johnson295189b2012-06-20 16:38:30 -07002964 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002965 callback
2966
Jeff Johnson295189b2012-06-20 16:38:30 -07002967 @see WDI_PostAssocReq
2968 @return Result of the function call
2969*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002970WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002971WDI_SetSTAKeyReq
2972(
2973 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2974 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2975 void* pUserData
2976)
2977{
2978 WDI_EventInfoType wdiEventData;
2979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2980
2981 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002982 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002983 ------------------------------------------------------------------------*/
2984 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2985 {
2986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2987 "WDI API call before module is initialized - Fail request");
2988
Jeff Johnsone7245742012-09-05 17:12:55 -07002989 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002990 }
2991
2992 /*------------------------------------------------------------------------
2993 Fill in Event data and post to the Main FSM
2994 ------------------------------------------------------------------------*/
2995 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002996 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2997 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2998 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002999 wdiEventData.pUserData = pUserData;
3000
3001 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3002
3003}/*WDI_SetSTAKeyReq*/
3004
3005
3006/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003007 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003008 wants to uninstall a previously set STA key in HW. Upon
3009 the call of this API the WLAN DAL will pack and send a
3010 HAL Remove STA Key request message to the lower RIVA
3011 sub-system if DAL is in state STARTED.
3012
3013 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003014 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003015
3016 WDI_SetSTAKeyReq must have been called.
3017
Jeff Johnsone7245742012-09-05 17:12:55 -07003018 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003019 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003020
Jeff Johnson295189b2012-06-20 16:38:30 -07003021 wdiRemoveSTAKeyRspCb: callback for passing back the
3022 response of the remove STA key operation received from
3023 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003024
Jeff Johnson295189b2012-06-20 16:38:30 -07003025 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003026 callback
3027
Jeff Johnson295189b2012-06-20 16:38:30 -07003028 @see WDI_SetSTAKeyReq
3029 @return Result of the function call
3030*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003031WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003032WDI_RemoveSTAKeyReq
3033(
3034 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3035 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3036 void* pUserData
3037)
3038{
3039 WDI_EventInfoType wdiEventData;
3040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3041
3042 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003043 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003044 ------------------------------------------------------------------------*/
3045 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3046 {
3047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3048 "WDI API call before module is initialized - Fail request");
3049
Jeff Johnsone7245742012-09-05 17:12:55 -07003050 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003051 }
3052
3053 /*------------------------------------------------------------------------
3054 Fill in Event data and post to the Main FSM
3055 ------------------------------------------------------------------------*/
3056 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003057 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3058 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3059 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003060 wdiEventData.pUserData = pUserData;
3061
3062 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3063
3064}/*WDI_RemoveSTAKeyReq*/
3065
3066
3067/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003068 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003069 wants to install a STA Bcast encryption key on the HW.
3070 Upon the call of this API the WLAN DAL will pack and
3071 send a HAL Start request message to the lower RIVA
3072 sub-system if DAL is in state STARTED.
3073
3074 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003075 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003076
3077 WDI_PostAssocReq must have been called.
3078
Jeff Johnsone7245742012-09-05 17:12:55 -07003079 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003080 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003081
Jeff Johnson295189b2012-06-20 16:38:30 -07003082 wdiSetSTABcastKeyRspCb: callback for passing back the
3083 response of the set BSS Key operation received from the
3084 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003085
Jeff Johnson295189b2012-06-20 16:38:30 -07003086 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003087 callback
3088
Jeff Johnson295189b2012-06-20 16:38:30 -07003089 @see WDI_PostAssocReq
3090 @return Result of the function call
3091*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003092WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003093WDI_SetSTABcastKeyReq
3094(
3095 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3096 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3097 void* pUserData
3098)
3099
3100{
3101 WDI_EventInfoType wdiEventData;
3102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3103
3104 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003105 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003106 ------------------------------------------------------------------------*/
3107 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3108 {
3109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3110 "WDI API call before module is initialized - Fail request");
3111
Jeff Johnsone7245742012-09-05 17:12:55 -07003112 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003113 }
3114
3115 /*------------------------------------------------------------------------
3116 Fill in Event data and post to the Main FSM
3117 ------------------------------------------------------------------------*/
3118 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003119 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3120 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3121 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003122 wdiEventData.pUserData = pUserData;
3123
3124 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3125
3126}/*WDI_SetSTABcastKeyReq*/
3127
3128/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003129 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003130 MAC wants to uninstall a STA Bcast key from HW. Upon the
3131 call of this API the WLAN DAL will pack and send a HAL
3132 Remove STA Bcast Key request message to the lower RIVA
3133 sub-system if DAL is in state STARTED.
3134
3135 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003136 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003137
3138 WDI_SetSTABcastKeyReq must have been called.
3139
Jeff Johnsone7245742012-09-05 17:12:55 -07003140 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003141 parameters as specified by the Device
3142 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003143
Jeff Johnson295189b2012-06-20 16:38:30 -07003144 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3145 response of the remove STA Bcast key operation received
3146 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003147
Jeff Johnson295189b2012-06-20 16:38:30 -07003148 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003149 callback
3150
Jeff Johnson295189b2012-06-20 16:38:30 -07003151 @see WDI_SetSTABcastKeyReq
3152 @return Result of the function call
3153*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003154WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003155WDI_RemoveSTABcastKeyReq
3156(
3157 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3158 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3159 void* pUserData
3160)
3161{
3162 WDI_EventInfoType wdiEventData;
3163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3164
3165 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003166 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003167 ------------------------------------------------------------------------*/
3168 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3169 {
3170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3171 "WDI API call before module is initialized - Fail request");
3172
Jeff Johnsone7245742012-09-05 17:12:55 -07003173 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003174 }
3175
3176 /*------------------------------------------------------------------------
3177 Fill in Event data and post to the Main FSM
3178 ------------------------------------------------------------------------*/
3179 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003180 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3181 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3182 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003183 wdiEventData.pUserData = pUserData;
3184
3185 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3186
3187}/*WDI_RemoveSTABcastKeyReq*/
3188
3189/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003190 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003191 MAC wants to set Max Tx Power to HW. Upon the
3192 call of this API the WLAN DAL will pack and send a HAL
3193 Remove STA Bcast Key request message to the lower RIVA
3194 sub-system if DAL is in state STARTED.
3195
3196 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003197 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003198
3199 WDI_SetSTABcastKeyReq must have been called.
3200
Jeff Johnsone7245742012-09-05 17:12:55 -07003201 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 parameters as specified by the Device
3203 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003204
Jeff Johnson295189b2012-06-20 16:38:30 -07003205 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3206 response of the remove STA Bcast key operation received
3207 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003208
Jeff Johnson295189b2012-06-20 16:38:30 -07003209 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003210 callback
3211
Jeff Johnson295189b2012-06-20 16:38:30 -07003212 @see WDI_SetMaxTxPowerReq
3213 @return Result of the function call
3214*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003215WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003216WDI_SetMaxTxPowerReq
3217(
3218 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3219 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3220 void* pUserData
3221)
3222{
3223 WDI_EventInfoType wdiEventData;
3224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3225
3226 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003227 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003228 ------------------------------------------------------------------------*/
3229 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3230 {
3231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3232 "WDI API call before module is initialized - Fail request");
3233
Jeff Johnsone7245742012-09-05 17:12:55 -07003234 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003235 }
3236
3237 /*------------------------------------------------------------------------
3238 Fill in Event data and post to the Main FSM
3239 ------------------------------------------------------------------------*/
3240 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003241 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3242 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3243 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003244 wdiEventData.pUserData = pUserData;
3245
3246 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3247}
3248
schang86c22c42013-03-13 18:41:24 -07003249/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003250 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3251 MAC wants to set Max Tx Power to HW for specific band.
3252
3253 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3254
3255 wdiReqStatusCb: callback for passing back the
3256 response msg from the device
3257
3258 pUserData: user data will be passed back with the
3259 callback
3260
3261 @see WDI_SetMaxTxPowerPerBandReq
3262 @return Result of the function call
3263*/
3264WDI_Status
3265WDI_SetMaxTxPowerPerBandReq
3266(
3267 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3268 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3269 void* pUserData
3270)
3271{
3272 WDI_EventInfoType wdiEventData;
3273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3274
3275 /*------------------------------------------------------------------------
3276 Sanity Check
3277 ------------------------------------------------------------------------*/
3278 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3279 {
3280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3281 "WDI API call before module is initialized - Fail request");
3282
3283 return WDI_STATUS_E_NOT_ALLOWED;
3284 }
3285
3286 /*------------------------------------------------------------------------
3287 Fill in Event data and post to the Main FSM
3288 ------------------------------------------------------------------------*/
3289 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3290 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3291 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3292 wdiEventData.pCBfnc = wdiReqStatusCb;
3293 wdiEventData.pUserData = pUserData;
3294
3295 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3296}
3297
3298/**
schang86c22c42013-03-13 18:41:24 -07003299 @brief WDI_SetTxPowerReq will be called when the upper
3300 MAC wants to set Tx Power to HW.
3301 In state BUSY this request will be queued. Request won't
3302 be allowed in any other state.
3303
3304
3305 @param pwdiSetTxPowerParams: set TS Power parameters
3306 BSSID and target TX Power with dbm included
3307
3308 wdiReqStatusCb: callback for passing back the response
3309
3310 pUserData: user data will be passed back with the
3311 callback
3312
3313 @return Result of the function call
3314*/
3315WDI_Status
3316WDI_SetTxPowerReq
3317(
3318 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3319 WDA_SetTxPowerRspCb wdiReqStatusCb,
3320 void* pUserData
3321)
3322{
3323 WDI_EventInfoType wdiEventData;
3324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3325
3326 /*------------------------------------------------------------------------
3327 Sanity Check
3328 ------------------------------------------------------------------------*/
3329 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3330 {
3331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3332 "WDI API call before module is initialized - Fail request");
3333
3334 return WDI_STATUS_E_NOT_ALLOWED;
3335 }
3336
3337 /*------------------------------------------------------------------------
3338 Fill in Event data and post to the Main FSM
3339 ------------------------------------------------------------------------*/
3340 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3341 wdiEventData.pEventData = pwdiSetTxPowerParams;
3342 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3343 wdiEventData.pCBfnc = wdiReqStatusCb;
3344 wdiEventData.pUserData = pUserData;
3345
3346 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3347}
3348
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003349#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003350WDI_Status
3351WDI_TSMStatsReq
3352(
3353 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3354 WDI_TsmRspCb wdiReqStatusCb,
3355 void* pUserData
3356)
3357{
3358 WDI_EventInfoType wdiEventData;
3359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003360 /*------------------------------------------------------------------------
3361 Sanity Check
3362 ------------------------------------------------------------------------*/
3363 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3364 {
3365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3366 "WDI API call before module is initialized - Fail request");
3367
3368 return WDI_STATUS_E_NOT_ALLOWED;
3369 }
3370
3371 /*------------------------------------------------------------------------
3372 Fill in Event data and post to the Main FSM
3373 ------------------------------------------------------------------------*/
3374 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3375 wdiEventData.pEventData = pwdiTsmReqParams;
3376 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3377 wdiEventData.pCBfnc = wdiReqStatusCb;
3378 wdiEventData.pUserData = pUserData;
3379
3380 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3381
3382}
3383#endif
3384
3385/*========================================================================
3386
3387 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003388
Jeff Johnson295189b2012-06-20 16:38:30 -07003389==========================================================================*/
3390
3391/**
3392 @brief WDI_AddTSReq will be called when the upper MAC to inform
3393 the device of a successful add TSpec negotiation. HW
3394 needs to receive the TSpec Info from the UMAC in order
3395 to configure properly the QoS data traffic. Upon the
3396 call of this API the WLAN DAL will pack and send a HAL
3397 Add TS request message to the lower RIVA sub-system if
3398 DAL is in state STARTED.
3399
3400 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003401 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003402
3403 WDI_PostAssocReq must have been called.
3404
3405 @param wdiAddTsReqParams: the add TS parameters as specified by
3406 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003407
Jeff Johnson295189b2012-06-20 16:38:30 -07003408 wdiAddTsRspCb: callback for passing back the response of
3409 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003410
Jeff Johnson295189b2012-06-20 16:38:30 -07003411 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003412 callback
3413
Jeff Johnson295189b2012-06-20 16:38:30 -07003414 @see WDI_PostAssocReq
3415 @return Result of the function call
3416*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003417WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003418WDI_AddTSReq
3419(
3420 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3421 WDI_AddTsRspCb wdiAddTsRspCb,
3422 void* pUserData
3423)
3424{
3425 WDI_EventInfoType wdiEventData;
3426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3427
3428 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003429 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003430 ------------------------------------------------------------------------*/
3431 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3432 {
3433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3434 "WDI API call before module is initialized - Fail request");
3435
Jeff Johnsone7245742012-09-05 17:12:55 -07003436 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003437 }
3438
3439 /*------------------------------------------------------------------------
3440 Fill in Event data and post to the Main FSM
3441 ------------------------------------------------------------------------*/
3442 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003443 wdiEventData.pEventData = pwdiAddTsReqParams;
3444 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3445 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003446 wdiEventData.pUserData = pUserData;
3447
3448 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3449
3450}/*WDI_AddTSReq*/
3451
3452
3453
3454/**
3455 @brief WDI_DelTSReq will be called when the upper MAC has ended
3456 admission on a specific AC. This is to inform HW that
3457 QoS traffic parameters must be rest. Upon the call of
3458 this API the WLAN DAL will pack and send a HAL Del TS
3459 request message to the lower RIVA sub-system if DAL is
3460 in state STARTED.
3461
3462 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003463 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003464
3465 WDI_AddTSReq must have been called.
3466
3467 @param wdiDelTsReqParams: the del TS parameters as specified by
3468 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003469
Jeff Johnson295189b2012-06-20 16:38:30 -07003470 wdiDelTsRspCb: callback for passing back the response of
3471 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003472
Jeff Johnson295189b2012-06-20 16:38:30 -07003473 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003474 callback
3475
Jeff Johnson295189b2012-06-20 16:38:30 -07003476 @see WDI_AddTSReq
3477 @return Result of the function call
3478*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003479WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003480WDI_DelTSReq
3481(
3482 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3483 WDI_DelTsRspCb wdiDelTsRspCb,
3484 void* pUserData
3485)
3486{
3487 WDI_EventInfoType wdiEventData;
3488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3489
3490 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003492 ------------------------------------------------------------------------*/
3493 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3494 {
3495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3496 "WDI API call before module is initialized - Fail request");
3497
Jeff Johnsone7245742012-09-05 17:12:55 -07003498 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003499 }
3500
3501 /*------------------------------------------------------------------------
3502 Fill in Event data and post to the Main FSM
3503 ------------------------------------------------------------------------*/
3504 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003505 wdiEventData.pEventData = pwdiDelTsReqParams;
3506 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3507 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003508 wdiEventData.pUserData = pUserData;
3509
3510 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3511
3512}/*WDI_DelTSReq*/
3513
3514
3515
3516/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003517 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003518 wishes to update the EDCA parameters used by HW for QoS
3519 data traffic. Upon the call of this API the WLAN DAL
3520 will pack and send a HAL Update EDCA Params request
3521 message to the lower RIVA sub-system if DAL is in state
3522 STARTED.
3523
3524 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003525 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003526
3527 WDI_PostAssocReq must have been called.
3528
Jeff Johnsone7245742012-09-05 17:12:55 -07003529 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003531
Jeff Johnson295189b2012-06-20 16:38:30 -07003532 wdiUpdateEDCAParamsRspCb: callback for passing back the
3533 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003534
Jeff Johnson295189b2012-06-20 16:38:30 -07003535 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003536 callback
3537
Jeff Johnson295189b2012-06-20 16:38:30 -07003538 @see WDI_PostAssocReq
3539 @return Result of the function call
3540*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003541WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003542WDI_UpdateEDCAParams
3543(
3544 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3545 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3546 void* pUserData
3547)
3548{
3549 WDI_EventInfoType wdiEventData;
3550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3551
3552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003553 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003554 ------------------------------------------------------------------------*/
3555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3556 {
3557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3558 "WDI API call before module is initialized - Fail request");
3559
Jeff Johnsone7245742012-09-05 17:12:55 -07003560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003561 }
3562
3563 /*------------------------------------------------------------------------
3564 Fill in Event data and post to the Main FSM
3565 ------------------------------------------------------------------------*/
3566 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003567 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3568 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3569 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003570 wdiEventData.pUserData = pUserData;
3571
3572 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3573
3574}/*WDI_UpdateEDCAParams*/
3575
3576
3577/**
3578 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3579 successfully a BA session and needs to notify the HW for
3580 the appropriate settings to take place. Upon the call of
3581 this API the WLAN DAL will pack and send a HAL Add BA
3582 request message to the lower RIVA sub-system if DAL is
3583 in state STARTED.
3584
3585 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003586 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003587
3588 WDI_PostAssocReq must have been called.
3589
3590 @param wdiAddBAReqParams: the add BA parameters as specified by
3591 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003592
Jeff Johnson295189b2012-06-20 16:38:30 -07003593 wdiAddBARspCb: callback for passing back the response of
3594 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003595
Jeff Johnson295189b2012-06-20 16:38:30 -07003596 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003597 callback
3598
Jeff Johnson295189b2012-06-20 16:38:30 -07003599 @see WDI_PostAssocReq
3600 @return Result of the function call
3601*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003602WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003603WDI_AddBASessionReq
3604(
3605 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3606 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3607 void* pUserData
3608)
3609{
3610 WDI_EventInfoType wdiEventData;
3611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3612
3613 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003614 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003615 ------------------------------------------------------------------------*/
3616 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3617 {
3618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3619 "WDI API call before module is initialized - Fail request");
3620
Jeff Johnsone7245742012-09-05 17:12:55 -07003621 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003622 }
3623
3624 /*------------------------------------------------------------------------
3625 Fill in Event data and post to the Main FSM
3626 ------------------------------------------------------------------------*/
3627 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003628 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3629 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3630 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003631 wdiEventData.pUserData = pUserData;
3632
3633 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3634
3635}/*WDI_AddBASessionReq*/
3636
3637/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003638 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003639 inform HW that it has deleted a previously created BA
3640 session. Upon the call of this API the WLAN DAL will
3641 pack and send a HAL Del BA request message to the lower
3642 RIVA sub-system if DAL is in state STARTED.
3643
3644 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003645 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003646
3647 WDI_AddBAReq must have been called.
3648
3649 @param wdiDelBAReqParams: the del BA parameters as specified by
3650 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003651
Jeff Johnson295189b2012-06-20 16:38:30 -07003652 wdiDelBARspCb: callback for passing back the response of
3653 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003654
Jeff Johnson295189b2012-06-20 16:38:30 -07003655 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003656 callback
3657
Jeff Johnson295189b2012-06-20 16:38:30 -07003658 @see WDI_AddBAReq
3659 @return Result of the function call
3660*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003661WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003662WDI_DelBAReq
3663(
3664 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3665 WDI_DelBARspCb wdiDelBARspCb,
3666 void* pUserData
3667)
3668{
3669 WDI_EventInfoType wdiEventData;
3670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3671
3672 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003673 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003674 ------------------------------------------------------------------------*/
3675 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3676 {
3677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3678 "WDI API call before module is initialized - Fail request");
3679
Jeff Johnsone7245742012-09-05 17:12:55 -07003680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003681 }
3682
3683 /*------------------------------------------------------------------------
3684 Fill in Event data and post to the Main FSM
3685 ------------------------------------------------------------------------*/
3686 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003687 wdiEventData.pEventData = pwdiDelBAReqParams;
3688 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3689 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003690 wdiEventData.pUserData = pUserData;
3691
3692 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3693
3694}/*WDI_DelBAReq*/
3695
Jeff Johnsone7245742012-09-05 17:12:55 -07003696/*========================================================================
3697
Jeff Johnson295189b2012-06-20 16:38:30 -07003698 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003699
Jeff Johnson295189b2012-06-20 16:38:30 -07003700==========================================================================*/
3701
3702/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003703 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003704 wants to set the power save related configurations of
3705 the WLAN Device. Upon the call of this API the WLAN DAL
3706 will pack and send a HAL Update CFG request message to
3707 the lower RIVA sub-system if DAL is in state STARTED.
3708
3709 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003710 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003711
3712 WDI_Start must have been called.
3713
Jeff Johnsone7245742012-09-05 17:12:55 -07003714 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003715 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003716
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 wdiSetPwrSaveCfgCb: callback for passing back the
3718 response of the set power save cfg operation received
3719 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003720
Jeff Johnson295189b2012-06-20 16:38:30 -07003721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003722 callback
3723
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003725 @return Result of the function call
3726*/
3727WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003728WDI_SetPwrSaveCfgReq
3729(
3730 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3731 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3732 void* pUserData
3733)
3734{
3735 WDI_EventInfoType wdiEventData;
3736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3737
3738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003740 ------------------------------------------------------------------------*/
3741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3742 {
3743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3744 "WDI API call before module is initialized - Fail request");
3745
Jeff Johnsone7245742012-09-05 17:12:55 -07003746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003747 }
3748
3749 /*------------------------------------------------------------------------
3750 Fill in Event data and post to the Main FSM
3751 ------------------------------------------------------------------------*/
3752 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003753 wdiEventData.pEventData = pwdiPowerSaveCfg;
3754 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3755 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003756 wdiEventData.pUserData = pUserData;
3757
3758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3759
3760}/*WDI_SetPwrSaveCfgReq*/
3761
3762/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003763 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003764 request the device to get into IMPS power state. Upon
3765 the call of this API the WLAN DAL will send a HAL Enter
3766 IMPS request message to the lower RIVA sub-system if DAL
3767 is in state STARTED.
3768
3769 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003770 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003771
Jeff Johnsone7245742012-09-05 17:12:55 -07003772
3773 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003774 response of the Enter IMPS operation received from the
3775 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003776
Jeff Johnson295189b2012-06-20 16:38:30 -07003777 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003778 callback
3779
Jeff Johnson295189b2012-06-20 16:38:30 -07003780 @see WDI_Start
3781 @return Result of the function call
3782*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003783WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003784WDI_EnterImpsReq
3785(
Mihir Shetea4306052014-03-25 00:02:54 +05303786 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003787 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3788 void* pUserData
3789)
3790{
3791 WDI_EventInfoType wdiEventData;
3792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3793
3794 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003795 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003796 ------------------------------------------------------------------------*/
3797 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3798 {
3799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3800 "WDI API call before module is initialized - Fail request");
3801
Jeff Johnsone7245742012-09-05 17:12:55 -07003802 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003803 }
3804
3805 /*------------------------------------------------------------------------
3806 Fill in Event data and post to the Main FSM
3807 ------------------------------------------------------------------------*/
3808 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303809 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3810 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003811 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003812 wdiEventData.pUserData = pUserData;
3813
3814 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3815
3816}/*WDI_EnterImpsReq*/
3817
3818/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003820 request the device to get out of IMPS power state. Upon
3821 the call of this API the WLAN DAL will send a HAL Exit
3822 IMPS request message to the lower RIVA sub-system if DAL
3823 is in state STARTED.
3824
3825 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003826 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003827
Jeff Johnson295189b2012-06-20 16:38:30 -07003828
Jeff Johnsone7245742012-09-05 17:12:55 -07003829
3830 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003831 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003832
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003834 callback
3835
Jeff Johnson295189b2012-06-20 16:38:30 -07003836 @see WDI_Start
3837 @return Result of the function call
3838*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003839WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003840WDI_ExitImpsReq
3841(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303842 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003843 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3844 void* pUserData
3845)
3846{
3847 WDI_EventInfoType wdiEventData;
3848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3849
3850 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003851 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 ------------------------------------------------------------------------*/
3853 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3854 {
3855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3856 "WDI API call before module is initialized - Fail request");
3857
Jeff Johnsone7245742012-09-05 17:12:55 -07003858 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003859 }
3860
3861 /*------------------------------------------------------------------------
3862 Fill in Event data and post to the Main FSM
3863 ------------------------------------------------------------------------*/
3864 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303865 wdiEventData.pEventData = pwdiExitImpsReqParams;
3866 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003867 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003868 wdiEventData.pUserData = pUserData;
3869
3870 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3871
3872}/*WDI_ExitImpsReq*/
3873
3874/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003876 request the device to get into BMPS power state. Upon
3877 the call of this API the WLAN DAL will pack and send a
3878 HAL Enter BMPS request message to the lower RIVA
3879 sub-system if DAL is in state STARTED.
3880
3881 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003882 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003883
3884 WDI_PostAssocReq must have been called.
3885
Jeff Johnsone7245742012-09-05 17:12:55 -07003886 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003887 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003888
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 wdiEnterBmpsRspCb: callback for passing back the
3890 response of the Enter BMPS operation received from the
3891 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003892
Jeff Johnson295189b2012-06-20 16:38:30 -07003893 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003894 callback
3895
Jeff Johnson295189b2012-06-20 16:38:30 -07003896 @see WDI_PostAssocReq
3897 @return Result of the function call
3898*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003899WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003900WDI_EnterBmpsReq
3901(
3902 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3903 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3904 void* pUserData
3905)
3906{
3907 WDI_EventInfoType wdiEventData;
3908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3909
3910 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003911 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003912 ------------------------------------------------------------------------*/
3913 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3914 {
3915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3916 "WDI API call before module is initialized - Fail request");
3917
Jeff Johnsone7245742012-09-05 17:12:55 -07003918 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003919 }
3920
3921 /*------------------------------------------------------------------------
3922 Fill in Event data and post to the Main FSM
3923 ------------------------------------------------------------------------*/
3924 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003925 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3926 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3927 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003928 wdiEventData.pUserData = pUserData;
3929
3930 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3931
3932}/*WDI_EnterBmpsReq*/
3933
3934/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003935 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003936 request the device to get out of BMPS power state. Upon
3937 the call of this API the WLAN DAL will pack and send a
3938 HAL Exit BMPS request message to the lower RIVA
3939 sub-system if DAL is in state STARTED.
3940
3941 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003942 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003943
3944 WDI_PostAssocReq must have been called.
3945
Jeff Johnsone7245742012-09-05 17:12:55 -07003946 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003947 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003948
Jeff Johnson295189b2012-06-20 16:38:30 -07003949 wdiExitBmpsRspCb: callback for passing back the response
3950 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003951
Jeff Johnson295189b2012-06-20 16:38:30 -07003952 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003953 callback
3954
Jeff Johnson295189b2012-06-20 16:38:30 -07003955 @see WDI_PostAssocReq
3956 @return Result of the function call
3957*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003958WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003959WDI_ExitBmpsReq
3960(
3961 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3962 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3963 void* pUserData
3964)
3965{
3966 WDI_EventInfoType wdiEventData;
3967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3968
3969 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003970 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003971 ------------------------------------------------------------------------*/
3972 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3973 {
3974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3975 "WDI API call before module is initialized - Fail request");
3976
Jeff Johnsone7245742012-09-05 17:12:55 -07003977 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003978 }
3979
3980 /*------------------------------------------------------------------------
3981 Fill in Event data and post to the Main FSM
3982 ------------------------------------------------------------------------*/
3983 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003984 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3985 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3986 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003987 wdiEventData.pUserData = pUserData;
3988
3989 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3990
3991}/*WDI_ExitBmpsReq*/
3992
3993/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003994 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003995 request the device to get into UAPSD power state. Upon
3996 the call of this API the WLAN DAL will pack and send a
3997 HAL Enter UAPSD request message to the lower RIVA
3998 sub-system if DAL is in state STARTED.
3999
4000 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004001 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004002
4003 WDI_PostAssocReq must have been called.
4004 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07004005
4006 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004007 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004008
Jeff Johnson295189b2012-06-20 16:38:30 -07004009 wdiEnterUapsdRspCb: callback for passing back the
4010 response of the Enter UAPSD operation received from the
4011 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004012
Jeff Johnson295189b2012-06-20 16:38:30 -07004013 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004014 callback
4015
Jeff Johnson295189b2012-06-20 16:38:30 -07004016 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4017 @return Result of the function call
4018*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004019WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004020WDI_EnterUapsdReq
4021(
4022 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4023 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4024 void* pUserData
4025)
4026{
4027 WDI_EventInfoType wdiEventData;
4028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4029
4030 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004031 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004032 ------------------------------------------------------------------------*/
4033 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4034 {
4035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4036 "WDI API call before module is initialized - Fail request");
4037
Jeff Johnsone7245742012-09-05 17:12:55 -07004038 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004039 }
4040
4041 /*------------------------------------------------------------------------
4042 Fill in Event data and post to the Main FSM
4043 ------------------------------------------------------------------------*/
4044 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004045 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4046 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4047 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004048 wdiEventData.pUserData = pUserData;
4049
4050 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4051
4052}/*WDI_EnterUapsdReq*/
4053
4054/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004055 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004056 request the device to get out of UAPSD power state. Upon
4057 the call of this API the WLAN DAL will send a HAL Exit
4058 UAPSD request message to the lower RIVA sub-system if
4059 DAL is in state STARTED.
4060
4061 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004062 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004063
4064 WDI_PostAssocReq must have been called.
4065
Jeff Johnsone7245742012-09-05 17:12:55 -07004066 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004067 response of the Exit UAPSD operation received from the
4068 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004069
Jeff Johnson295189b2012-06-20 16:38:30 -07004070 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004071 callback
4072
Jeff Johnson295189b2012-06-20 16:38:30 -07004073 @see WDI_PostAssocReq
4074 @return Result of the function call
4075*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004076WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004077WDI_ExitUapsdReq
4078(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004079 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004080 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4081 void* pUserData
4082)
4083{
4084 WDI_EventInfoType wdiEventData;
4085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4086
4087 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 ------------------------------------------------------------------------*/
4090 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4091 {
4092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4093 "WDI API call before module is initialized - Fail request");
4094
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 }
4097
4098 /*------------------------------------------------------------------------
4099 Fill in Event data and post to the Main FSM
4100 ------------------------------------------------------------------------*/
4101 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004102 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4103 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004104 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004105 wdiEventData.pUserData = pUserData;
4106
4107 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4108
4109}/*WDI_ExitUapsdReq*/
4110
4111/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004112 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004113 MAC wants to set the UAPSD related configurations
4114 of an associated STA (while acting as an AP) to the WLAN
4115 Device. Upon the call of this API the WLAN DAL will pack
4116 and send a HAL Update UAPSD params request message to
4117 the lower RIVA sub-system if DAL is in state STARTED.
4118
4119 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004120 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004121
4122 WDI_ConfigBSSReq must have been called.
4123
Jeff Johnsone7245742012-09-05 17:12:55 -07004124 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004125 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004126
Jeff Johnson295189b2012-06-20 16:38:30 -07004127 wdiUpdateUapsdParamsCb: callback for passing back the
4128 response of the update UAPSD params operation received
4129 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004130
Jeff Johnson295189b2012-06-20 16:38:30 -07004131 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004132 callback
4133
Jeff Johnson295189b2012-06-20 16:38:30 -07004134 @see WDI_ConfigBSSReq
4135 @return Result of the function call
4136*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004137WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004138WDI_UpdateUapsdParamsReq
4139(
4140 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4141 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4142 void* pUserData
4143)
4144{
4145 WDI_EventInfoType wdiEventData;
4146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4147
4148 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004149 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004150 ------------------------------------------------------------------------*/
4151 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4152 {
4153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4154 "WDI API call before module is initialized - Fail request");
4155
Jeff Johnsone7245742012-09-05 17:12:55 -07004156 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004157 }
4158
4159 /*------------------------------------------------------------------------
4160 Fill in Event data and post to the Main FSM
4161 ------------------------------------------------------------------------*/
4162 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004163 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004164 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004165 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004166 wdiEventData.pUserData = pUserData;
4167
4168 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4169
4170}/*WDI_UpdateUapsdParamsReq*/
4171
4172/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004173 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004174 MAC wants to set the UAPSD related configurations before
4175 requesting for enter UAPSD power state to the WLAN
4176 Device. Upon the call of this API the WLAN DAL will pack
4177 and send a HAL Set UAPSD params request message to
4178 the lower RIVA sub-system if DAL is in state STARTED.
4179
4180 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004181 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004182
4183 WDI_PostAssocReq must have been called.
4184
4185 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4186 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004187
Jeff Johnson295189b2012-06-20 16:38:30 -07004188 wdiSetUapsdAcParamsCb: callback for passing back the
4189 response of the set UAPSD params operation received from
4190 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004191
Jeff Johnson295189b2012-06-20 16:38:30 -07004192 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004193 callback
4194
Jeff Johnson295189b2012-06-20 16:38:30 -07004195 @see WDI_PostAssocReq
4196 @return Result of the function call
4197*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004198WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004199WDI_SetUapsdAcParamsReq
4200(
4201 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4202 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4203 void* pUserData
4204)
4205{
4206 WDI_EventInfoType wdiEventData;
4207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4208
4209 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004210 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004211 ------------------------------------------------------------------------*/
4212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4213 {
4214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4215 "WDI API call before module is initialized - Fail request");
4216
Jeff Johnsone7245742012-09-05 17:12:55 -07004217 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004218 }
4219
4220 /*------------------------------------------------------------------------
4221 Fill in Event data and post to the Main FSM
4222 ------------------------------------------------------------------------*/
4223 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004224 wdiEventData.pEventData = pwdiUapsdInfo;
4225 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4226 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004227 wdiEventData.pUserData = pUserData;
4228
4229 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4230
4231}/*WDI_SetUapsdAcParamsReq*/
4232
4233/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304234 @brief WDI_FWLoggingDXEdoneInd
4235
4236 FW Logging DXE done Indication from the upper layer will be sent
4237 down to HAL
4238
4239 @param WDI_FWLoggingDXEdoneIndInfoType
4240
4241 @see
4242
4243 @return Status of the request
4244*/
4245WDI_Status
4246WDI_FWLoggingDXEdoneInd
4247(
4248 WDI_FWLoggingDXEdoneIndInfoType* pwdiFWLoggingDXEdoneInd
4249)
4250{
4251
4252 WDI_EventInfoType wdiEventData;
4253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4254
4255 /*------------------------------------------------------------------------
4256 Sanity Check
4257 ------------------------------------------------------------------------*/
4258 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4259 {
4260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4261 "WDI API call before module is initialized - Fail request");
4262
4263 return WDI_STATUS_E_NOT_ALLOWED;
4264 }
4265
4266 /*------------------------------------------------------------------------
4267 Fill in Event data and post to the Main FSM
4268 ------------------------------------------------------------------------*/
4269 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
4270 wdiEventData.pEventData = pwdiFWLoggingDXEdoneInd;
4271 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingDXEdoneInd);
4272 wdiEventData.pCBfnc = NULL;
4273 wdiEventData.pUserData = NULL;
4274
4275 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4276
4277}/*WDI_FWLoggingDXEdoneInd*/
4278
4279/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304280 @brief WDI_GetFrameLogReq will be called when the upper
4281 MAC wants to initialize frame logging. Upon the call of
4282 this API the WLAN DAL will pack and send a HAL
4283 Frame logging init request message to
4284 the lower RIVA sub-system.
4285
4286 In state BUSY this request will be queued. Request won't
4287 be allowed in any other state.
4288
4289
4290 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4291 as specified by the Device Interface
4292
4293 wdiGetFrameLogRspCb: callback for passing back the
4294 response of the frame logging init operation received
4295 from the device
4296
4297 pUserData: user data will be passed back with the
4298 callback
4299
4300 @return Result of the function call
4301*/
4302WDI_Status
4303WDI_GetFrameLogReq
4304(
4305 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4306 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4307 void* pUserData
4308)
4309{
4310 WDI_EventInfoType wdiEventData;
4311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4312
4313 /*------------------------------------------------------------------------
4314 Sanity Check
4315 ------------------------------------------------------------------------*/
4316 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4317 {
4318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4319 "WDI API call before module is initialized - Fail request");
4320
4321 return WDI_STATUS_E_NOT_ALLOWED;
4322 }
4323
4324 /*------------------------------------------------------------------------
4325 Fill in Event data and post to the Main FSM
4326 ------------------------------------------------------------------------*/
4327 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4328 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4329 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4330 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4331 wdiEventData.pUserData = pUserData;
4332
4333 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4334}
Sachin Ahuja715aafc2015-07-21 23:35:10 +05304335
4336
4337/**
4338 @brief WDI_FatalEventLogsReq will be called when the upper
4339 MAC wants to send the flush command. Upon the call of
4340 this API the WLAN DAL will pack and send a HAL
4341 Fatal Event Req message to the lower RIVA sub-system.
4342
4343 In state BUSY this request will be queued. Request won't
4344 be allowed in any other state.
4345
4346
4347 @param pwdiFlushLogsReqInfo: the Flush Logs params
4348 as specified by the Device Interface
4349
4350 wdiFlushLogsRspCb: callback for passing back the
4351 response of the Flush Logs operation received
4352 from the device
4353
4354 pUserData: user data will be passed back with the
4355 callback
4356
4357 @return Result of the function call
4358*/
4359
4360WDI_Status
4361WDI_FatalEventLogsReq
4362(
4363 WDI_FatalEventLogsReqInfoType *pwdiFatalEventLogsReqInfo,
4364 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb,
4365 void* pUserData
4366)
4367{
4368 WDI_EventInfoType wdiEventData;
4369
4370 /*------------------------------------------------------------------------
4371 Sanity Check
4372 ------------------------------------------------------------------------*/
4373 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4374 {
4375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4376 "WDI API call before module is initialized - Fail request");
4377
4378 return WDI_STATUS_E_NOT_ALLOWED;
4379 }
4380
4381 /*------------------------------------------------------------------------
4382 Fill in Event data and post to the Main FSM
4383 ------------------------------------------------------------------------*/
4384 wdiEventData.wdiRequest = WDI_FATAL_EVENT_LOGGING_REQ;
4385 wdiEventData.pEventData = pwdiFatalEventLogsReqInfo;
4386 wdiEventData.uEventDataSize = sizeof(*pwdiFatalEventLogsReqInfo);
4387 wdiEventData.pCBfnc = wdiFatalEventLogsRspCb;
4388 wdiEventData.pUserData = pUserData;
4389
4390 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4391
4392}
4393
4394
Siddharth Bhal64246172015-02-27 01:04:37 +05304395/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304396 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304397 MAC wants to initialize frame logging. Upon the call of
4398 this API the WLAN DAL will pack and send a HAL
4399 Frame logging init request message to
4400 the lower RIVA sub-system.
4401
4402 In state BUSY this request will be queued. Request won't
4403 be allowed in any other state.
4404
4405
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304406 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304407 as specified by the Device Interface
4408
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304409 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304410 response of the frame logging init operation received
4411 from the device
4412
4413 pUserData: user data will be passed back with the
4414 callback
4415
4416 @return Result of the function call
4417*/
4418WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304419WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304420(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304421 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4422 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304423 void* pUserData
4424)
4425{
4426 WDI_EventInfoType wdiEventData;
4427
4428 /*------------------------------------------------------------------------
4429 Sanity Check
4430 ------------------------------------------------------------------------*/
4431 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4432 {
4433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4434 "WDI API call before module is initialized - Fail request");
4435
4436 return WDI_STATUS_E_NOT_ALLOWED;
4437 }
4438
4439 /*------------------------------------------------------------------------
4440 Fill in Event data and post to the Main FSM
4441 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304442 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4443 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4444 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4445 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304446 wdiEventData.pUserData = pUserData;
4447
4448 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4449}
4450
4451/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004452 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004453 MAC wants to set/reset the RXP filters for received pkts
4454 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4455 and send a HAL configure RXP filter request message to
4456 the lower RIVA sub-system.
4457
4458 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004459 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004460
Jeff Johnsone7245742012-09-05 17:12:55 -07004461
4462 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004463 filter as specified by the Device
4464 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004465
Jeff Johnson295189b2012-06-20 16:38:30 -07004466 wdiConfigureRxpFilterCb: callback for passing back the
4467 response of the configure RXP filter operation received
4468 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004469
Jeff Johnson295189b2012-06-20 16:38:30 -07004470 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004471 callback
4472
Jeff Johnson295189b2012-06-20 16:38:30 -07004473 @return Result of the function call
4474*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004475WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004476WDI_ConfigureRxpFilterReq
4477(
4478 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4479 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4480 void* pUserData
4481)
4482{
4483 WDI_EventInfoType wdiEventData;
4484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4485
4486 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004487 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004488 ------------------------------------------------------------------------*/
4489 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4490 {
4491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4492 "WDI API call before module is initialized - Fail request");
4493
Jeff Johnsone7245742012-09-05 17:12:55 -07004494 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004495 }
4496
4497 /*------------------------------------------------------------------------
4498 Fill in Event data and post to the Main FSM
4499 ------------------------------------------------------------------------*/
4500 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004501 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4502 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4503 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004504 wdiEventData.pUserData = pUserData;
4505
4506 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4507}/*WDI_ConfigureRxpFilterReq*/
4508
4509/**
4510 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4511 wants to set the beacon filters while in power save.
4512 Upon the call of this API the WLAN DAL will pack and
4513 send a Beacon filter request message to the
4514 lower RIVA sub-system.
4515
4516 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004517 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004518
Jeff Johnsone7245742012-09-05 17:12:55 -07004519
4520 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004521 filter as specified by the Device
4522 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004523
Jeff Johnson295189b2012-06-20 16:38:30 -07004524 wdiBeaconFilterCb: callback for passing back the
4525 response of the set beacon filter operation received
4526 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004527
Jeff Johnson295189b2012-06-20 16:38:30 -07004528 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004529 callback
4530
Jeff Johnson295189b2012-06-20 16:38:30 -07004531 @return Result of the function call
4532*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004533WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004534WDI_SetBeaconFilterReq
4535(
4536 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4537 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4538 void* pUserData
4539)
4540{
4541 WDI_EventInfoType wdiEventData;
4542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4543
4544 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004545 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004546 ------------------------------------------------------------------------*/
4547 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4548 {
4549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4550 "WDI API call before module is initialized - Fail request");
4551
Jeff Johnsone7245742012-09-05 17:12:55 -07004552 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004553 }
4554
4555 /*------------------------------------------------------------------------
4556 Fill in Event data and post to the Main FSM
4557 ------------------------------------------------------------------------*/
4558 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004559 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004560 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004561 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004562 wdiEventData.pUserData = pUserData;
4563
4564 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4565}/*WDI_SetBeaconFilterReq*/
4566
4567/**
4568 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4569 wants to remove the beacon filter for particular IE
4570 while in power save. Upon the call of this API the WLAN
4571 DAL will pack and send a remove Beacon filter request
4572 message to the lower RIVA sub-system.
4573
4574 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004575 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004576
Jeff Johnsone7245742012-09-05 17:12:55 -07004577
4578 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004579 filter as specified by the Device
4580 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004581
Jeff Johnson295189b2012-06-20 16:38:30 -07004582 wdiBeaconFilterCb: callback for passing back the
4583 response of the remove beacon filter operation received
4584 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004585
Jeff Johnson295189b2012-06-20 16:38:30 -07004586 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004587 callback
4588
Jeff Johnson295189b2012-06-20 16:38:30 -07004589 @return Result of the function call
4590*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004591WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004592WDI_RemBeaconFilterReq
4593(
4594 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4595 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4596 void* pUserData
4597)
4598{
4599 WDI_EventInfoType wdiEventData;
4600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4601
4602 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004603 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004604 ------------------------------------------------------------------------*/
4605 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4606 {
4607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4608 "WDI API call before module is initialized - Fail request");
4609
Jeff Johnsone7245742012-09-05 17:12:55 -07004610 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004611 }
4612
4613 /*------------------------------------------------------------------------
4614 Fill in Event data and post to the Main FSM
4615 ------------------------------------------------------------------------*/
4616 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004617 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004618 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004619 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004620 wdiEventData.pUserData = pUserData;
4621
4622 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4623}/*WDI_RemBeaconFilterReq*/
4624
4625/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004626 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004627 MAC wants to set the RSSI thresholds related
4628 configurations while in power save. Upon the call of
4629 this API the WLAN DAL will pack and send a HAL Set RSSI
4630 thresholds request message to the lower RIVA
4631 sub-system if DAL is in state STARTED.
4632
4633 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004634 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004635
4636 WDI_PostAssocReq must have been called.
4637
4638 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4639 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004640
Jeff Johnson295189b2012-06-20 16:38:30 -07004641 wdiSetUapsdAcParamsCb: callback for passing back the
4642 response of the set UAPSD params operation received from
4643 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004644
Jeff Johnson295189b2012-06-20 16:38:30 -07004645 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004646 callback
4647
Jeff Johnson295189b2012-06-20 16:38:30 -07004648 @see WDI_PostAssocReq
4649 @return Result of the function call
4650*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004651WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004652WDI_SetRSSIThresholdsReq
4653(
4654 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4655 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4656 void* pUserData
4657)
4658{
4659 WDI_EventInfoType wdiEventData;
4660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4661
4662 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004663 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004664 ------------------------------------------------------------------------*/
4665 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4666 {
4667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4668 "WDI API call before module is initialized - Fail request");
4669
Jeff Johnsone7245742012-09-05 17:12:55 -07004670 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004671 }
4672
4673 /*------------------------------------------------------------------------
4674 Fill in Event data and post to the Main FSM
4675 ------------------------------------------------------------------------*/
4676 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004677 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004678 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004679 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004680 wdiEventData.pUserData = pUserData;
4681
4682 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4683}/* WDI_SetRSSIThresholdsReq*/
4684
4685/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004686 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004687 wants to set the filter to minimize unnecessary host
4688 wakeup due to broadcast traffic while in power save.
4689 Upon the call of this API the WLAN DAL will pack and
4690 send a HAL host offload request message to the
4691 lower RIVA sub-system if DAL is in state STARTED.
4692
4693 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004694 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004695
4696 WDI_PostAssocReq must have been called.
4697
Jeff Johnsone7245742012-09-05 17:12:55 -07004698 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004699 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004700
Jeff Johnson295189b2012-06-20 16:38:30 -07004701 wdiHostOffloadCb: callback for passing back the response
4702 of the host offload operation received from the
4703 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004704
Jeff Johnson295189b2012-06-20 16:38:30 -07004705 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004706 callback
4707
Jeff Johnson295189b2012-06-20 16:38:30 -07004708 @see WDI_PostAssocReq
4709 @return Result of the function call
4710*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004711WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004712WDI_HostOffloadReq
4713(
4714 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4715 WDI_HostOffloadCb wdiHostOffloadCb,
4716 void* pUserData
4717)
4718{
4719 WDI_EventInfoType wdiEventData;
4720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4721
4722 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004723 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004724 ------------------------------------------------------------------------*/
4725 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4726 {
4727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4728 "WDI API call before module is initialized - Fail request");
4729
Jeff Johnsone7245742012-09-05 17:12:55 -07004730 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004731 }
4732
4733 /*------------------------------------------------------------------------
4734 Fill in Event data and post to the Main FSM
4735 ------------------------------------------------------------------------*/
4736 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004737 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004738 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004739 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004740 wdiEventData.pUserData = pUserData;
4741
4742 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4743}/*WDI_HostOffloadReq*/
4744
4745/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004746 @brief WDI_KeepAliveReq will be called when the upper MAC
4747 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004748 and minimize unnecessary host wakeups due to while in power save.
4749 Upon the call of this API the WLAN DAL will pack and
4750 send a HAL Keep Alive request message to the
4751 lower RIVA sub-system if DAL is in state STARTED.
4752
4753 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004754 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004755
4756 WDI_PostAssocReq must have been called.
4757
Jeff Johnsone7245742012-09-05 17:12:55 -07004758 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004759 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004760
Jeff Johnson295189b2012-06-20 16:38:30 -07004761 wdiKeepAliveCb: callback for passing back the response
4762 of the Keep Alive operation received from the
4763 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004764
Jeff Johnson295189b2012-06-20 16:38:30 -07004765 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004766 callback
4767
Jeff Johnson295189b2012-06-20 16:38:30 -07004768 @see WDI_PostAssocReq
4769 @return Result of the function call
4770*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004771WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004772WDI_KeepAliveReq
4773(
4774 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4775 WDI_KeepAliveCb wdiKeepAliveCb,
4776 void* pUserData
4777)
4778{
4779 WDI_EventInfoType wdiEventData;
4780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4781
4782 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004783 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004784 ------------------------------------------------------------------------*/
4785 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4786 {
4787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4788 "WDI_KeepAliveReq: WDI API call before module "
4789 "is initialized - Fail request");
4790
Jeff Johnsone7245742012-09-05 17:12:55 -07004791 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004792 }
4793
4794 /*------------------------------------------------------------------------
4795 Fill in Event data and post to the Main FSM
4796 ------------------------------------------------------------------------*/
4797 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004798 wdiEventData.pEventData = pwdiKeepAliveParams;
4799 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4800 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004801 wdiEventData.pUserData = pUserData;
4802
4803 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4804}/*WDI_KeepAliveReq*/
4805
4806/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004807 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004808 wants to set the Wowl Bcast ptrn to minimize unnecessary
4809 host wakeup due to broadcast traffic while in power
4810 save. Upon the call of this API the WLAN DAL will pack
4811 and send a HAL Wowl Bcast ptrn request message to the
4812 lower RIVA sub-system if DAL is in state STARTED.
4813
4814 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004815 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004816
4817 WDI_PostAssocReq must have been called.
4818
Jeff Johnsone7245742012-09-05 17:12:55 -07004819 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004820 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004821
Jeff Johnson295189b2012-06-20 16:38:30 -07004822 wdiWowlAddBcPtrnCb: callback for passing back the
4823 response of the add Wowl bcast ptrn operation received
4824 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004825
Jeff Johnson295189b2012-06-20 16:38:30 -07004826 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004827 callback
4828
Jeff Johnson295189b2012-06-20 16:38:30 -07004829 @see WDI_PostAssocReq
4830 @return Result of the function call
4831*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004832WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004833WDI_WowlAddBcPtrnReq
4834(
4835 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4836 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4837 void* pUserData
4838)
4839{
4840 WDI_EventInfoType wdiEventData;
4841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4842
4843 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004844 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004845 ------------------------------------------------------------------------*/
4846 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4847 {
4848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4849 "WDI API call before module is initialized - Fail request");
4850
Jeff Johnsone7245742012-09-05 17:12:55 -07004851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004852 }
4853
4854 /*------------------------------------------------------------------------
4855 Fill in Event data and post to the Main FSM
4856 ------------------------------------------------------------------------*/
4857 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004858 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004859 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004860 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004861 wdiEventData.pUserData = pUserData;
4862
4863 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4864}/*WDI_WowlAddBcPtrnReq*/
4865
4866/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004867 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004868 wants to clear the Wowl Bcast ptrn. Upon the call of
4869 this API the WLAN DAL will pack and send a HAL delete
4870 Wowl Bcast ptrn request message to the lower RIVA
4871 sub-system if DAL is in state STARTED.
4872
4873 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004874 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004875
4876 WDI_WowlAddBcPtrnReq must have been called.
4877
Jeff Johnsone7245742012-09-05 17:12:55 -07004878 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004879 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004880
Jeff Johnson295189b2012-06-20 16:38:30 -07004881 wdiWowlDelBcPtrnCb: callback for passing back the
4882 response of the del Wowl bcast ptrn operation received
4883 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004884
Jeff Johnson295189b2012-06-20 16:38:30 -07004885 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004886 callback
4887
Jeff Johnson295189b2012-06-20 16:38:30 -07004888 @see WDI_WowlAddBcPtrnReq
4889 @return Result of the function call
4890*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004891WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004892WDI_WowlDelBcPtrnReq
4893(
4894 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4895 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4896 void* pUserData
4897)
4898{
4899 WDI_EventInfoType wdiEventData;
4900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4901
4902 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004903 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004904 ------------------------------------------------------------------------*/
4905 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4906 {
4907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4908 "WDI API call before module is initialized - Fail request");
4909
Jeff Johnsone7245742012-09-05 17:12:55 -07004910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004911 }
4912
4913 /*------------------------------------------------------------------------
4914 Fill in Event data and post to the Main FSM
4915 ------------------------------------------------------------------------*/
4916 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004917 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004918 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004919 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004920 wdiEventData.pUserData = pUserData;
4921
4922 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4923}/*WDI_WowlDelBcPtrnReq*/
4924
4925/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004926 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004927 wants to enter the Wowl state to minimize unnecessary
4928 host wakeup while in power save. Upon the call of this
4929 API the WLAN DAL will pack and send a HAL Wowl enter
4930 request message to the lower RIVA sub-system if DAL is
4931 in state STARTED.
4932
4933 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004934 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004935
4936 WDI_PostAssocReq must have been called.
4937
Jeff Johnsone7245742012-09-05 17:12:55 -07004938 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004939 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004940
Jeff Johnson295189b2012-06-20 16:38:30 -07004941 wdiWowlEnterReqCb: callback for passing back the
4942 response of the enter Wowl operation received from the
4943 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004944
Jeff Johnson295189b2012-06-20 16:38:30 -07004945 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004946 callback
4947
Jeff Johnson295189b2012-06-20 16:38:30 -07004948 @see WDI_PostAssocReq
4949 @return Result of the function call
4950*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004951WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004952WDI_WowlEnterReq
4953(
4954 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4955 WDI_WowlEnterReqCb wdiWowlEnterCb,
4956 void* pUserData
4957)
4958{
4959 WDI_EventInfoType wdiEventData;
4960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4961
4962 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004963 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004964 ------------------------------------------------------------------------*/
4965 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4966 {
4967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4968 "WDI API call before module is initialized - Fail request");
4969
Jeff Johnsone7245742012-09-05 17:12:55 -07004970 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004971 }
4972
4973 /*------------------------------------------------------------------------
4974 Fill in Event data and post to the Main FSM
4975 ------------------------------------------------------------------------*/
4976 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004977 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004978 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004979 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004980 wdiEventData.pUserData = pUserData;
4981
4982 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4983}/*WDI_WowlEnterReq*/
4984
4985/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004986 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004987 wants to exit the Wowl state. Upon the call of this API
4988 the WLAN DAL will pack and send a HAL Wowl exit request
4989 message to the lower RIVA sub-system if DAL is in state
4990 STARTED.
4991
4992 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004993 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004994
4995 WDI_WowlEnterReq must have been called.
4996
Jeff Johnsone7245742012-09-05 17:12:55 -07004997 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004998 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004999
Jeff Johnson295189b2012-06-20 16:38:30 -07005000 wdiWowlExitReqCb: callback for passing back the response
5001 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005002
Jeff Johnson295189b2012-06-20 16:38:30 -07005003 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005004 callback
5005
Jeff Johnson295189b2012-06-20 16:38:30 -07005006 @see WDI_WowlEnterReq
5007 @return Result of the function call
5008*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005009WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005010WDI_WowlExitReq
5011(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005012 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07005013 WDI_WowlExitReqCb wdiWowlExitCb,
5014 void* pUserData
5015)
5016{
5017 WDI_EventInfoType wdiEventData;
5018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5019
5020 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005021 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005022 ------------------------------------------------------------------------*/
5023 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5024 {
5025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5026 "WDI API call before module is initialized - Fail request");
5027
Jeff Johnsone7245742012-09-05 17:12:55 -07005028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005029 }
5030
5031 /*------------------------------------------------------------------------
5032 Fill in Event data and post to the Main FSM
5033 ------------------------------------------------------------------------*/
5034 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005035 wdiEventData.pEventData = pwdiWowlExitParams;
5036 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005037 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005038 wdiEventData.pUserData = pUserData;
5039
5040 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5041}/*WDI_WowlExitReq*/
5042
5043/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005044 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07005045 the upper MAC wants to dynamically adjusts the listen
5046 interval based on the WLAN/MSM activity. Upon the call
5047 of this API the WLAN DAL will pack and send a HAL
5048 configure Apps Cpu Wakeup State request message to the
5049 lower RIVA sub-system.
5050
5051 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005052 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005053
Jeff Johnsone7245742012-09-05 17:12:55 -07005054
5055 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07005056 Apps Cpu Wakeup State as specified by the
5057 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005058
Jeff Johnson295189b2012-06-20 16:38:30 -07005059 wdiConfigureAppsCpuWakeupStateCb: callback for passing
5060 back the response of the configure Apps Cpu Wakeup State
5061 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005062
Jeff Johnson295189b2012-06-20 16:38:30 -07005063 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005064 callback
5065
Jeff Johnson295189b2012-06-20 16:38:30 -07005066 @return Result of the function call
5067*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005068WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005069WDI_ConfigureAppsCpuWakeupStateReq
5070(
5071 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5072 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5073 void* pUserData
5074)
5075{
5076 WDI_EventInfoType wdiEventData;
5077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5078
5079 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005080 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005081 ------------------------------------------------------------------------*/
5082 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5083 {
5084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5085 "WDI API call before module is initialized - Fail request");
5086
Jeff Johnsone7245742012-09-05 17:12:55 -07005087 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005088 }
5089
5090 /*------------------------------------------------------------------------
5091 Fill in Event data and post to the Main FSM
5092 ------------------------------------------------------------------------*/
5093 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005094 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5095 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5096 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005097 wdiEventData.pUserData = pUserData;
5098
5099 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5100}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5101/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005102 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005103 to to perform a flush operation on a given AC. Upon the
5104 call of this API the WLAN DAL will pack and send a HAL
5105 Flush AC request message to the lower RIVA sub-system if
5106 DAL is in state STARTED.
5107
5108 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005109 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005110
5111 WDI_AddBAReq must have been called.
5112
Jeff Johnsone7245742012-09-05 17:12:55 -07005113 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005114 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005115
Jeff Johnson295189b2012-06-20 16:38:30 -07005116 wdiFlushAcRspCb: callback for passing back the response
5117 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005118
Jeff Johnson295189b2012-06-20 16:38:30 -07005119 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005120 callback
5121
Jeff Johnson295189b2012-06-20 16:38:30 -07005122 @see WDI_AddBAReq
5123 @return Result of the function call
5124*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005125WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005126WDI_FlushAcReq
5127(
5128 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5129 WDI_FlushAcRspCb wdiFlushAcRspCb,
5130 void* pUserData
5131)
5132{
5133 WDI_EventInfoType wdiEventData;
5134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5135
5136 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005137 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005138 ------------------------------------------------------------------------*/
5139 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5140 {
5141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5142 "WDI API call before module is initialized - Fail request");
5143
Jeff Johnsone7245742012-09-05 17:12:55 -07005144 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005145 }
5146
5147 /*------------------------------------------------------------------------
5148 Fill in Event data and post to the Main FSM
5149 ------------------------------------------------------------------------*/
5150 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005151 wdiEventData.pEventData = pwdiFlushAcReqParams;
5152 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5153 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005154 wdiEventData.pUserData = pUserData;
5155
5156 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5157
5158}/*WDI_FlushAcReq*/
5159
5160/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005161 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005162 wants to notify the lower mac on a BT AMP event. This is
5163 to inform BTC-SLM that some BT AMP event occurred. Upon
5164 the call of this API the WLAN DAL will pack and send a
5165 HAL BT AMP event request message to the lower RIVA
5166 sub-system if DAL is in state STARTED.
5167
5168 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005169 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005170
Jeff Johnsone7245742012-09-05 17:12:55 -07005171
5172 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005173 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005174
Jeff Johnson295189b2012-06-20 16:38:30 -07005175 wdiBtAmpEventRspCb: callback for passing back the
5176 response of the BT AMP event operation received from the
5177 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005178
Jeff Johnson295189b2012-06-20 16:38:30 -07005179 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005180 callback
5181
Jeff Johnson295189b2012-06-20 16:38:30 -07005182 @return Result of the function call
5183*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005184WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005185WDI_BtAmpEventReq
5186(
5187 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5188 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5189 void* pUserData
5190)
5191{
5192 WDI_EventInfoType wdiEventData;
5193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5194
5195 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005196 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005197 ------------------------------------------------------------------------*/
5198 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5199 {
5200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5201 "WDI API call before module is initialized - Fail request");
5202
Jeff Johnsone7245742012-09-05 17:12:55 -07005203 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005204 }
5205
5206 /*------------------------------------------------------------------------
5207 Fill in Event data and post to the Main FSM
5208 ------------------------------------------------------------------------*/
5209 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005210 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5211 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5212 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005213 wdiEventData.pUserData = pUserData;
5214
5215 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5216
5217}/*WDI_BtAmpEventReq*/
5218
Jeff Johnsone7245742012-09-05 17:12:55 -07005219#ifdef FEATURE_OEM_DATA_SUPPORT
5220/**
5221 @brief WDI_Start Oem Data Req will be called when the upper MAC
5222 wants to notify the lower mac on a oem data Req event.Upon
5223 the call of this API the WLAN DAL will pack and send a
5224 HAL OEM Data Req event request message to the lower RIVA
5225 sub-system if DAL is in state STARTED.
5226
5227 In state BUSY this request will be queued. Request won't
5228 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005229
5230
Jeff Johnsone7245742012-09-05 17:12:55 -07005231
5232 @param pwdiOemDataReqParams: the Oem Data Req as
5233 specified by the Device Interface
5234
5235 wdiStartOemDataRspCb: callback for passing back the
5236 response of the Oem Data Req received from the
5237 device
5238
5239 pUserData: user data will be passed back with the
5240 callback
5241
5242 @return Result of the function call
5243*/
5244WDI_Status
5245WDI_StartOemDataReq
5246(
5247 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5248 WDI_oemDataRspCb wdiOemDataRspCb,
5249 void* pUserData
5250)
5251{
5252 WDI_EventInfoType wdiEventData;
5253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5254
5255 /*------------------------------------------------------------------------
5256 Sanity Check
5257 ------------------------------------------------------------------------*/
5258 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5259 {
5260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5261 "WDI API call before module is initialized - Fail request");
5262
5263 return WDI_STATUS_E_NOT_ALLOWED;
5264 }
5265
5266 /*------------------------------------------------------------------------
5267 Fill in Event data and post to the Main FSM
5268 ------------------------------------------------------------------------*/
5269 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5270 wdiEventData.pEventData = pwdiOemDataReqParams;
5271 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5272 wdiEventData.pCBfnc = wdiOemDataRspCb;
5273 wdiEventData.pUserData = pUserData;
5274
5275 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5276
5277
5278}
5279
5280#endif
5281
5282
5283/*========================================================================
5284
Jeff Johnson295189b2012-06-20 16:38:30 -07005285 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005286
Jeff Johnson295189b2012-06-20 16:38:30 -07005287==========================================================================*/
5288/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005289 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005290 the WLAN HW to change the current channel of operation.
5291 Upon the call of this API the WLAN DAL will pack and
5292 send a HAL Start request message to the lower RIVA
5293 sub-system if DAL is in state STARTED.
5294
5295 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005296 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005297
5298 WDI_Start must have been called.
5299
Jeff Johnsone7245742012-09-05 17:12:55 -07005300 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005301 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005302
Jeff Johnson295189b2012-06-20 16:38:30 -07005303 wdiSwitchChRspCb: callback for passing back the response
5304 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005305
Jeff Johnson295189b2012-06-20 16:38:30 -07005306 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 callback
5308
Jeff Johnson295189b2012-06-20 16:38:30 -07005309 @see WDI_Start
5310 @return Result of the function call
5311*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005312WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005313WDI_SwitchChReq
5314(
5315 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5316 WDI_SwitchChRspCb wdiSwitchChRspCb,
5317 void* pUserData
5318)
5319{
5320 WDI_EventInfoType wdiEventData;
5321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5322
5323 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005324 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005325 ------------------------------------------------------------------------*/
5326 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5327 {
5328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5329 "WDI API call before module is initialized - Fail request");
5330
Jeff Johnsone7245742012-09-05 17:12:55 -07005331 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005332 }
5333
5334 /*------------------------------------------------------------------------
5335 Fill in Event data and post to the Main FSM
5336 ------------------------------------------------------------------------*/
5337 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005338 wdiEventData.pEventData = pwdiSwitchChReqParams;
5339 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5340 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005341 wdiEventData.pUserData = pUserData;
5342
5343 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5344
5345}/*WDI_SwitchChReq*/
5346
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005347/**
5348 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5349 the WLAN HW to change the current channel of operation.
5350 Upon the call of this API the WLAN DAL will pack and
5351 send a HAL Start request message to the lower RIVA
5352 sub-system if DAL is in state STARTED.
5353 This request message also includes source of channel switch,
5354 like CSA,
5355
5356 In state BUSY this request will be queued. Request won't
5357 be allowed in any other state.
5358
5359 WDI_Start must have been called.
5360
5361 @param wdiSwitchChReqParams: the switch ch parameters as
5362 specified by the Device Interface
5363
5364 wdiSwitchChRspCb: callback for passing back the response
5365 of the switch ch operation received from the device
5366
5367 pUserData: user data will be passed back with the
5368 callback
5369
5370 @see WDI_Start
5371 @return Result of the function call
5372*/
5373WDI_Status
5374WDI_SwitchChReq_V1
5375(
5376 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5377 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5378 void* pUserData
5379)
5380{
5381 WDI_EventInfoType wdiEventData;
5382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5384 "WDI API call WDI_SwitchChReq_V1");
5385 /*------------------------------------------------------------------------
5386 Sanity Check
5387 ------------------------------------------------------------------------*/
5388 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5389 {
5390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5391 "WDI API call before module is initialized - Fail request");
5392
5393 return WDI_STATUS_E_NOT_ALLOWED;
5394 }
5395
5396 /*------------------------------------------------------------------------
5397 Fill in Event data and post to the Main FSM
5398 ------------------------------------------------------------------------*/
5399 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5400 wdiEventData.pEventData = pwdiSwitchChReqParams;
5401 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5402 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5403 wdiEventData.pUserData = pUserData;
5404
5405 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5406
5407}/*WDI_SwitchChReq_V1*/
5408
Jeff Johnson295189b2012-06-20 16:38:30 -07005409
5410/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005411 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005412 wishes to add or update a STA in HW. Upon the call of
5413 this API the WLAN DAL will pack and send a HAL Start
5414 message request message to the lower RIVA sub-system if
5415 DAL is in state STARTED.
5416
5417 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005418 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005419
5420 WDI_Start must have been called.
5421
Jeff Johnsone7245742012-09-05 17:12:55 -07005422 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005423 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005424
Jeff Johnson295189b2012-06-20 16:38:30 -07005425 wdiConfigSTARspCb: callback for passing back the
5426 response of the config STA operation received from the
5427 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005428
Jeff Johnson295189b2012-06-20 16:38:30 -07005429 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005430 callback
5431
Jeff Johnson295189b2012-06-20 16:38:30 -07005432 @see WDI_Start
5433 @return Result of the function call
5434*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005435WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005436WDI_ConfigSTAReq
5437(
5438 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5439 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5440 void* pUserData
5441)
5442{
5443 WDI_EventInfoType wdiEventData;
5444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5445
5446 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005447 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005448 ------------------------------------------------------------------------*/
5449 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5450 {
5451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5452 "WDI API call before module is initialized - Fail request");
5453
Jeff Johnsone7245742012-09-05 17:12:55 -07005454 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005455 }
5456
5457 /*------------------------------------------------------------------------
5458 Fill in Event data and post to the Main FSM
5459 ------------------------------------------------------------------------*/
5460 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005461 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5462 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5463 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005464 wdiEventData.pUserData = pUserData;
5465
5466 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5467
5468}/*WDI_ConfigSTAReq*/
5469
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005470 /**
5471 @brief WDI_UpdateChannelReq will be called when the upper MAC
5472 wants to update the channel list on change in country code.
5473
5474 In state BUSY this request will be queued. Request won't
5475 be allowed in any other state.
5476
5477 WDI_UpdateChannelReq must have been called.
5478
5479 @param wdiUpdateChannelReqParams: the updated channel parameters
5480 as specified by the Device Interface
5481
5482 wdiUpdateChannelRspCb: callback for passing back the
5483 response of the update channel operation received from
5484 the device
5485
5486 pUserData: user data will be passed back with the
5487 callback
5488
5489 @return Result of the function call
5490*/
5491WDI_Status
5492WDI_UpdateChannelReq
5493(
5494 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5495 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5496 void* pUserData
5497)
5498{
5499 WDI_EventInfoType wdiEventData = {{0}};
5500 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5501
5502 /*------------------------------------------------------------------------
5503 Sanity Check
5504 ------------------------------------------------------------------------*/
5505 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5506 {
5507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5508 "WDI API call before module is initialized - Fail request");
5509
5510 return WDI_STATUS_E_NOT_ALLOWED;
5511 }
5512
5513 /*------------------------------------------------------------------------
5514 Fill in Event data and post to the Main FSM
5515 ------------------------------------------------------------------------*/
5516 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5517 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5518 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5519 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5520 wdiEventData.pUserData = pUserData;
5521
5522 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5523
5524}/*WDI_UpdateChannelReq*/
5525
Jeff Johnson295189b2012-06-20 16:38:30 -07005526/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005527 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005528 wants to change the state of an ongoing link. Upon the
5529 call of this API the WLAN DAL will pack and send a HAL
5530 Start message request message to the lower RIVA
5531 sub-system if DAL is in state STARTED.
5532
5533 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005534 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005535
5536 WDI_JoinStartReq must have been called.
5537
Jeff Johnsone7245742012-09-05 17:12:55 -07005538 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005539 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005540
Jeff Johnson295189b2012-06-20 16:38:30 -07005541 wdiSetLinkStateRspCb: callback for passing back the
5542 response of the set link state operation received from
5543 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005544
Jeff Johnson295189b2012-06-20 16:38:30 -07005545 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005546 callback
5547
Jeff Johnson295189b2012-06-20 16:38:30 -07005548 @see WDI_JoinStartReq
5549 @return Result of the function call
5550*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005551WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005552WDI_SetLinkStateReq
5553(
5554 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5555 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5556 void* pUserData
5557)
5558{
5559 WDI_EventInfoType wdiEventData;
5560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5561
5562 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005563 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005564 ------------------------------------------------------------------------*/
5565 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5566 {
5567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5568 "WDI API call before module is initialized - Fail request");
5569
Jeff Johnsone7245742012-09-05 17:12:55 -07005570 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005571 }
5572
5573 /*------------------------------------------------------------------------
5574 Fill in Event data and post to the Main FSM
5575 ------------------------------------------------------------------------*/
5576 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005577 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5578 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5579 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005580 wdiEventData.pUserData = pUserData;
5581
5582 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5583
5584}/*WDI_SetLinkStateReq*/
5585
5586
5587/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005588 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005589 to get statistics (MIB counters) from the device. Upon
5590 the call of this API the WLAN DAL will pack and send a
5591 HAL Start request message to the lower RIVA sub-system
5592 if DAL is in state STARTED.
5593
5594 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005595 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005596
5597 WDI_Start must have been called.
5598
Jeff Johnsone7245742012-09-05 17:12:55 -07005599 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005600 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005601
Jeff Johnson295189b2012-06-20 16:38:30 -07005602 wdiGetStatsRspCb: callback for passing back the response
5603 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005604
Jeff Johnson295189b2012-06-20 16:38:30 -07005605 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005606 callback
5607
Jeff Johnson295189b2012-06-20 16:38:30 -07005608 @see WDI_Start
5609 @return Result of the function call
5610*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005611WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005612WDI_GetStatsReq
5613(
5614 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5615 WDI_GetStatsRspCb wdiGetStatsRspCb,
5616 void* pUserData
5617)
5618{
5619 WDI_EventInfoType wdiEventData;
5620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5621
5622 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005623 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005624 ------------------------------------------------------------------------*/
5625 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5626 {
5627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5628 "WDI API call before module is initialized - Fail request");
5629
Jeff Johnsone7245742012-09-05 17:12:55 -07005630 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005631 }
5632
5633 /*------------------------------------------------------------------------
5634 Fill in Event data and post to the Main FSM
5635 ------------------------------------------------------------------------*/
5636 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005637 wdiEventData.pEventData = pwdiGetStatsReqParams;
5638 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5639 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005640 wdiEventData.pUserData = pUserData;
5641
5642 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5643
5644}/*WDI_GetStatsReq*/
5645
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005646#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005647/**
5648 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5649 to get roam rssi from the device. Upon
5650 the call of this API the WLAN DAL will pack and send a
5651 HAL Start request message to the lower RIVA sub-system
5652 if DAL is in state STARTED.
5653
5654 In state BUSY this request will be queued. Request won't
5655 be allowed in any other state.
5656
5657 WDI_Start must have been called.
5658
5659 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5660 specified by the Device Interface
5661
5662 wdiGetRoamRssiRspCb: callback for passing back the response
5663 of the get stats operation received from the device
5664
5665 pUserData: user data will be passed back with the
5666 callback
5667
5668 @see WDI_Start
5669 @return Result of the function call
5670*/
5671WDI_Status
5672WDI_GetRoamRssiReq
5673(
5674 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5675 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5676 void* pUserData
5677)
5678{
5679 WDI_EventInfoType wdiEventData;
5680 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5681
5682 /*------------------------------------------------------------------------
5683 Sanity Check
5684 ------------------------------------------------------------------------*/
5685 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5686 {
5687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5688 "WDI API call before module is initialized - Fail request");
5689
5690 return WDI_STATUS_E_NOT_ALLOWED;
5691 }
5692 /*------------------------------------------------------------------------
5693 Fill in Event data and post to the Main FSM
5694 ------------------------------------------------------------------------*/
5695 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5696 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5697 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5698 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5699 wdiEventData.pUserData = pUserData;
5700
5701 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5702
5703}/*WDI_GetRoamRssiReq*/
5704#endif
5705
Jeff Johnson295189b2012-06-20 16:38:30 -07005706
5707/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005708 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005709 it wishes to change the configuration of the WLAN
5710 Device. Upon the call of this API the WLAN DAL will pack
5711 and send a HAL Update CFG request message to the lower
5712 RIVA sub-system if DAL is in state STARTED.
5713
5714 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005715 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005716
5717 WDI_Start must have been called.
5718
Jeff Johnsone7245742012-09-05 17:12:55 -07005719 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005720 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005721
Jeff Johnson295189b2012-06-20 16:38:30 -07005722 wdiUpdateCfgsRspCb: callback for passing back the
5723 response of the update cfg operation received from the
5724 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005725
Jeff Johnson295189b2012-06-20 16:38:30 -07005726 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005727 callback
5728
Jeff Johnson295189b2012-06-20 16:38:30 -07005729 @see WDI_Start
5730 @return Result of the function call
5731*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005732WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005733WDI_UpdateCfgReq
5734(
5735 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5736 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5737 void* pUserData
5738)
5739{
5740 WDI_EventInfoType wdiEventData;
5741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5742
5743 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005744 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005745 ------------------------------------------------------------------------*/
5746 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5747 {
5748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5749 "WDI API call before module is initialized - Fail request");
5750
Jeff Johnsone7245742012-09-05 17:12:55 -07005751 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005752 }
5753
5754 /*------------------------------------------------------------------------
5755 Fill in Event data and post to the Main FSM
5756 ------------------------------------------------------------------------*/
5757 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005758 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5759 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5760 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005761 wdiEventData.pUserData = pUserData;
5762
5763 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5764
5765}/*WDI_UpdateCfgReq*/
5766
5767
5768
5769/**
5770 @brief WDI_AddBAReq will be called when the upper MAC has setup
5771 successfully a BA session and needs to notify the HW for
5772 the appropriate settings to take place. Upon the call of
5773 this API the WLAN DAL will pack and send a HAL Add BA
5774 request message to the lower RIVA sub-system if DAL is
5775 in state STARTED.
5776
5777 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005778 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005779
5780 WDI_PostAssocReq must have been called.
5781
5782 @param wdiAddBAReqParams: the add BA parameters as specified by
5783 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005784
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 wdiAddBARspCb: callback for passing back the response of
5786 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005787
Jeff Johnson295189b2012-06-20 16:38:30 -07005788 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005789 callback
5790
Jeff Johnson295189b2012-06-20 16:38:30 -07005791 @see WDI_PostAssocReq
5792 @return Result of the function call
5793*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005794WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005795WDI_AddBAReq
5796(
5797 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5798 WDI_AddBARspCb wdiAddBARspCb,
5799 void* pUserData
5800)
5801{
5802 WDI_EventInfoType wdiEventData;
5803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5804
5805 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005806 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005807 ------------------------------------------------------------------------*/
5808 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5809 {
5810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5811 "WDI API call before module is initialized - Fail request");
5812
Jeff Johnsone7245742012-09-05 17:12:55 -07005813 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005814 }
5815
5816 /*------------------------------------------------------------------------
5817 Fill in Event data and post to the Main FSM
5818 ------------------------------------------------------------------------*/
5819 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005820 wdiEventData.pEventData = pwdiAddBAReqParams;
5821 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5822 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005823 wdiEventData.pUserData = pUserData;
5824
5825 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5826
5827}/*WDI_AddBAReq*/
5828
5829
5830/**
5831 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5832 successfully a BA session and needs to notify the HW for
5833 the appropriate settings to take place. Upon the call of
5834 this API the WLAN DAL will pack and send a HAL Add BA
5835 request message to the lower RIVA sub-system if DAL is
5836 in state STARTED.
5837
5838 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005839 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005840
5841 WDI_PostAssocReq must have been called.
5842
5843 @param wdiAddBAReqParams: the add BA parameters as specified by
5844 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005845
Jeff Johnson295189b2012-06-20 16:38:30 -07005846 wdiAddBARspCb: callback for passing back the response of
5847 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005848
Jeff Johnson295189b2012-06-20 16:38:30 -07005849 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005850 callback
5851
Jeff Johnson295189b2012-06-20 16:38:30 -07005852 @see WDI_PostAssocReq
5853 @return Result of the function call
5854*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005855WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005856WDI_TriggerBAReq
5857(
5858 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5859 WDI_TriggerBARspCb wdiTriggerBARspCb,
5860 void* pUserData
5861)
5862{
5863 WDI_EventInfoType wdiEventData;
5864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5865
5866 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005867 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 ------------------------------------------------------------------------*/
5869 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5870 {
5871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5872 "WDI API call before module is initialized - Fail request");
5873
Jeff Johnsone7245742012-09-05 17:12:55 -07005874 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005875 }
5876
5877 /*------------------------------------------------------------------------
5878 Fill in Event data and post to the Main FSM
5879 ------------------------------------------------------------------------*/
5880 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005881 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5882 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5883 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005884 wdiEventData.pUserData = pUserData;
5885
5886 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5887
5888}/*WDI_AddBAReq*/
5889
5890/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005891 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005892 wishes to update any of the Beacon parameters used by HW.
5893 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5894 message to the lower RIVA sub-system if DAL is in state
5895 STARTED.
5896
5897 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005898 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005899
5900 WDI_PostAssocReq must have been called.
5901
Jeff Johnsone7245742012-09-05 17:12:55 -07005902 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005903 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005904
Jeff Johnson295189b2012-06-20 16:38:30 -07005905 wdiUpdateBeaconParamsRspCb: callback for passing back the
5906 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005907
Jeff Johnson295189b2012-06-20 16:38:30 -07005908 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005909 callback
5910
Jeff Johnson295189b2012-06-20 16:38:30 -07005911 @see WDI_PostAssocReq
5912 @return Result of the function call
5913*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005914WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005915WDI_UpdateBeaconParamsReq
5916(
5917 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5918 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5919 void* pUserData
5920)
5921{
5922 WDI_EventInfoType wdiEventData;
5923 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5924
5925 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005926 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005927 ------------------------------------------------------------------------*/
5928 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5929 {
5930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5931 "WDI API call before module is initialized - Fail request");
5932
Jeff Johnsone7245742012-09-05 17:12:55 -07005933 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005934 }
5935
5936 /*------------------------------------------------------------------------
5937 Fill in Event data and post to the Main FSM
5938 ------------------------------------------------------------------------*/
5939 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005940 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5941 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5942 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005943 wdiEventData.pUserData = pUserData;
5944
5945 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5946
5947}/*WDI_UpdateBeaconParamsReq*/
5948
5949/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005950 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005951 wishes to update the Beacon template used by HW.
5952 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5953 message to the lower RIVA sub-system if DAL is in state
5954 STARTED.
5955
5956 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005957 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005958
5959 WDI_PostAssocReq must have been called.
5960
Jeff Johnsone7245742012-09-05 17:12:55 -07005961 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005962 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005963
Jeff Johnson295189b2012-06-20 16:38:30 -07005964 wdiSendBeaconParamsRspCb: callback for passing back the
5965 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005966
Jeff Johnson295189b2012-06-20 16:38:30 -07005967 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005968 callback
5969
Jeff Johnson295189b2012-06-20 16:38:30 -07005970 @see WDI_PostAssocReq
5971 @return Result of the function call
5972*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005973WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005974WDI_SendBeaconParamsReq
5975(
5976 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5977 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5978 void* pUserData
5979)
5980{
5981 WDI_EventInfoType wdiEventData;
5982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5983
5984 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005985 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005986 ------------------------------------------------------------------------*/
5987 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5988 {
5989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5990 "WDI API call before module is initialized - Fail request");
5991
Jeff Johnsone7245742012-09-05 17:12:55 -07005992 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005993 }
5994
5995 /*------------------------------------------------------------------------
5996 Fill in Event data and post to the Main FSM
5997 ------------------------------------------------------------------------*/
5998 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005999 wdiEventData.pEventData = pwdiSendBeaconParams;
6000 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
6001 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006002 wdiEventData.pUserData = pUserData;
6003
6004 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6005
6006}/*WDI_SendBeaconParamsReq*/
6007
6008/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006009 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006010 upper MAC wants to update the probe response template to
6011 be transmitted as Soft AP
6012 Upon the call of this API the WLAN DAL will
6013 pack and send the probe rsp template message to the
6014 lower RIVA sub-system if DAL is in state STARTED.
6015
6016 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006017 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006018
6019
Jeff Johnsone7245742012-09-05 17:12:55 -07006020 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006021 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006022
Jeff Johnson295189b2012-06-20 16:38:30 -07006023 wdiSendBeaconParamsRspCb: callback for passing back the
6024 response of the Send Beacon Params operation received
6025 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006026
Jeff Johnson295189b2012-06-20 16:38:30 -07006027 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006028 callback
6029
Jeff Johnson295189b2012-06-20 16:38:30 -07006030 @see WDI_AddBAReq
6031 @return Result of the function call
6032*/
6033
Jeff Johnsone7245742012-09-05 17:12:55 -07006034WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006035WDI_UpdateProbeRspTemplateReq
6036(
6037 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
6038 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
6039 void* pUserData
6040)
6041{
6042 WDI_EventInfoType wdiEventData;
6043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6044
6045 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006046 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006047 ------------------------------------------------------------------------*/
6048 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6049 {
6050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6051 "WDI API call before module is initialized - Fail request");
6052
Jeff Johnsone7245742012-09-05 17:12:55 -07006053 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006054 }
6055
6056 /*------------------------------------------------------------------------
6057 Fill in Event data and post to the Main FSM
6058 ------------------------------------------------------------------------*/
6059 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006060 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
6061 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
6062 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006063 wdiEventData.pUserData = pUserData;
6064
6065 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6066
6067}/*WDI_UpdateProbeRspTemplateReq*/
6068
6069/**
6070 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6071 to the NV memory.
6072
6073
6074 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6075 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006076
Jeff Johnson295189b2012-06-20 16:38:30 -07006077 wdiNvDownloadRspCb: callback for passing back the response of
6078 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006079
Jeff Johnson295189b2012-06-20 16:38:30 -07006080 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006081 callback
6082
Jeff Johnson295189b2012-06-20 16:38:30 -07006083 @see WDI_PostAssocReq
6084 @return Result of the function call
6085*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006086WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006087WDI_NvDownloadReq
6088(
6089 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6090 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6091 void* pUserData
6092)
6093{
6094 WDI_EventInfoType wdiEventData;
6095
6096 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006097 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006098 ------------------------------------------------------------------------*/
6099 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6100 {
6101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6102 "WDI API call before module is initialized - Fail request");
6103
Jeff Johnsone7245742012-09-05 17:12:55 -07006104 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006105 }
6106
6107 /*------------------------------------------------------------------------
6108 Fill in Event data and post to the Main FSM
6109 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006110 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6111 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6112 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6113 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006114 wdiEventData.pUserData = pUserData;
6115
6116 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6117
6118}/*WDI_NVDownloadReq*/
6119
Jeff Johnson295189b2012-06-20 16:38:30 -07006120/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006121 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006122 upper MAC wants to send Notice of Absence
6123 Upon the call of this API the WLAN DAL will
6124 pack and send the probe rsp template message to the
6125 lower RIVA sub-system if DAL is in state STARTED.
6126
6127 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006128 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006129
6130
Jeff Johnsone7245742012-09-05 17:12:55 -07006131 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006132 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006133
Jeff Johnson295189b2012-06-20 16:38:30 -07006134 wdiSendBeaconParamsRspCb: callback for passing back the
6135 response of the Send Beacon Params operation received
6136 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006137
Jeff Johnson295189b2012-06-20 16:38:30 -07006138 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006139 callback
6140
Jeff Johnson295189b2012-06-20 16:38:30 -07006141 @see WDI_AddBAReq
6142 @return Result of the function call
6143*/
6144WDI_Status
6145WDI_SetP2PGONOAReq
6146(
6147 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6148 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6149 void* pUserData
6150)
6151{
6152 WDI_EventInfoType wdiEventData;
6153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6154
6155 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006156 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006157 ------------------------------------------------------------------------*/
6158 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6159 {
6160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6161 "WDI API call before module is initialized - Fail request");
6162
Jeff Johnsone7245742012-09-05 17:12:55 -07006163 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006164 }
6165
6166 /*------------------------------------------------------------------------
6167 Fill in Event data and post to the Main FSM
6168 ------------------------------------------------------------------------*/
6169 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006170 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6171 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6172 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006173 wdiEventData.pUserData = pUserData;
6174
6175 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6176
6177}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006178
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306179#ifdef FEATURE_WLAN_TDLS
6180/**
6181 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6182 upper MAC wants to send TDLS Link Establish Request Parameters
6183 Upon the call of this API the WLAN DAL will
6184 pack and send the TDLS Link Establish Request message to the
6185 lower RIVA sub-system if DAL is in state STARTED.
6186
6187 In state BUSY this request will be queued. Request won't
6188 be allowed in any other state.
6189
6190
6191 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6192 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6193
6194 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6195 response of the TDLS Link Establish request received
6196 from the device
6197
6198 pUserData: user data will be passed back with the
6199 callback
6200
6201 @see
6202 @return Result of the function call
6203*/
6204WDI_Status
6205WDI_SetTDLSLinkEstablishReq
6206(
6207 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6208 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6209 void* pUserData
6210)
6211{
6212 WDI_EventInfoType wdiEventData;
6213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6214
6215 /*------------------------------------------------------------------------
6216 Sanity Check
6217 ------------------------------------------------------------------------*/
6218 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6219 {
6220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6221 "WDI API call before module is initialized - Fail request");
6222
6223 return WDI_STATUS_E_NOT_ALLOWED;
6224 }
6225
6226 /*------------------------------------------------------------------------
6227 Fill in Event data and post to the Main FSM
6228 ------------------------------------------------------------------------*/
6229 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6230 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6231 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6232 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6233 wdiEventData.pUserData = pUserData;
6234
6235 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6236
6237}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306238
6239//tdlsoffchan
6240/**
6241 @brief WDI_SetTDLSChanSwitchReq will be called when the
6242 upper MAC wants to send TDLS Chan Switch Request Parameters
6243 Upon the call of this API the WLAN DAL will
6244 pack and send the TDLS Link Establish Request message to the
6245 lower RIVA sub-system if DAL is in state STARTED.
6246
6247 In state BUSY this request will be queued. Request won't
6248 be allowed in any other state.
6249
6250
6251 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6252 for Link Establishment (Used for TDLS Off Channel ...)
6253
6254 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6255 response of the TDLS Chan Switch request received
6256 from the device
6257
6258 pUserData: user data will be passed back with the
6259 callback
6260
6261 @see
6262 @return Result of the function call
6263*/
6264WDI_Status
6265WDI_SetTDLSChanSwitchReq
6266(
6267 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6268 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6269 void* pUserData
6270)
6271{
6272 WDI_EventInfoType wdiEventData;
6273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6274
6275 /*------------------------------------------------------------------------
6276 Sanity Check
6277 ------------------------------------------------------------------------*/
6278 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6279 {
6280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6281 "WDI API call before module is initialized - Fail request");
6282
6283 return WDI_STATUS_E_NOT_ALLOWED;
6284 }
6285
6286 /*------------------------------------------------------------------------
6287 Fill in Event data and post to the Main FSM
6288 ------------------------------------------------------------------------*/
6289 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6290 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6291 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6292 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6293 wdiEventData.pUserData = pUserData;
6294
6295 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6296
6297}/*WDI_SetTDLSChanSwitchReq*/
6298
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306299#endif
6300
Jeff Johnson295189b2012-06-20 16:38:30 -07006301/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006302 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006303 UMAC wanted to add STA self while opening any new session
6304 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006305 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006306
6307
Jeff Johnsone7245742012-09-05 17:12:55 -07006308 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006309 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006310
Jeff Johnson295189b2012-06-20 16:38:30 -07006311 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006312 callback
6313
6314 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006315 @return Result of the function call
6316*/
6317WDI_Status
6318WDI_AddSTASelfReq
6319(
6320 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6321 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6322 void* pUserData
6323)
6324{
6325 WDI_EventInfoType wdiEventData;
6326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6327
6328 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006329 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006330 ------------------------------------------------------------------------*/
6331 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6332 {
6333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6334 "WDI API call before module is initialized - Fail request");
6335
Jeff Johnsone7245742012-09-05 17:12:55 -07006336 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006337 }
6338
6339 /*------------------------------------------------------------------------
6340 Fill in Event data and post to the Main FSM
6341 ------------------------------------------------------------------------*/
6342 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006343 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6344 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6345 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006346 wdiEventData.pUserData = pUserData;
6347
6348 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6349
6350}/*WDI_AddSTASelfReq*/
6351
6352
Jeff Johnsone7245742012-09-05 17:12:55 -07006353#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006354/**
6355 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6356 the device of a successful add TSpec negotiation. HW
6357 needs to receive the TSpec Info from the UMAC in order
6358 to configure properly the QoS data traffic. Upon the
6359 call of this API the WLAN DAL will pack and send a HAL
6360 Add TS request message to the lower RIVA sub-system if
6361 DAL is in state STARTED.
6362
6363 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006364 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006365
6366 WDI_PostAssocReq must have been called.
6367
6368 @param wdiAddTsReqParams: the add TS parameters as specified by
6369 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006370
Jeff Johnson295189b2012-06-20 16:38:30 -07006371 wdiAddTsRspCb: callback for passing back the response of
6372 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006373
Jeff Johnson295189b2012-06-20 16:38:30 -07006374 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006375 callback
6376
Jeff Johnson295189b2012-06-20 16:38:30 -07006377 @see WDI_PostAssocReq
6378 @return Result of the function call
6379*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006380WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006381WDI_AggrAddTSReq
6382(
6383 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6384 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6385 void* pUserData
6386)
6387{
6388 WDI_EventInfoType wdiEventData;
6389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6390
6391 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006392 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006393 ------------------------------------------------------------------------*/
6394 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6395 {
6396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6397 "WDI API call before module is initialized - Fail request");
6398
Jeff Johnsone7245742012-09-05 17:12:55 -07006399 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006400 }
6401
6402 /*------------------------------------------------------------------------
6403 Fill in Event data and post to the Main FSM
6404 ------------------------------------------------------------------------*/
6405 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006406 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6407 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6408 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006409 wdiEventData.pUserData = pUserData;
6410
6411 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6412
6413}/*WDI_AggrAddTSReq*/
6414
6415#endif /* WLAN_FEATURE_VOWIFI_11R */
6416
Jeff Johnson295189b2012-06-20 16:38:30 -07006417/**
6418 @brief WDI_FTMCommandReq
6419 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006420
6421 @param ftmCommandReq: FTM Command Body
6422 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006423 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006424
Jeff Johnson295189b2012-06-20 16:38:30 -07006425 @see
6426 @return Result of the function call
6427*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006428WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006429WDI_FTMCommandReq
6430(
6431 WDI_FTMCommandReqType *ftmCommandReq,
6432 WDI_FTMCommandRspCb ftmCommandRspCb,
6433 void *pUserData
6434)
6435{
6436 WDI_EventInfoType wdiEventData;
6437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6438
6439 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006440 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006441 ------------------------------------------------------------------------*/
6442 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6443 {
6444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6445 "WDI API call before module is initialized - Fail request");
6446
Jeff Johnsone7245742012-09-05 17:12:55 -07006447 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006448 }
6449
6450 /*------------------------------------------------------------------------
6451 Fill in Event data and post to the Main FSM
6452 ------------------------------------------------------------------------*/
6453 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6454 wdiEventData.pEventData = (void *)ftmCommandReq;
6455 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6456 wdiEventData.pCBfnc = ftmCommandRspCb;
6457 wdiEventData.pUserData = pUserData;
6458
6459 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6460}
Jeff Johnson295189b2012-06-20 16:38:30 -07006461/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006462 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006463
6464 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006465 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006466
6467
6468 @param pwdiResumeReqParams: as specified by
6469 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006470
Jeff Johnson295189b2012-06-20 16:38:30 -07006471 wdiResumeReqRspCb: callback for passing back the response of
6472 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006473
Jeff Johnson295189b2012-06-20 16:38:30 -07006474 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006475 callback
6476
6477 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006478 @return Result of the function call
6479*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006480WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006481WDI_HostResumeReq
6482(
6483 WDI_ResumeParamsType* pwdiResumeReqParams,
6484 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6485 void* pUserData
6486)
6487{
6488 WDI_EventInfoType wdiEventData;
6489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6490
6491 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006492 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006493 ------------------------------------------------------------------------*/
6494 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6495 {
6496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6497 "WDI API call before module is initialized - Fail request");
6498
Jeff Johnsone7245742012-09-05 17:12:55 -07006499 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006500 }
6501
6502 /*------------------------------------------------------------------------
6503 Fill in Event data and post to the Main FSM
6504 ------------------------------------------------------------------------*/
6505 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006506 wdiEventData.pEventData = pwdiResumeReqParams;
6507 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6508 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006509 wdiEventData.pUserData = pUserData;
6510
6511 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6512
6513}/*WDI_HostResumeReq*/
6514
6515/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006516 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006517
6518 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006519 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006520
6521
6522 @param pwdiDelStaSelfReqParams: as specified by
6523 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006524
Jeff Johnson295189b2012-06-20 16:38:30 -07006525 wdiDelStaSelfRspCb: callback for passing back the response of
6526 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006527
Jeff Johnson295189b2012-06-20 16:38:30 -07006528 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006529 callback
6530
Jeff Johnson295189b2012-06-20 16:38:30 -07006531 @see WDI_PostAssocReq
6532 @return Result of the function call
6533*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006534WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006535WDI_DelSTASelfReq
6536(
6537 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6538 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6539 void* pUserData
6540)
6541{
6542 WDI_EventInfoType wdiEventData;
6543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6544
6545 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006546 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006547 ------------------------------------------------------------------------*/
6548 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6549 {
6550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6551 "WDI API call before module is initialized - Fail request");
6552
Jeff Johnsone7245742012-09-05 17:12:55 -07006553 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006554 }
6555
6556 /*------------------------------------------------------------------------
6557 Fill in Event data and post to the Main FSM
6558 ------------------------------------------------------------------------*/
6559 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006560 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6561 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6562 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006563 wdiEventData.pUserData = pUserData;
6564
6565 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6566
6567}/*WDI_AggrAddTSReq*/
6568
6569/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006570 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6571 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006572 Upon the call of this API the WLAN DAL will pack
6573 and send a HAL Set Tx Per Tracking request message to the
6574 lower RIVA sub-system if DAL is in state STARTED.
6575
6576 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006577 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006578
Jeff Johnsone7245742012-09-05 17:12:55 -07006579 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006580 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006581
Jeff Johnson295189b2012-06-20 16:38:30 -07006582 pwdiSetTxPerTrackingRspCb: callback for passing back the
6583 response of the set Tx PER Tracking configurations operation received
6584 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006585
Jeff Johnson295189b2012-06-20 16:38:30 -07006586 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006587 callback
6588
Jeff Johnson295189b2012-06-20 16:38:30 -07006589 @return Result of the function call
6590*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006591WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006592WDI_SetTxPerTrackingReq
6593(
6594 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6595 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6596 void* pUserData
6597)
6598{
6599 WDI_EventInfoType wdiEventData;
6600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6601
6602 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006603 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006604 ------------------------------------------------------------------------*/
6605 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6606 {
6607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6608 "WDI API call before module is initialized - Fail request");
6609
Jeff Johnsone7245742012-09-05 17:12:55 -07006610 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006611 }
6612
6613 /*------------------------------------------------------------------------
6614 Fill in Event data and post to the Main FSM
6615 ------------------------------------------------------------------------*/
6616 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006617 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006618 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006619 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006620 wdiEventData.pUserData = pUserData;
6621
6622 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6623
6624}/*WDI_SetTxPerTrackingReq*/
6625
6626/**
6627 @brief WDI_SetTmLevelReq
6628 If HW Thermal condition changed, driver should react based on new
6629 HW thermal condition.
6630
6631 @param pwdiSetTmLevelReq: New thermal condition information
6632
6633 pwdiSetTmLevelRspCb: callback
6634
6635 usrData: user data will be passed back with the
6636 callback
6637
6638 @return Result of the function call
6639*/
6640WDI_Status
6641WDI_SetTmLevelReq
6642(
6643 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6644 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6645 void *usrData
6646)
6647{
6648 WDI_EventInfoType wdiEventData;
6649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6650
6651 /*------------------------------------------------------------------------
6652 Sanity Check
6653 ------------------------------------------------------------------------*/
6654 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6655 {
6656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6657 "WDI API call before module is initialized - Fail request");
6658
6659 return WDI_STATUS_E_NOT_ALLOWED;
6660 }
6661
6662 /*------------------------------------------------------------------------
6663 Fill in Event data and post to the Main FSM
6664 ------------------------------------------------------------------------*/
6665 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6666 wdiEventData.pEventData = pwdiSetTmLevelReq;
6667 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6668 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6669 wdiEventData.pUserData = usrData;
6670
6671 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6672}
6673
6674/**
6675 @brief WDI_HostSuspendInd
6676
6677 Suspend Indication from the upper layer will be sent
6678 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006679
Jeff Johnson295189b2012-06-20 16:38:30 -07006680 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006681
6682 @see
6683
Jeff Johnson295189b2012-06-20 16:38:30 -07006684 @return Status of the request
6685*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006686WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006687WDI_HostSuspendInd
6688(
6689 WDI_SuspendParamsType* pwdiSuspendIndParams
6690)
6691{
6692
6693 WDI_EventInfoType wdiEventData;
6694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6695
6696 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006697 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006698 ------------------------------------------------------------------------*/
6699 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6700 {
6701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6702 "WDI API call before module is initialized - Fail request");
6703
Jeff Johnsone7245742012-09-05 17:12:55 -07006704 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006705 }
6706
6707 /*------------------------------------------------------------------------
6708 Fill in Event data and post to the Main FSM
6709 ------------------------------------------------------------------------*/
6710 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006711 wdiEventData.pEventData = pwdiSuspendIndParams;
6712 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6713 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006714 wdiEventData.pUserData = NULL;
6715
6716 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6717
6718}/*WDI_HostSuspendInd*/
6719
6720/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006721 @brief WDI_TrafficStatsInd
6722 Traffic Stats from the upper layer will be sent
6723 down to HAL
6724
6725 @param WDI_TrafficStatsIndType
6726
6727 @see
6728
6729 @return Status of the request
6730*/
6731WDI_Status
6732WDI_TrafficStatsInd
6733(
6734 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6735)
6736{
6737
6738 WDI_EventInfoType wdiEventData;
6739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6740
6741 /*------------------------------------------------------------------------
6742 Sanity Check
6743 ------------------------------------------------------------------------*/
6744 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6745 {
6746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6747 "WDI API call before module is initialized - Fail request");
6748
6749 return WDI_STATUS_E_NOT_ALLOWED;
6750 }
6751
6752 /*------------------------------------------------------------------------
6753 Fill in Event data and post to the Main FSM
6754 ------------------------------------------------------------------------*/
6755 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6756 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6757 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6758 wdiEventData.pCBfnc = NULL;
6759 wdiEventData.pUserData = NULL;
6760
6761 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6762
6763}/*WDI_TrafficStatsInd*/
6764
Chet Lanctot186b5732013-03-18 10:26:30 -07006765#ifdef WLAN_FEATURE_11W
6766/**
6767 @brief WDI_ExcludeUnencryptedInd
6768 Register with HAL to receive/drop unencrypted frames
6769
6770 @param WDI_ExcludeUnencryptIndType
6771
6772 @see
6773
6774 @return Status of the request
6775*/
6776WDI_Status
6777WDI_ExcludeUnencryptedInd
6778(
6779 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6780)
6781{
6782
6783 WDI_EventInfoType wdiEventData;
6784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6785
6786 /*------------------------------------------------------------------------
6787 Sanity Check
6788 ------------------------------------------------------------------------*/
6789 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6790 {
6791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6792 "WDI API call before module is initialized - Fail request");
6793
6794 return WDI_STATUS_E_NOT_ALLOWED;
6795 }
6796
6797 /*------------------------------------------------------------------------
6798 Fill in Event data and post to the Main FSM
6799 ------------------------------------------------------------------------*/
6800 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6801 wdiEventData.pEventData = pWdiExcUnencParams;
6802 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6803 wdiEventData.pCBfnc = NULL;
6804 wdiEventData.pUserData = NULL;
6805
6806 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6807
6808}/*WDI_TrafficStatsInd*/
6809#endif
6810
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006811/**
Yue Mab9c86f42013-08-14 15:59:08 -07006812 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6813
6814 @param addPeriodicTxPtrnParams: Add Pattern parameters
6815
6816 @see
6817
6818 @return Status of the request
6819*/
6820WDI_Status
6821WDI_AddPeriodicTxPtrnInd
6822(
6823 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6824)
6825{
6826 WDI_EventInfoType wdiEventData;
6827
6828 /*-------------------------------------------------------------------------
6829 Sanity Check
6830 ------------------------------------------------------------------------*/
6831 if (eWLAN_PAL_FALSE == gWDIInitialized)
6832 {
6833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6834 "WDI API call before module is initialized - Fail request!");
6835
6836 return WDI_STATUS_E_NOT_ALLOWED;
6837 }
6838
6839 /*-------------------------------------------------------------------------
6840 Fill in Event data and post to the Main FSM
6841 ------------------------------------------------------------------------*/
6842 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6843 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6844 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6845 wdiEventData.pCBfnc = NULL;
6846 wdiEventData.pUserData = NULL;
6847
6848 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6849}
6850
6851/**
6852 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6853
6854 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6855
6856 @see
6857
6858 @return Status of the request
6859*/
6860WDI_Status
6861WDI_DelPeriodicTxPtrnInd
6862(
6863 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6864)
6865{
6866 WDI_EventInfoType wdiEventData;
6867
6868 /*-------------------------------------------------------------------------
6869 Sanity Check
6870 ------------------------------------------------------------------------*/
6871 if (eWLAN_PAL_FALSE == gWDIInitialized)
6872 {
6873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6874 "WDI API call before module is initialized - Fail request!");
6875
6876 return WDI_STATUS_E_NOT_ALLOWED;
6877 }
6878
6879 /*-------------------------------------------------------------------------
6880 Fill in Event data and post to the Main FSM
6881 ------------------------------------------------------------------------*/
6882 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6883 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6884 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6885 wdiEventData.pCBfnc = NULL;
6886 wdiEventData.pUserData = NULL;
6887
6888 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6889}
6890
6891/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006892 @brief WDI_HALDumpCmdReq
6893 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006894
6895 @param halDumpCmdReqParams: Hal Dump Command Body
6896 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006897 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006898
Jeff Johnson295189b2012-06-20 16:38:30 -07006899 @see
6900 @return Result of the function call
6901*/
6902WDI_Status WDI_HALDumpCmdReq
6903(
6904 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6905 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6906 void *pUserData
6907)
6908{
6909 WDI_EventInfoType wdiEventData;
6910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6911
6912 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006913 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006914 ------------------------------------------------------------------------*/
6915 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6916 {
6917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6918 "WDI API call before module is initialized - Fail request");
6919
Jeff Johnsone7245742012-09-05 17:12:55 -07006920 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006921 }
6922
6923 /*------------------------------------------------------------------------
6924 Fill in Event data and post to the Main FSM
6925 ------------------------------------------------------------------------*/
6926 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6927 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6928 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6929 wdiEventData.pCBfnc = halDumpCmdRspCb;
6930 wdiEventData.pUserData = pUserData;
6931
6932 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6933}
6934
Jeff Johnsone7245742012-09-05 17:12:55 -07006935/*============================================================================
6936
Jeff Johnson295189b2012-06-20 16:38:30 -07006937 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006938
Jeff Johnson295189b2012-06-20 16:38:30 -07006939 ============================================================================*/
6940
6941/**
6942 @brief Main FSM Start function for all states except BUSY
6943
Jeff Johnsone7245742012-09-05 17:12:55 -07006944
6945 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006946 wdiEV: event posted to the main DAL FSM
6947 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006948 structure
6949
Jeff Johnson295189b2012-06-20 16:38:30 -07006950 @see
6951 @return Result of the function call
6952*/
6953WDI_Status
6954WDI_PostMainEvent
6955(
Jeff Johnsone7245742012-09-05 17:12:55 -07006956 WDI_ControlBlockType* pWDICtx,
6957 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006958 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006959)
6960{
Jeff Johnsone7245742012-09-05 17:12:55 -07006961 WDI_Status wdiStatus;
6962 WDI_MainFuncType pfnWDIMainEvHdlr;
6963 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05306964 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6966
6967 /*-------------------------------------------------------------------------
6968 Sanity check
6969 -------------------------------------------------------------------------*/
6970 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6971 ( wdiEV >= WDI_MAX_EVENT ))
6972 {
6973 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6974 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6975 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006976 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006977 }
6978
6979 /*Access to the global state must be locked */
6980 wpalMutexAcquire(&pWDICtx->wptMutex);
6981
6982 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006983 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006984
6985 wdiOldState = pWDICtx->uGlobalState;
6986
6987 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006988 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6989 response comes from CCPU for the request sent by host:
6990 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 -07006991 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 -07006992 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006993 CCPU:
6994 don't change the state */
6995 if ( WDI_RESPONSE_EVENT != wdiEV)
6996 {
6997 /*Transition to BUSY State - the request is now being processed by the FSM,
6998 if the request fails we shall transition back to the old state, if not
6999 the request will manage its own state transition*/
7000 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
7001 }
7002 /* If the state function associated with the EV is NULL it means that this
7003 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007004 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 {
7006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007007 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07007008 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007009 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007010 }
7011 else
7012 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05307013 if (!(failCnt & 0xF))
7014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007015 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07007016 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05307017 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07007018 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007019 }
7020
7021 /* If a request handles itself well it will end up in a success or in a
7022 pending
7023 Success - means that the request was processed and the proper state
7024 transition already occurred or will occur when the resp is received
7025 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07007026
Jeff Johnson295189b2012-06-20 16:38:30 -07007027 Pending - means the request could not be processed at this moment in time
7028 because the FSM was already busy so no state transition or dequeueing
7029 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07007030
Jeff Johnson295189b2012-06-20 16:38:30 -07007031 Success for synchronous case means that the transition may occur and
7032 processing of pending requests may continue - so it should go through
7033 and restores the state and continue processing queued requests*/
7034 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
7035 ( WDI_STATUS_PENDING != wdiStatus ))
7036 {
7037 if ( WDI_RESPONSE_EVENT != wdiEV)
7038 {
7039 /*The request has failed or could not be processed - transition back to
7040 the old state - check to see if anything was queued and try to execute
7041 The dequeue logic should post a message to a thread and return - no
7042 actual processing can occur */
7043 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
7044 }
7045 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007046
Jeff Johnson295189b2012-06-20 16:38:30 -07007047 }
7048
7049 /* we have completed processing the event */
7050 wpalMutexRelease(&pWDICtx->wptMutex);
7051
Jeff Johnsone7245742012-09-05 17:12:55 -07007052 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007053
7054}/*WDI_PostMainEvent*/
7055
7056
7057/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007058 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007059--------------------------------------------------------------------------*/
7060/**
7061 @brief Main FSM Start function for all states except BUSY
7062
Jeff Johnsone7245742012-09-05 17:12:55 -07007063
7064 @param pWDICtx: pointer to the WLAN DAL context
7065 pEventData: pointer to the event information structure
7066
Jeff Johnson295189b2012-06-20 16:38:30 -07007067 @see
7068 @return Result of the function call
7069*/
7070WDI_Status
7071WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007072(
Jeff Johnson295189b2012-06-20 16:38:30 -07007073 WDI_ControlBlockType* pWDICtx,
7074 WDI_EventInfoType* pEventData
7075)
7076{
7077
7078 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007079 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007080 ----------------------------------------------------------------------*/
7081 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7082 {
7083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007084 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007085 pWDICtx, pEventData);
7086 return WDI_STATUS_E_FAILURE;
7087 }
7088
7089 wpalMutexAcquire(&pWDICtx->wptMutex);
7090
7091 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007092 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007093 ----------------------------------------------------------------------*/
7094 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7095 {
7096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7097 "Control Transport not yet Open - queueing the request");
7098
7099 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007100 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007101
7102 wpalMutexRelease(&pWDICtx->wptMutex);
7103 return WDI_STATUS_PENDING;
7104 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007105
Jeff Johnson295189b2012-06-20 16:38:30 -07007106 wpalMutexRelease(&pWDICtx->wptMutex);
7107
7108 /*Return Success*/
7109 return WDI_ProcessRequest( pWDICtx, pEventData );
7110
7111}/*WDI_MainStart*/
7112
7113/**
7114 @brief Main FSM Response function for state INIT
7115
Jeff Johnsone7245742012-09-05 17:12:55 -07007116
7117 @param pWDICtx: pointer to the WLAN DAL context
7118 pEventData: pointer to the event information structure
7119
Jeff Johnson295189b2012-06-20 16:38:30 -07007120 @see
7121 @return Result of the function call
7122*/
7123WDI_Status
7124WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007125(
Jeff Johnson295189b2012-06-20 16:38:30 -07007126 WDI_ControlBlockType* pWDICtx,
7127 WDI_EventInfoType* pEventData
7128)
7129{
7130 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007131 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007132 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007133 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007134
7135 /*Return Success*/
7136 return WDI_STATUS_E_NOT_ALLOWED;
7137}/* WDI_MainRspInit */
7138
7139/**
7140 @brief Main FSM Close function for all states except BUSY
7141
Jeff Johnsone7245742012-09-05 17:12:55 -07007142
7143 @param pWDICtx: pointer to the WLAN DAL context
7144 pEventData: pointer to the event information structure
7145
Jeff Johnson295189b2012-06-20 16:38:30 -07007146 @see
7147 @return Result of the function call
7148*/
7149WDI_Status
7150WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007151(
Jeff Johnson295189b2012-06-20 16:38:30 -07007152 WDI_ControlBlockType* pWDICtx,
7153 WDI_EventInfoType* pEventData
7154)
7155{
7156
7157 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007158 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007159 ----------------------------------------------------------------------*/
7160 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7161 {
7162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007163 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 pWDICtx, pEventData);
7165 return WDI_STATUS_E_FAILURE;
7166 }
7167
7168 /*Return Success*/
7169 return WDI_ProcessRequest( pWDICtx, pEventData );
7170
7171}/*WDI_MainClose*/
7172/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007173 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007174--------------------------------------------------------------------------*/
7175/**
7176 @brief Main FSM Start function for state STARTED
7177
Jeff Johnsone7245742012-09-05 17:12:55 -07007178
7179 @param pWDICtx: pointer to the WLAN DAL context
7180 pEventData: pointer to the event information structure
7181
Jeff Johnson295189b2012-06-20 16:38:30 -07007182 @see
7183 @return Result of the function call
7184*/
7185WDI_Status
7186WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007187(
Jeff Johnson295189b2012-06-20 16:38:30 -07007188 WDI_ControlBlockType* pWDICtx,
7189 WDI_EventInfoType* pEventData
7190)
7191{
7192 WDI_StartRspCb wdiStartRspCb = NULL;
7193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7194
7195 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 ----------------------------------------------------------------------*/
7198 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7199 {
7200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007201 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007202 pWDICtx, pEventData);
7203 return WDI_STATUS_E_FAILURE;
7204 }
7205
7206 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007207 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007208 ----------------------------------------------------------------------*/
7209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007210 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007211
7212 wpalMutexAcquire(&pWDICtx->wptMutex);
7213
7214 /*Transition back to started because the post function transitioned us to
7215 busy*/
7216 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7217
7218 /*Check to see if any request is pending*/
7219 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007220
Jeff Johnson295189b2012-06-20 16:38:30 -07007221 wpalMutexRelease(&pWDICtx->wptMutex);
7222
7223 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007224 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7225
Jeff Johnson295189b2012-06-20 16:38:30 -07007226 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307227 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007228
7229 /*Return Success*/
7230 return WDI_STATUS_SUCCESS;
7231
7232}/*WDI_MainStartStarted*/
7233
7234/**
7235 @brief Main FSM Stop function for state STARTED
7236
Jeff Johnsone7245742012-09-05 17:12:55 -07007237
7238 @param pWDICtx: pointer to the WLAN DAL context
7239 pEventData: pointer to the event information structure
7240
Jeff Johnson295189b2012-06-20 16:38:30 -07007241 @see
7242 @return Result of the function call
7243*/
7244WDI_Status
7245WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007246(
Jeff Johnson295189b2012-06-20 16:38:30 -07007247 WDI_ControlBlockType* pWDICtx,
7248 WDI_EventInfoType* pEventData
7249)
7250{
7251 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007252 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007253 ----------------------------------------------------------------------*/
7254 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7255 {
7256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007257 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007258 pWDICtx, pEventData);
7259 return WDI_STATUS_E_FAILURE;
7260 }
7261
7262 /*State at this point is BUSY - because we enter this state before posting
7263 an event to the FSM in order to prevent potential race conditions*/
7264
7265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7266 "Processing stop request in FSM");
7267
7268 /*Return Success*/
7269 return WDI_ProcessRequest( pWDICtx, pEventData );
7270
7271}/*WDI_MainStopStarted*/
7272/**
7273 @brief Main FSM Request function for state started
7274
Jeff Johnsone7245742012-09-05 17:12:55 -07007275
7276 @param pWDICtx: pointer to the WLAN DAL context
7277 pEventData: pointer to the event information structure
7278
Jeff Johnson295189b2012-06-20 16:38:30 -07007279 @see
7280 @return Result of the function call
7281*/
7282WDI_Status
7283WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007284(
Jeff Johnson295189b2012-06-20 16:38:30 -07007285 WDI_ControlBlockType* pWDICtx,
7286 WDI_EventInfoType* pEventData
7287)
7288{
7289
7290 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007291 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007292 ----------------------------------------------------------------------*/
7293 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7294 {
7295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007296 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007297 pWDICtx, pEventData);
7298 return WDI_STATUS_E_FAILURE;
7299 }
7300
7301 /*State at this point is BUSY - because we enter this state before posting
7302 an event to the FSM in order to prevent potential race conditions*/
7303
7304 /*Return Success*/
7305 return WDI_ProcessRequest( pWDICtx, pEventData );
7306
7307}/*WDI_MainReqStarted*/
7308
7309/**
7310 @brief Main FSM Response function for all states except INIT
7311
Jeff Johnsone7245742012-09-05 17:12:55 -07007312
7313 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007314 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007315
Jeff Johnson295189b2012-06-20 16:38:30 -07007316 @see
7317 @return Result of the function call
7318*/
7319WDI_Status
7320WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007321(
Jeff Johnson295189b2012-06-20 16:38:30 -07007322 WDI_ControlBlockType* pWDICtx,
7323 WDI_EventInfoType* pEventData
7324)
7325{
Jeff Johnsone7245742012-09-05 17:12:55 -07007326 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007327 wpt_boolean expectedResponse;
7328
7329 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007330 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007331 ----------------------------------------------------------------------*/
7332 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7333 {
7334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007335 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007336 pWDICtx, pEventData);
7337 return WDI_STATUS_E_FAILURE;
7338 }
7339
7340 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7341 {
7342 /* we received an expected response */
7343 expectedResponse = eWLAN_PAL_TRUE;
7344
7345 /*We expect that we will transition to started after this processing*/
7346 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7347
7348 /* we are no longer expecting a response */
7349 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7350 }
7351 else
7352 {
7353 /* we received an indication or unexpected response */
7354 expectedResponse = eWLAN_PAL_FALSE;
7355 /* for indications no need to update state from what it is right
7356 now, unless it explicitly does it in the indication handler (say
7357 for device failure ind) */
7358 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7359 }
7360
7361 /*Process the response and indication */
7362 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7363
7364 /*Lock the CB as we are about to do a state transition*/
7365 wpalMutexAcquire(&pWDICtx->wptMutex);
7366
7367 /*Transition to the expected state after the response processing
7368 - this should always be started state with the following exceptions:
7369 1. processing of a failed start response
7370 2. device failure detected while processing response
7371 3. stop response received*/
7372 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007373
Jeff Johnson295189b2012-06-20 16:38:30 -07007374 /*Dequeue request that may have been queued while we were waiting for the
7375 response */
7376 if ( expectedResponse )
7377 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007378 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007379 }
7380
7381 wpalMutexRelease(&pWDICtx->wptMutex);
7382
7383 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007385
7386}/*WDI_MainRsp*/
7387
7388/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007389 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007390--------------------------------------------------------------------------*/
7391/**
7392 @brief Main FSM Stop function for state STOPPED
7393
Jeff Johnsone7245742012-09-05 17:12:55 -07007394
7395 @param pWDICtx: pointer to the WLAN DAL context
7396 pEventData: pointer to the event information structure
7397
Jeff Johnson295189b2012-06-20 16:38:30 -07007398 @see
7399 @return Result of the function call
7400*/
7401WDI_Status
7402WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007403(
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 WDI_ControlBlockType* pWDICtx,
7405 WDI_EventInfoType* pEventData
7406)
7407{
7408 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007409 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007410 ----------------------------------------------------------------------*/
7411 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7412 {
7413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007414 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007415 pWDICtx, pEventData);
7416 return WDI_STATUS_E_FAILURE;
7417 }
7418
7419 /*We should normally not get a STOP request if we are already stopped
7420 since we should normally be stopped by the UMAC. However in some
7421 error situations we put ourselves in the stopped state without the
7422 UMAC knowing, so when we get a STOP request in this state we still
7423 process it since we need to clean up the underlying state */
7424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7425 "Processing stop request while stopped in FSM");
7426
7427 /*Return Success*/
7428 return WDI_ProcessRequest( pWDICtx, pEventData );
7429
7430}/*WDI_MainStopStopped*/
7431
7432/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007433 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007434--------------------------------------------------------------------------*/
7435/**
7436 @brief Main FSM Start function for state BUSY
7437
Jeff Johnsone7245742012-09-05 17:12:55 -07007438
7439 @param pWDICtx: pointer to the WLAN DAL context
7440 pEventData: pointer to the event information structure
7441
Jeff Johnson295189b2012-06-20 16:38:30 -07007442 @see
7443 @return Result of the function call
7444*/
7445WDI_Status
7446WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007447(
Jeff Johnson295189b2012-06-20 16:38:30 -07007448 WDI_ControlBlockType* pWDICtx,
7449 WDI_EventInfoType* pEventData
7450)
7451{
7452 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007453 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007454 ----------------------------------------------------------------------*/
7455 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7456 {
7457 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007458 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007459 pWDICtx, pEventData);
7460 return WDI_STATUS_E_FAILURE;
7461 }
7462
7463 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007464 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007465 ----------------------------------------------------------------------*/
7466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7467 "WDI Busy state - queue start request");
7468
7469 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007470 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007471
7472 /*Return Success*/
7473 return WDI_STATUS_PENDING;
7474}/*WDI_MainStartBusy*/
7475
7476/**
7477 @brief Main FSM Stop function for state BUSY
7478
Jeff Johnsone7245742012-09-05 17:12:55 -07007479
7480 @param pWDICtx: pointer to the WLAN DAL context
7481 pEventData: pointer to the event information structure
7482
Jeff Johnson295189b2012-06-20 16:38:30 -07007483 @see
7484 @return Result of the function call
7485*/
7486WDI_Status
7487WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007488(
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 WDI_ControlBlockType* pWDICtx,
7490 WDI_EventInfoType* pEventData
7491)
7492{
7493 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007494 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007495 ----------------------------------------------------------------------*/
7496 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7497 {
7498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007499 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007500 pWDICtx, pEventData);
7501 return WDI_STATUS_E_FAILURE;
7502 }
7503
7504 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007505 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007506 ----------------------------------------------------------------------*/
7507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7508 "WDI Busy state - queue stop request");
7509
Jeff Johnsone7245742012-09-05 17:12:55 -07007510 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007512
Jeff Johnson295189b2012-06-20 16:38:30 -07007513}/*WDI_MainStopBusy*/
7514
7515/**
7516 @brief Main FSM Request function for state BUSY
7517
Jeff Johnsone7245742012-09-05 17:12:55 -07007518
7519 @param pWDICtx: pointer to the WLAN DAL context
7520 pEventData: pointer to the event information structure
7521
Jeff Johnson295189b2012-06-20 16:38:30 -07007522 @see
7523 @return Result of the function call
7524*/
7525WDI_Status
7526WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007527(
Jeff Johnson295189b2012-06-20 16:38:30 -07007528 WDI_ControlBlockType* pWDICtx,
7529 WDI_EventInfoType* pEventData
7530)
7531{
7532 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007533 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007534 ----------------------------------------------------------------------*/
7535 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7536 {
7537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007538 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007539 pWDICtx, pEventData);
7540 return WDI_STATUS_E_FAILURE;
7541 }
7542
7543 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007544 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007545 ----------------------------------------------------------------------*/
7546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7547 "WDI Busy state - queue request %d because waiting for response %d",
7548 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7549
Jeff Johnsone7245742012-09-05 17:12:55 -07007550 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007551 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007552
Jeff Johnson295189b2012-06-20 16:38:30 -07007553}/*WDI_MainReqBusy*/
7554/**
7555 @brief Main FSM Close function for state BUSY
7556
Jeff Johnsone7245742012-09-05 17:12:55 -07007557
7558 @param pWDICtx: pointer to the WLAN DAL context
7559 pEventData: pointer to the event information structure
7560
Jeff Johnson295189b2012-06-20 16:38:30 -07007561 @see
7562 @return Result of the function call
7563*/
7564WDI_Status
7565WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007566(
Jeff Johnson295189b2012-06-20 16:38:30 -07007567 WDI_ControlBlockType* pWDICtx,
7568 WDI_EventInfoType* pEventData
7569)
7570{
7571 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007572 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007573 ----------------------------------------------------------------------*/
7574 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7575 {
7576 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007577 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007578 pWDICtx, pEventData);
7579 return WDI_STATUS_E_FAILURE;
7580 }
7581
7582 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007583 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007584 ----------------------------------------------------------------------*/
7585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7586 "WDI Busy state - queue close request");
7587
Jeff Johnsone7245742012-09-05 17:12:55 -07007588 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007589 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007590
Jeff Johnson295189b2012-06-20 16:38:30 -07007591}/*WDI_MainCloseBusy*/
7592
7593/**
7594 @brief Main FSM Shutdown function for INIT & STARTED states
7595
7596
7597 @param pWDICtx: pointer to the WLAN DAL context
7598 pEventData: pointer to the event information structure
7599
7600 @see
7601 @return Result of the function call
7602*/
7603WDI_Status
7604WDI_MainShutdown
7605(
7606 WDI_ControlBlockType* pWDICtx,
7607 WDI_EventInfoType* pEventData
7608)
7609{
7610 /*--------------------------------------------------------------------
7611 Sanity Check
7612 ----------------------------------------------------------------------*/
7613 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7614 {
7615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007616 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007617 pWDICtx, pEventData);
7618 return WDI_STATUS_E_FAILURE;
7619 }
7620
7621 /*State at this point is BUSY - because we enter this state before posting
7622 an event to the FSM in order to prevent potential race conditions*/
7623
7624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7625 "Processing shutdown request in FSM");
7626
7627 /*Return Success*/
7628 return WDI_ProcessRequest( pWDICtx, pEventData );
7629
7630}/*WDI_MainShutdown*/
7631
7632/**
7633 @brief Main FSM Shutdown function for BUSY state
7634
7635
7636 @param pWDICtx: pointer to the WLAN DAL context
7637 pEventData: pointer to the event information structure
7638
7639 @see
7640 @return Result of the function call
7641*/
7642WDI_Status
7643WDI_MainShutdownBusy
7644(
7645 WDI_ControlBlockType* pWDICtx,
7646 WDI_EventInfoType* pEventData
7647)
7648{
7649 /*--------------------------------------------------------------------
7650 Sanity Check
7651 ----------------------------------------------------------------------*/
7652 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7653 {
7654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007655 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007656 pWDICtx, pEventData);
7657 return WDI_STATUS_E_FAILURE;
7658 }
7659
7660 /* If you are waiting for a HAL response at this stage, you are not
7661 * going to get it. Riva is already shutdown/crashed.
7662 */
7663 wpalTimerStop(&gWDICb.wptResponseTimer);
7664
7665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7666 "Processing shutdown request in FSM: Busy state ");
7667
7668 return WDI_ProcessRequest( pWDICtx, pEventData );
7669
7670}/*WDI_MainShutdownBusy*/
7671
7672
Jeff Johnsone7245742012-09-05 17:12:55 -07007673/*=======================================================================
7674
Jeff Johnson295189b2012-06-20 16:38:30 -07007675 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007676
Jeff Johnson295189b2012-06-20 16:38:30 -07007677*=======================================================================*/
7678
7679/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007680 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007681========================================================================*/
7682/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007683 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007684 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007685
7686 @param pWDICtx: pointer to the WLAN DAL context
7687 pEventData: pointer to the event information structure
7688
Jeff Johnson295189b2012-06-20 16:38:30 -07007689 @see
7690 @return Result of the function call
7691*/
7692WDI_Status
7693WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007694(
Jeff Johnson295189b2012-06-20 16:38:30 -07007695 WDI_ControlBlockType* pWDICtx,
7696 WDI_EventInfoType* pEventData
7697)
7698{
7699 WDI_StartReqParamsType* pwdiStartParams = NULL;
7700 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007701 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007702 wpt_uint16 usDataOffset = 0;
7703 wpt_uint16 usSendSize = 0;
7704
Jeff Johnsone7245742012-09-05 17:12:55 -07007705 tHalMacStartReqMsg halStartReq;
7706 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7708
7709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007710 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007711 -------------------------------------------------------------------------*/
7712 if (( NULL == pEventData ) ||
7713 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7714 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7715 {
7716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007717 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007720 }
7721
7722 /*-----------------------------------------------------------------------
7723 Get message buffer
7724 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007725 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 pwdiStartParams->usConfigBufferLen;
7727
Jeff Johnsone7245742012-09-05 17:12:55 -07007728 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 usLen,
7730 &pSendBuffer, &usDataOffset, &usSendSize))||
7731 ( usSendSize < (usDataOffset + usLen )))
7732 {
7733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007734 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 pEventData, pwdiStartParams, wdiStartRspCb);
7736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 }
7739
7740 /*-----------------------------------------------------------------------
7741 Fill in the message
7742 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 halStartReq.startReqParams.driverType =
7744 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007745
Jeff Johnsone7245742012-09-05 17:12:55 -07007746 halStartReq.startReqParams.uConfigBufferLen =
7747 pwdiStartParams->usConfigBufferLen;
7748 wpalMemoryCopy( pSendBuffer+usDataOffset,
7749 &halStartReq.startReqParams,
7750 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007751
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 usDataOffset += sizeof(halStartReq.startReqParams);
7753 wpalMemoryCopy( pSendBuffer+usDataOffset,
7754 pwdiStartParams->pConfigBuffer,
7755 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007756
7757 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007758 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007759
7760 /*Save Low Level Ind CB and associated user data - it will be used further
7761 on when an indication is coming from the lower MAC*/
7762 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007763 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007764
Jeff Johnsone7245742012-09-05 17:12:55 -07007765 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007767 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007768 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007769 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7771
Jeff Johnsone7245742012-09-05 17:12:55 -07007772
Jeff Johnson295189b2012-06-20 16:38:30 -07007773}/*WDI_ProcessStartReq*/
7774
7775/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007776 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007777 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007778
7779 @param pWDICtx: pointer to the WLAN DAL context
7780 pEventData: pointer to the event information structure
7781
Jeff Johnson295189b2012-06-20 16:38:30 -07007782 @see
7783 @return Result of the function call
7784*/
7785WDI_Status
7786WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007787(
Jeff Johnson295189b2012-06-20 16:38:30 -07007788 WDI_ControlBlockType* pWDICtx,
7789 WDI_EventInfoType* pEventData
7790)
7791{
7792 WDI_StopReqParamsType* pwdiStopParams = NULL;
7793 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007794 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 wpt_uint16 usDataOffset = 0;
7796 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007797 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007798 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7800
7801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 -------------------------------------------------------------------------*/
7804 if (( NULL == pEventData ) ||
7805 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7806 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7807 {
7808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007809 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007810 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007811 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007812 }
7813
7814 /*-----------------------------------------------------------------------
7815 Get message buffer
7816 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 sizeof(halStopReq.stopReqParams),
7819 &pSendBuffer, &usDataOffset, &usSendSize))||
7820 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7821 {
7822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007823 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007824 pEventData, pwdiStopParams, wdiStopRspCb);
7825 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007826 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007827 }
7828
7829 /*-----------------------------------------------------------------------
7830 Fill in the message
7831 -----------------------------------------------------------------------*/
7832 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7833 pwdiStopParams->wdiStopReason);
7834
Jeff Johnsone7245742012-09-05 17:12:55 -07007835 wpalMemoryCopy( pSendBuffer+usDataOffset,
7836 &halStopReq.stopReqParams,
7837 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007838
7839 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007840 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007841
7842 /*! TO DO: stop the data services */
7843 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7844 {
7845 /*Stop the STA Table !UT- check this logic again
7846 It is safer to do it here than on the response - because a stop is imminent*/
7847 WDI_STATableStop(pWDICtx);
7848
7849 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007850 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7851 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007852 {
7853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7854 "WDI Init failed to reset power state event");
7855
Jeff Johnsone7245742012-09-05 17:12:55 -07007856 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007857 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007858 }
7859 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007860 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7861 if( eWLAN_PAL_STATUS_SUCCESS != status )
7862 {
7863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007864 "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 -08007865 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007866 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007867 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007868 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007869 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007870 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007871 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7872 WDI_SET_POWER_STATE_TIMEOUT);
7873 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007874 {
7875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7876 "WDI Init failed to wait on an event");
7877
Jeff Johnsone7245742012-09-05 17:12:55 -07007878 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007879 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007880 }
7881 }
7882
7883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007884 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007885 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7888
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007889fail:
7890 // Release the message buffer so we don't leak
7891 wpalMemoryFree(pSendBuffer);
7892
7893failRequest:
7894 //WDA should have failure check to avoid the memory leak
7895 return WDI_STATUS_E_FAILURE;
7896
Jeff Johnson295189b2012-06-20 16:38:30 -07007897}/*WDI_ProcessStopReq*/
7898
7899/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007900 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007901 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007902
7903 @param pWDICtx: pointer to the WLAN DAL context
7904 pEventData: pointer to the event information structure
7905
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 @see
7907 @return Result of the function call
7908*/
7909WDI_Status
7910WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007911(
Jeff Johnson295189b2012-06-20 16:38:30 -07007912 WDI_ControlBlockType* pWDICtx,
7913 WDI_EventInfoType* pEventData
7914)
7915{
Jeff Johnsone7245742012-09-05 17:12:55 -07007916 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7918
7919 /*Lock control block for cleanup*/
7920 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007921
Jeff Johnson295189b2012-06-20 16:38:30 -07007922 /*Clear all pending request*/
7923 WDI_ClearPendingRequests(pWDICtx);
7924
7925 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007926 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007927
7928 /* Close Data transport*/
7929 /* FTM mode does not open Data Path */
7930 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7931 {
7932 WDTS_Close(pWDICtx);
7933 }
7934
7935 /*Close the STA Table !UT- check this logic again*/
7936 WDI_STATableClose(pWDICtx);
7937
7938 /*close the PAL */
7939 wptStatus = wpalClose(pWDICtx->pPALContext);
7940 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7941 {
7942 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7943 "Failed to wpal Close %d", wptStatus);
7944 WDI_ASSERT(0);
7945 }
7946
7947 /*Transition back to init state*/
7948 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7949
7950 wpalMutexRelease(&pWDICtx->wptMutex);
7951
7952 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007953 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007954
Jeff Johnsone7245742012-09-05 17:12:55 -07007955 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007956}/*WDI_ProcessCloseReq*/
7957
7958
7959/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007960 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007961===========================================================================*/
7962
7963/**
7964 @brief Process Init Scan Request function (called when Main FSM
7965 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007966
7967 @param pWDICtx: pointer to the WLAN DAL context
7968 pEventData: pointer to the event information structure
7969
Jeff Johnson295189b2012-06-20 16:38:30 -07007970 @see
7971 @return Result of the function call
7972*/
7973WDI_Status
7974WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007975(
Jeff Johnson295189b2012-06-20 16:38:30 -07007976 WDI_ControlBlockType* pWDICtx,
7977 WDI_EventInfoType* pEventData
7978)
7979{
7980 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7981 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007982 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007983 wpt_uint16 usDataOffset = 0;
7984 wpt_uint16 usSendSize = 0;
7985 wpt_uint8 i = 0;
7986
7987 tHalInitScanReqMsg halInitScanReqMsg;
7988
Jeff Johnsone7245742012-09-05 17:12:55 -07007989 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007990 * It shold be removed once host and riva changes are in sync*/
7991 tHalInitScanConReqMsg halInitScanConReqMsg;
7992
7993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7994
7995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007997 -------------------------------------------------------------------------*/
7998 if (( NULL == pEventData ) ||
7999 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
8000 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
8001 {
8002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 }
8007
8008#if 0
8009 wpalMutexAcquire(&pWDICtx->wptMutex);
8010 /*-----------------------------------------------------------------------
8011 Check to see if SCAN is already in progress - if so reject the req
8012 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07008013 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07008014 -----------------------------------------------------------------------*/
8015 if ( pWDICtx->bScanInProgress )
8016 {
8017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8018 "Scan is already in progress - subsequent scan is not allowed"
8019 " until the first scan completes");
8020
8021 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008022 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008023 }
8024
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
8026 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008027
8028 wpalMutexRelease(&pWDICtx->wptMutex);
8029#endif
Viral Modid86bde22012-12-10 13:09:21 -08008030 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07008031 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008032 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008033 * It shold be removed once host and riva changes are in sync*/
8034 /*-----------------------------------------------------------------------
8035 Get message buffer
8036 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008037 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008038 sizeof(halInitScanConReqMsg.initScanParams),
8039 &pSendBuffer, &usDataOffset, &usSendSize))||
8040 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
8041 {
8042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008043 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008047 }
8048
8049
8050 /*-----------------------------------------------------------------------
8051 Fill in the message
8052 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008053 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008054 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8055
8056 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
8057 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8058
Jeff Johnsone7245742012-09-05 17:12:55 -07008059 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008060 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008061 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008062 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008063 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008064 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8065
8066 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8067 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8068
Jeff Johnson295189b2012-06-20 16:38:30 -07008069 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8070 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008071
Jeff Johnsone7245742012-09-05 17:12:55 -07008072 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008073 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8074
8075 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8076 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008077 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008078 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8079 }
8080
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 wpalMemoryCopy( pSendBuffer+usDataOffset,
8082 &halInitScanConReqMsg.initScanParams,
8083 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008084 }
8085 else
8086 {
8087 /*-----------------------------------------------------------------------
8088 Get message buffer
8089 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008090 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 sizeof(halInitScanReqMsg.initScanParams),
8092 &pSendBuffer, &usDataOffset, &usSendSize))||
8093 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8094 {
8095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008096 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008097 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008100 }
8101
8102
8103 /*-----------------------------------------------------------------------
8104 Fill in the message
8105 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008106 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008107 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8108
8109 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8110 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8111
Jeff Johnsone7245742012-09-05 17:12:55 -07008112 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008113 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008114 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008115 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008116 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008117 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8118
8119 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8120 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8121
Jeff Johnsone7245742012-09-05 17:12:55 -07008122 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008123 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8124
8125 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8126 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008127 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008128 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8129 }
8130
Jeff Johnsone7245742012-09-05 17:12:55 -07008131 wpalMemoryCopy( pSendBuffer+usDataOffset,
8132 &halInitScanReqMsg.initScanParams,
8133 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 }
8135
8136 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008137 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008138
8139 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008140 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008141 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008142 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008143 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8144
8145}/*WDI_ProcessInitScanReq*/
8146
8147/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008148 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008149 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008150
8151 @param pWDICtx: pointer to the WLAN DAL context
8152 pEventData: pointer to the event information structure
8153
Jeff Johnson295189b2012-06-20 16:38:30 -07008154 @see
8155 @return Result of the function call
8156*/
8157WDI_Status
8158WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008159(
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 WDI_ControlBlockType* pWDICtx,
8161 WDI_EventInfoType* pEventData
8162)
8163{
8164 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8165 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008166 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008167 wpt_uint16 usDataOffset = 0;
8168 wpt_uint16 usSendSize = 0;
8169
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8172
8173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008175 -------------------------------------------------------------------------*/
8176 if (( NULL == pEventData ) ||
8177 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8178 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8179 {
8180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008181 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008184 }
8185
8186#if 0
8187 wpalMutexAcquire(&pWDICtx->wptMutex);
8188 /*-----------------------------------------------------------------------
8189 Check to see if SCAN is already in progress - start scan is only
8190 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008191 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008192 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008193 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008194 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8195 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8196 {
8197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8198 "Scan start not allowed in this state %d %d",
8199 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008200
Jeff Johnson295189b2012-06-20 16:38:30 -07008201 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008203 }
8204
Jeff Johnsone7245742012-09-05 17:12:55 -07008205 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008206
8207 wpalMutexRelease(&pWDICtx->wptMutex);
8208#endif
8209
8210 /*-----------------------------------------------------------------------
8211 Get message buffer
8212 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 sizeof(halStartScanReqMsg.startScanParams),
8215 &pSendBuffer, &usDataOffset, &usSendSize))||
8216 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8217 {
8218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008219 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008220 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8221 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 }
8224
Jeff Johnsone7245742012-09-05 17:12:55 -07008225 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008226 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 wpalMemoryCopy( pSendBuffer+usDataOffset,
8228 &halStartScanReqMsg.startScanParams,
8229 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008230
8231 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008233
8234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008236 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008237 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008238 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8239}/*WDI_ProcessStartScanReq*/
8240
8241
8242/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008243 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008245
8246 @param pWDICtx: pointer to the WLAN DAL context
8247 pEventData: pointer to the event information structure
8248
Jeff Johnson295189b2012-06-20 16:38:30 -07008249 @see
8250 @return Result of the function call
8251*/
8252WDI_Status
8253WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008254(
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 WDI_ControlBlockType* pWDICtx,
8256 WDI_EventInfoType* pEventData
8257)
8258{
8259 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8260 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 wpt_uint16 usDataOffset = 0;
8263 wpt_uint16 usSendSize = 0;
8264
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8267
8268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 -------------------------------------------------------------------------*/
8271 if (( NULL == pEventData ) ||
8272 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8273 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8274 {
8275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008279 }
8280
Jeff Johnsone7245742012-09-05 17:12:55 -07008281 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8282 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 * forwarded to HAL and result in hang*/
8284#if 0
8285 wpalMutexAcquire(&pWDICtx->wptMutex);
8286 /*-----------------------------------------------------------------------
8287 Check to see if SCAN is already in progress - end scan is only
8288 allowed when a scan is ongoing and the state of the scan procedure
8289 is started
8290 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008292 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8293 {
8294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8295 "End start not allowed in this state %d %d",
8296 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008297
Jeff Johnson295189b2012-06-20 16:38:30 -07008298 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008300 }
8301
Jeff Johnsone7245742012-09-05 17:12:55 -07008302 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008303
8304 wpalMutexRelease(&pWDICtx->wptMutex);
8305#endif
8306
8307 /*-----------------------------------------------------------------------
8308 Get message buffer
8309 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008310 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008311 sizeof(halEndScanReqMsg.endScanParams),
8312 &pSendBuffer, &usDataOffset, &usSendSize))||
8313 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8314 {
8315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008316 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008320 }
8321
8322 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8323
Jeff Johnsone7245742012-09-05 17:12:55 -07008324 wpalMemoryCopy( pSendBuffer+usDataOffset,
8325 &halEndScanReqMsg.endScanParams,
8326 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008327
8328 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008330
8331 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008332 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008333 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008335 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8336}/*WDI_ProcessEndScanReq*/
8337
8338
8339/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008340 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008342
8343 @param pWDICtx: pointer to the WLAN DAL context
8344 pEventData: pointer to the event information structure
8345
Jeff Johnson295189b2012-06-20 16:38:30 -07008346 @see
8347 @return Result of the function call
8348*/
8349WDI_Status
8350WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008351(
Jeff Johnson295189b2012-06-20 16:38:30 -07008352 WDI_ControlBlockType* pWDICtx,
8353 WDI_EventInfoType* pEventData
8354)
8355{
8356 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8357 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008358 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 wpt_uint16 usDataOffset = 0;
8360 wpt_uint16 usSendSize = 0;
8361 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008362 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008363 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8365
8366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 -------------------------------------------------------------------------*/
8369 if (( NULL == pEventData ) ||
8370 ( NULL == pEventData->pEventData) ||
8371 ( NULL == pEventData->pCBfnc))
8372 {
8373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 }
8378
8379 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8380 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8382 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 * forwarded to HAL and result in hang*/
8384#if 0
8385 wpalMutexAcquire(&pWDICtx->wptMutex);
8386 /*-----------------------------------------------------------------------
8387 Check to see if SCAN is already in progress
8388 Finish scan gets invoked any scan states. ie. abort scan
8389 It should be allowed in any states.
8390 -----------------------------------------------------------------------*/
8391 if ( !pWDICtx->bScanInProgress )
8392 {
8393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8394 "Finish start not allowed in this state %d",
8395 pWDICtx->bScanInProgress );
8396
8397 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008398 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008399 }
8400
8401 /*-----------------------------------------------------------------------
8402 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008403 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008404 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008405 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8406 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008407 wpalMutexRelease(&pWDICtx->wptMutex);
8408#endif
8409
8410 if ( pWDICtx->bInBmps )
8411 {
8412 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008413 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8414 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8415 {
8416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008417 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008418 WDI_ASSERT(0);
8419 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008420 }
8421
8422 /*-----------------------------------------------------------------------
8423 Get message buffer
8424 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008425 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008426 sizeof(halFinishScanReqMsg.finishScanParams),
8427 &pSendBuffer, &usDataOffset, &usSendSize))||
8428 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8429 {
8430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008431 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008432 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 }
8436
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8439
Jeff Johnsone7245742012-09-05 17:12:55 -07008440 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008441 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8442
Jeff Johnsone7245742012-09-05 17:12:55 -07008443 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8445
8446 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8447 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8448
Jeff Johnsone7245742012-09-05 17:12:55 -07008449 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008450 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008452 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8455
Jeff Johnsone7245742012-09-05 17:12:55 -07008456 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008457 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8458
8459 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8460 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8463 }
8464
8465 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8466 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8467
Jeff Johnsone7245742012-09-05 17:12:55 -07008468 wpalMemoryCopy( pSendBuffer+usDataOffset,
8469 &halFinishScanReqMsg.finishScanParams,
8470 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008471
8472 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008473 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008474
8475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008476 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008477 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008478 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8480}/*WDI_ProcessFinishScanReq*/
8481
8482
8483/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008485==========================================================================*/
8486/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008487 @brief Process BSS Join for a given Session
8488
8489 @param pWDICtx: pointer to the WLAN DAL context
8490 pEventData: pointer to the event information structure
8491
Jeff Johnson295189b2012-06-20 16:38:30 -07008492 @see
8493 @return Result of the function call
8494*/
8495WDI_Status
8496WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008497(
Jeff Johnson295189b2012-06-20 16:38:30 -07008498 WDI_ControlBlockType* pWDICtx,
8499 WDI_JoinReqParamsType* pwdiJoinParams,
8500 WDI_JoinRspCb wdiJoinRspCb,
8501 void* pUserData
8502)
8503{
8504 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008506 wpt_uint16 usDataOffset = 0;
8507 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008508 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008509
Jeff Johnsone7245742012-09-05 17:12:55 -07008510 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8512
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008513 wpalMutexAcquire(&pWDICtx->wptMutex);
8514
Jeff Johnson295189b2012-06-20 16:38:30 -07008515 /*------------------------------------------------------------------------
8516 Check to see if we have any session with this BSSID already stored, we
8517 should not
8518 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8520 pwdiJoinParams->wdiReqInfo.macBSSID,
8521 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008522
8523 if ( NULL != pBSSSes )
8524 {
8525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008526 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8527 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008528
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008529 /*reset the bAssociationInProgress otherwise the next
8530 *join request will be queued*/
8531 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8532 wpalMutexRelease(&pWDICtx->wptMutex);
8533 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 }
8535
Jeff Johnson295189b2012-06-20 16:38:30 -07008536 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008537 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008538 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008539 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008540 if ( NULL == pBSSSes )
8541 {
8542
8543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8544 "DAL has no free sessions - cannot run another join");
8545
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008546 /*reset the bAssociationInProgress otherwise the next
8547 *join request will be queued*/
8548 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008549 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008550 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008551 }
8552
8553 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008554 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8555 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008556 WDI_MAC_ADDR_LEN);
8557
8558 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008559 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008561
Jeff Johnson295189b2012-06-20 16:38:30 -07008562 wpalMutexRelease(&pWDICtx->wptMutex);
8563
8564 /*-----------------------------------------------------------------------
8565 Get message buffer
8566 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008567 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008568 sizeof(halJoinReqMsg.joinReqParams),
8569 &pSendBuffer, &usDataOffset, &usSendSize))||
8570 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8571 {
8572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008573 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 pUserData, pwdiJoinParams, wdiJoinRspCb);
8575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 }
8578
8579 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008580 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008581
8582 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 pwdiJoinParams->wdiReqInfo.macSTASelf,
8584 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008585
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8588
8589 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8590
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008591#ifdef WLAN_FEATURE_VOWIFI
8592 halJoinReqMsg.joinReqParams.maxTxPower =
8593 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8594#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008595 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008596 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8597#endif
8598
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8601 wdiSecondaryChannelOffset);
8602
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 wpalMemoryCopy( pSendBuffer+usDataOffset,
8604 &halJoinReqMsg.joinReqParams,
8605 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008606
8607 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008608 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008609
8610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008612 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008613 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8614 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008615
8616}/*WDI_ProcessBSSSessionJoinReq*/
8617
8618/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008621
8622 @param pWDICtx: pointer to the WLAN DAL context
8623 pEventData: pointer to the event information structure
8624
Jeff Johnson295189b2012-06-20 16:38:30 -07008625 @see
8626 @return Result of the function call
8627*/
8628WDI_Status
8629WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008630(
Jeff Johnson295189b2012-06-20 16:38:30 -07008631 WDI_ControlBlockType* pWDICtx,
8632 WDI_EventInfoType* pEventData
8633)
8634{
8635 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8636 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8637 WDI_JoinRspCb wdiJoinRspCb = NULL;
8638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8639
8640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008641 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008642 -------------------------------------------------------------------------*/
8643 if (( NULL == pEventData ) ||
8644 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8645 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8646 {
8647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008648 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008652
Jeff Johnson295189b2012-06-20 16:38:30 -07008653 /*-------------------------------------------------------------------------
8654 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008655 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 -------------------------------------------------------------------------*/
8657 wpalMutexAcquire(&pWDICtx->wptMutex);
8658
8659 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8660 {
8661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8662 "Association is currently in progress, queueing new join req");
8663
8664 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 pwdiJoinParams->wdiReqInfo.macBSSID);
8667
8668 wpalMutexRelease(&pWDICtx->wptMutex);
8669
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 }
8672
8673 /*Starting a new association */
8674 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8675 wpalMutexRelease(&pWDICtx->wptMutex);
8676
8677 /*Process the Join Request*/
8678 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8679 wdiJoinRspCb,pEventData->pUserData);
8680
8681}/*WDI_ProcessJoinReq*/
8682
8683
8684/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008687
8688 @param pWDICtx: pointer to the WLAN DAL context
8689 pEventData: pointer to the event information structure
8690
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 @see
8692 @return Result of the function call
8693*/
8694WDI_Status
8695WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008696(
Jeff Johnson295189b2012-06-20 16:38:30 -07008697 WDI_ControlBlockType* pWDICtx,
8698 WDI_EventInfoType* pEventData
8699)
8700{
8701 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8702 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008703 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008704 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008705 wpt_uint16 uMsgSize = 0;
8706 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008707 wpt_uint16 usDataOffset = 0;
8708 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008710
Jeff Johnsone7245742012-09-05 17:12:55 -07008711 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8713
8714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008716 -------------------------------------------------------------------------*/
8717 if (( NULL == pEventData ) ||
8718 ( NULL == pEventData->pEventData ) ||
8719 ( NULL == pEventData->pCBfnc ))
8720 {
8721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008725 }
8726
Abhishek Singh6927fa02014-06-27 17:19:55 +05308727 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008728 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8729 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8730 /*-------------------------------------------------------------------------
8731 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008733 -------------------------------------------------------------------------*/
8734 wpalMutexAcquire(&pWDICtx->wptMutex);
8735
8736 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008737 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008738 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008739 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8740 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8741 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008742
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008744 {
8745#ifdef WLAN_FEATURE_VOWIFI_11R
8746 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008747 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008748 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008749 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008750 if ( NULL == pBSSSes )
8751 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008752
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8754 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008755
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008759
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8762 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008763 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008764
Jeff Johnson295189b2012-06-20 16:38:30 -07008765 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008766 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8768#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008769 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008770 * Request in case of IBSS*/
8771 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8772 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8773 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8774 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8775 {
8776 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008777 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008778 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 if ( NULL == pBSSSes )
8781 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008782
Jeff Johnson295189b2012-06-20 16:38:30 -07008783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8784 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008785
Jeff Johnson295189b2012-06-20 16:38:30 -07008786 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008787 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008789
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008791 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8792 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008793 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008794
Jeff Johnson295189b2012-06-20 16:38:30 -07008795 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8798 }
8799 else
8800 {
8801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008802 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8803 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8804 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8805
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 /* for IBSS testing */
8807 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008808 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008809 }
8810#endif
8811 }
8812
8813 /*------------------------------------------------------------------------
8814 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 ------------------------------------------------------------------------*/
8817 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8818 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8820 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8821 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8822 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008823
Jeff Johnsone7245742012-09-05 17:12:55 -07008824 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008825
8826 wpalMutexRelease(&pWDICtx->wptMutex);
8827
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008829 }
8830
8831 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008832 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8833 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008834 sizeof(pWDICtx->wdiCachedConfigBssReq));
8835
8836 wpalMutexRelease(&pWDICtx->wptMutex);
8837
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8839#ifdef WLAN_FEATURE_11AC
8840 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008841 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008842 else
8843#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008844 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008845
8846 /*-----------------------------------------------------------------------
8847 Get message buffer
8848 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008849 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8851 ( usSendSize < (usDataOffset + uMsgSize )))
8852 {
8853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008854 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 }
8859
8860 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008861#ifdef WLAN_FEATURE_11AC
8862 if (WDI_getFwWlanFeatCaps(DOT11AC))
8863 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8864 &pwdiConfigBSSParams->wdiReqInfo);
8865 else
8866#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008867 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008868 &pwdiConfigBSSParams->wdiReqInfo);
8869
8870 /* Need to fill in the STA Index to invalid, since at this point we have not
8871 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008873
8874 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008875 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8876
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008877#ifdef WLAN_FEATURE_11AC
8878 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8879 wpalMemoryCopy( pSendBuffer+usDataOffset,
8880 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8881 uMsgSize);
8882 }else
8883#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008884 {
8885 if ( uMsgSize <= sizeof(tConfigBssParams) )
8886 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008887 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008888 &halConfigBssReqMsg.uBssParams.configBssParams,
8889 uMsgSize);
8890 }
8891 else
8892 {
8893 return WDI_STATUS_E_FAILURE;
8894 }
8895 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008896
8897 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308899 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008902 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008903 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8904 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008905 WDI_CONFIG_BSS_RESP);
8906
8907}/*WDI_ProcessConfigBSSReq*/
8908
8909
8910/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008913
8914 @param pWDICtx: pointer to the WLAN DAL context
8915 pEventData: pointer to the event information structure
8916
Jeff Johnson295189b2012-06-20 16:38:30 -07008917 @see
8918 @return Result of the function call
8919*/
8920WDI_Status
8921WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008922(
Jeff Johnson295189b2012-06-20 16:38:30 -07008923 WDI_ControlBlockType* pWDICtx,
8924 WDI_EventInfoType* pEventData
8925)
8926{
8927 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8928 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008931 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008932 wpt_uint16 usDataOffset = 0;
8933 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008934 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008935
Jeff Johnsone7245742012-09-05 17:12:55 -07008936 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8938
8939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008941 -------------------------------------------------------------------------*/
8942 if (( NULL == pEventData ) ||
8943 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8944 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8945 {
8946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008947 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008950 }
8951
8952 /*-------------------------------------------------------------------------
8953 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008954 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 -------------------------------------------------------------------------*/
8956 wpalMutexAcquire(&pWDICtx->wptMutex);
8957
8958 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008959 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008960 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008961 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8962 pwdiDelBSSParams->ucBssIdx,
8963 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008964
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008966 {
8967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008968 "%s: BSS does not yet exist. ucBssIdx %d",
8969 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008970
8971 wpalMutexRelease(&pWDICtx->wptMutex);
8972
8973 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008975
8976 /*------------------------------------------------------------------------
8977 Check if this BSS is being currently processed or queued,
8978 if queued - queue the new request as well
8979 ------------------------------------------------------------------------*/
8980 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008981 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8983 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8984 __func__, pwdiDelBSSParams->ucBssIdx);
8985
8986 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8987
8988 wpalMutexRelease(&pWDICtx->wptMutex);
8989
8990 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008992
Jeff Johnson295189b2012-06-20 16:38:30 -07008993 /*-----------------------------------------------------------------------
8994 If we receive a Del BSS request for an association that is already in
8995 progress, it indicates that the assoc has failed => we no longer have
8996 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008997 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008998 -----------------------------------------------------------------------*/
8999 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
9000 {
9001 /*We can switch to false here because even if a subsequent Join comes in
9002 it will only be processed when DAL transitions out of BUSY state which
9003 happens when the Del BSS request comes */
9004 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9005
9006 /*Former association is complete - prepare next pending assoc for
9007 processing */
9008 WDI_DequeueAssocRequest(pWDICtx);
9009 }
9010
9011 wpalMutexRelease(&pWDICtx->wptMutex);
9012 /*-----------------------------------------------------------------------
9013 Get message buffer
9014 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009016 sizeof(halBssReqMsg.deleteBssParams),
9017 &pSendBuffer, &usDataOffset, &usSendSize))||
9018 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
9019 {
9020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009021 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
9023 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009025 }
9026
9027 /*Fill in the message request structure*/
9028
9029 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009030 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009031
Jeff Johnsone7245742012-09-05 17:12:55 -07009032 wpalMemoryCopy( pSendBuffer+usDataOffset,
9033 &halBssReqMsg.deleteBssParams,
9034 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009035
9036 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009038
Jeff Johnsone7245742012-09-05 17:12:55 -07009039
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009044 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
9045
Jeff Johnsone7245742012-09-05 17:12:55 -07009046
Jeff Johnson295189b2012-06-20 16:38:30 -07009047}/*WDI_ProcessDelBSSReq*/
9048
9049/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009050 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009051 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009052
9053 @param pWDICtx: pointer to the WLAN DAL context
9054 pEventData: pointer to the event information structure
9055
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 @see
9057 @return Result of the function call
9058*/
9059WDI_Status
9060WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009061(
Jeff Johnson295189b2012-06-20 16:38:30 -07009062 WDI_ControlBlockType* pWDICtx,
9063 WDI_EventInfoType* pEventData
9064)
9065{
9066 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9067 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009070 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009071 wpt_uint16 usDataOffset = 0;
9072 wpt_uint16 usSendSize = 0;
9073 wpt_uint16 uMsgSize = 0;
9074 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009076
Jeff Johnsone7245742012-09-05 17:12:55 -07009077 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9079
9080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009082 -------------------------------------------------------------------------*/
9083 if (( NULL == pEventData ) ||
9084 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9085 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9086 {
9087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009091 }
9092
9093 /*-------------------------------------------------------------------------
9094 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 -------------------------------------------------------------------------*/
9097 wpalMutexAcquire(&pWDICtx->wptMutex);
9098
9099 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009100 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009101 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009102 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9103 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9104 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009105
9106 if ( NULL == pBSSSes )
9107 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9109 "%s: Association sequence for this BSS does not yet exist - "
9110 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9111 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009112
9113 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009115 }
9116
9117 /*------------------------------------------------------------------------
9118 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 ------------------------------------------------------------------------*/
9121 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9122 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9124 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9125 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009126
Jeff Johnsone7245742012-09-05 17:12:55 -07009127 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009128
9129 wpalMutexRelease(&pWDICtx->wptMutex);
9130
Jeff Johnsone7245742012-09-05 17:12:55 -07009131 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009132 }
9133
9134 /*-----------------------------------------------------------------------
9135 If Post Assoc was not yet received - the current association must
9136 be in progress
9137 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009138 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009139 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9140 {
9141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9142 "Association sequence for this BSS association no longer in "
9143 "progress - not allowed");
9144
9145 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009146 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009147 }
9148
9149 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009150 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 -----------------------------------------------------------------------*/
9152 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9153 {
9154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9155 "Post Assoc not allowed before JOIN - failing request");
9156
9157 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 }
9160
9161 wpalMutexRelease(&pWDICtx->wptMutex);
9162
9163 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9164 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9165 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009168 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009169 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9170 ( usSendSize < (usDataOffset + uMsgSize )))
9171 {
9172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009173 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009177 }
9178
9179 /*Copy the STA parameters */
9180 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9181 &pwdiPostAssocParams->wdiSTAParams );
9182
9183 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009184 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009185 WDI_STATableFindStaidByAddr(pWDICtx,
9186 pwdiPostAssocParams->wdiSTAParams.macSTA,
9187 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9188 {
9189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009190 MAC_ADDRESS_STR
9191 ": This station does not exist in the WDI Station Table",
9192 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009194 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009196 }
9197
9198 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009200 pBSSSes->ucBSSIdx;
9201
9202 /*Copy the BSS parameters */
9203 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9204 &pwdiPostAssocParams->wdiBSSParams);
9205
9206 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 WDI_STATableFindStaidByAddr(pWDICtx,
9209 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009210 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009211 {
9212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009213 MAC_ADDRESS_STR
9214 ": This station does not exist in the WDI Station Table",
9215 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009217 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009219 }
9220
9221 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009222 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 pBSSSes->ucBSSIdx;
9224
Jeff Johnsone7245742012-09-05 17:12:55 -07009225
9226 wpalMemoryCopy( pSendBuffer+usDataOffset,
9227 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9228 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009229
9230 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9231
Jeff Johnsone7245742012-09-05 17:12:55 -07009232 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9233 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9234 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009235
Jeff Johnsone7245742012-09-05 17:12:55 -07009236
Jeff Johnson295189b2012-06-20 16:38:30 -07009237 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009239
Jeff Johnsone7245742012-09-05 17:12:55 -07009240
9241 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009242 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009243 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009244
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309245 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009247 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009250 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9251
Jeff Johnsone7245742012-09-05 17:12:55 -07009252
Jeff Johnson295189b2012-06-20 16:38:30 -07009253}/*WDI_ProcessPostAssocReq*/
9254
9255/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009256 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009257 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009258
9259 @param pWDICtx: pointer to the WLAN DAL context
9260 pEventData: pointer to the event information structure
9261
Jeff Johnson295189b2012-06-20 16:38:30 -07009262 @see
9263 @return Result of the function call
9264*/
9265WDI_Status
9266WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009267(
Jeff Johnson295189b2012-06-20 16:38:30 -07009268 WDI_ControlBlockType* pWDICtx,
9269 WDI_EventInfoType* pEventData
9270)
9271{
9272 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9273 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009274 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 wpt_uint16 usDataOffset = 0;
9278 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009280 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9281
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9284
9285 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009286 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009287 -------------------------------------------------------------------------*/
9288 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9289 ( NULL == pEventData->pCBfnc ))
9290 {
9291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009292 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009295 }
9296
9297 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9298 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9299 /*-------------------------------------------------------------------------
9300 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009301 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009302 -------------------------------------------------------------------------*/
9303 wpalMutexAcquire(&pWDICtx->wptMutex);
9304
9305 /*------------------------------------------------------------------------
9306 Find the BSS for which the request is made and identify WDI session
9307 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9309 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 &macBSSID))
9311 {
9312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009313 "This station does not exist in the WDI Station Table %d",
9314 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009315 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009317 }
9318
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9320 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9323 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9324 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009325
9326 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009328 }
9329
9330 /*------------------------------------------------------------------------
9331 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009333 ------------------------------------------------------------------------*/
9334 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9335 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9337 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9338 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009339
Jeff Johnsone7245742012-09-05 17:12:55 -07009340 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009341 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009342 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009343 }
9344
9345 wpalMutexRelease(&pWDICtx->wptMutex);
9346 /*-----------------------------------------------------------------------
9347 Get message buffer
9348 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 sizeof(halDelStaReqMsg.delStaParams),
9351 &pSendBuffer, &usDataOffset, &usSendSize))||
9352 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9353 {
9354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009355 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009359 }
9360
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9362 wpalMemoryCopy( pSendBuffer+usDataOffset,
9363 &halDelStaReqMsg.delStaParams,
9364 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009365
9366 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009367 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009368
9369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9374
9375}/*WDI_ProcessDelSTAReq*/
9376
9377
9378/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009380==========================================================================*/
9381/**
9382 @brief Process Set BSS Key Request function (called when Main FSM
9383 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009384
9385 @param pWDICtx: pointer to the WLAN DAL context
9386 pEventData: pointer to the event information structure
9387
Jeff Johnson295189b2012-06-20 16:38:30 -07009388 @see
9389 @return Result of the function call
9390*/
9391WDI_Status
9392WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009393(
Jeff Johnson295189b2012-06-20 16:38:30 -07009394 WDI_ControlBlockType* pWDICtx,
9395 WDI_EventInfoType* pEventData
9396)
9397{
9398 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9399 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009400 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009401 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009403 wpt_uint16 usDataOffset = 0;
9404 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009405 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009406 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9407 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309408 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009409
9410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9411
9412 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009413 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009414 -------------------------------------------------------------------------*/
9415 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9416 ( NULL == pEventData->pCBfnc ))
9417 {
9418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009419 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009422 }
9423
9424 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9425 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9426 /*-------------------------------------------------------------------------
9427 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009428 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009429 -------------------------------------------------------------------------*/
9430 wpalMutexAcquire(&pWDICtx->wptMutex);
9431
9432 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009433 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009434 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009435 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9436 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9437 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009438
Jeff Johnsone7245742012-09-05 17:12:55 -07009439 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 {
9441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009442 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9443 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009444
9445 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009446 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009447 }
9448
9449 /*------------------------------------------------------------------------
9450 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009451 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009452 ------------------------------------------------------------------------*/
9453 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9454 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9456 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9457 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009458
Jeff Johnsone7245742012-09-05 17:12:55 -07009459 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009461 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009462 }
9463
9464
9465 wpalMutexRelease(&pWDICtx->wptMutex);
9466 /*-----------------------------------------------------------------------
9467 Get message buffer
9468 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009470 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9471 &pSendBuffer, &usDataOffset, &usSendSize))||
9472 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9473 {
9474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009475 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 }
9480
9481 /*-----------------------------------------------------------------------
9482 Copy the Key parameters into the HAL message
9483 -----------------------------------------------------------------------*/
9484
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009486
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9489
Jeff Johnsone7245742012-09-05 17:12:55 -07009490 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009491 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9492
9493 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9494 keyIndex++)
9495 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009496 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009497 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9498 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9499 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9500 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9501 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309502
9503 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9504 {
9505 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9506 {
9507 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9508 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9509 }
9510
9511 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9512 {
9513 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9514 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9515 }
9516
9517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9518 "%s: Negated Keys", __func__);
9519 }
9520 else
9521 {
9522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9523 "%s: No change in Keys", __func__);
9524 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009526 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309527 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9528 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9529 WDI_MAX_KEY_LENGTH);
9530 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009533 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009534 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309535 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009536
9537 wpalMemoryCopy( pSendBuffer+usDataOffset,
9538 &halSetBssKeyReqMsg.setBssKeyParams,
9539 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009540
9541 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009542 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009543
9544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009545 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009547 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9548 wdiSetBSSKeyRspCb, pEventData->pUserData,
9549 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009550
9551}/*WDI_ProcessSetBssKeyReq*/
9552
9553/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009554 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009555 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009556
9557 @param pWDICtx: pointer to the WLAN DAL context
9558 pEventData: pointer to the event information structure
9559
Jeff Johnson295189b2012-06-20 16:38:30 -07009560 @see
9561 @return Result of the function call
9562*/
9563WDI_Status
9564WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009565(
Jeff Johnson295189b2012-06-20 16:38:30 -07009566 WDI_ControlBlockType* pWDICtx,
9567 WDI_EventInfoType* pEventData
9568)
9569{
9570 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9571 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009574 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009575 wpt_uint16 usDataOffset = 0;
9576 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009577 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009578 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9580
9581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009582 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009583 -------------------------------------------------------------------------*/
9584 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9585 ( NULL == pEventData->pCBfnc ))
9586 {
9587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009588 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009591 }
9592
9593 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9594 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9595 /*-------------------------------------------------------------------------
9596 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009597 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009598 -------------------------------------------------------------------------*/
9599 wpalMutexAcquire(&pWDICtx->wptMutex);
9600
9601 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009602 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009603 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9605 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9606 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009607
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009609 {
9610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009611 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9612 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009613
9614 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009615 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009616 }
9617
9618 /*------------------------------------------------------------------------
9619 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009620 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009621 ------------------------------------------------------------------------*/
9622 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9623 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9625 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9626 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009627
Jeff Johnsone7245742012-09-05 17:12:55 -07009628 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009630 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009631 }
9632
9633
9634 wpalMutexRelease(&pWDICtx->wptMutex);
9635
9636 /*-----------------------------------------------------------------------
9637 Get message buffer
9638 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009639 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009640 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9641 &pSendBuffer, &usDataOffset, &usSendSize))||
9642 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9643 {
9644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009645 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009646 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009649 }
9650 /*-----------------------------------------------------------------------
9651 Copy the Key parameters into the HAL message
9652 -----------------------------------------------------------------------*/
9653 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9654
Jeff Johnsone7245742012-09-05 17:12:55 -07009655 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009656 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9657
9658 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9659
Jeff Johnsone7245742012-09-05 17:12:55 -07009660 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009661 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9662
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 wpalMemoryCopy( pSendBuffer+usDataOffset,
9664 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9665 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009666
9667 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009668 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009669
9670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009673 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009674 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009675 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009676}/*WDI_ProcessRemoveBssKeyReq*/
9677
9678/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009680 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009681
9682 @param pWDICtx: pointer to the WLAN DAL context
9683 pEventData: pointer to the event information structure
9684
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 @see
9686 @return Result of the function call
9687*/
9688WDI_Status
9689WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009690(
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 WDI_ControlBlockType* pWDICtx,
9692 WDI_EventInfoType* pEventData
9693)
9694{
9695 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9696 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9697 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 wpt_uint16 usDataOffset = 0;
9700 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009701 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9705 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309706 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009707
9708 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9709
9710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009711 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009712 -------------------------------------------------------------------------*/
9713 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9714 ( NULL == pEventData->pCBfnc ))
9715 {
9716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009717 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009718 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009720 }
9721
9722 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9723 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9724 /*-------------------------------------------------------------------------
9725 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009727 -------------------------------------------------------------------------*/
9728 wpalMutexAcquire(&pWDICtx->wptMutex);
9729
9730 /*------------------------------------------------------------------------
9731 Find the BSS for which the request is made and identify WDI session
9732 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009733 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9734 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009735 &macBSSID))
9736 {
9737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009738 "This station does not exist in the WDI Station Table %d",
9739 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009740 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009742 }
9743
Jeff Johnsone7245742012-09-05 17:12:55 -07009744 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9745 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009746 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9748 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9749 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009750
9751 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009752 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009753 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009754
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 /*------------------------------------------------------------------------
9756 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009758 ------------------------------------------------------------------------*/
9759 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9760 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9762 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9763 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009764
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009767 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009768 }
9769
9770
9771 wpalMutexRelease(&pWDICtx->wptMutex);
9772 /*-----------------------------------------------------------------------
9773 Get message buffer
9774 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9777 &pSendBuffer, &usDataOffset, &usSendSize))||
9778 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9779 {
9780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009781 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009782 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9783 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009784 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009785 }
9786 /*-----------------------------------------------------------------------
9787 Copy the STA Key parameters into the HAL message
9788 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009789 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009790 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9791
Jeff Johnsone7245742012-09-05 17:12:55 -07009792 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009793 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9794
9795 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9796
9797 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9798
9799 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9800
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9802 keyIndex++)
9803 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009804 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009805 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9806 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9807 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9808 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9809 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309810
9811 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9812 {
9813 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9814 {
9815 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9816 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9817 }
9818
9819 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9820 {
9821 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9822 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9823 }
9824
9825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9826 "%s: Negated Keys", __func__);
9827 }
9828 else
9829 {
9830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9831 "%s: No change in Keys", __func__);
9832 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009833 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009834 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309835 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9836 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9837 WDI_MAX_KEY_LENGTH);
9838 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009841 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009842 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309843 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009844
Jeff Johnsone7245742012-09-05 17:12:55 -07009845 wpalMemoryCopy( pSendBuffer+usDataOffset,
9846 &halSetStaKeyReqMsg.setStaKeyParams,
9847 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009848
9849 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009850 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309851 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009853 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009854 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009855 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9856 wdiSetSTAKeyRspCb, pEventData->pUserData,
9857 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009858
9859}/*WDI_ProcessSetSTAKeyReq*/
9860
9861/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009864
9865 @param pWDICtx: pointer to the WLAN DAL context
9866 pEventData: pointer to the event information structure
9867
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 @see
9869 @return Result of the function call
9870*/
9871WDI_Status
9872WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009873(
Jeff Johnson295189b2012-06-20 16:38:30 -07009874 WDI_ControlBlockType* pWDICtx,
9875 WDI_EventInfoType* pEventData
9876)
9877{
9878 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9879 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9880 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009882 wpt_uint16 usDataOffset = 0;
9883 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009884 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009885 wpt_macAddr macBSSID;
9886 wpt_uint8 ucCurrentBSSSesIdx;
9887 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9889
9890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009891 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009892 -------------------------------------------------------------------------*/
9893 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9894 ( NULL == pEventData->pCBfnc ))
9895 {
9896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009897 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009898 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009900 }
9901
9902 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9903 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9904 /*-------------------------------------------------------------------------
9905 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009906 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009907 -------------------------------------------------------------------------*/
9908 wpalMutexAcquire(&pWDICtx->wptMutex);
9909
9910 /*------------------------------------------------------------------------
9911 Find the BSS for which the request is made and identify WDI session
9912 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009913 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9914 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 &macBSSID))
9916 {
9917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009918 "This station does not exist in the WDI Station Table %d",
9919 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009920 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 }
9923
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9925 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9928 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9929 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009930
9931 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009932 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009933 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009934
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 /*------------------------------------------------------------------------
9936 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 ------------------------------------------------------------------------*/
9939 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9940 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9942 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9943 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009944
Jeff Johnsone7245742012-09-05 17:12:55 -07009945 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009948 }
9949
9950
9951
9952 wpalMutexRelease(&pWDICtx->wptMutex);
9953 /*-----------------------------------------------------------------------
9954 Get message buffer
9955 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009956 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009957 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9958 &pSendBuffer, &usDataOffset, &usSendSize))||
9959 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9960 {
9961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009962 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009963 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009966 }
9967
9968 /*-----------------------------------------------------------------------
9969 Copy the Key parameters into the HAL message
9970 -----------------------------------------------------------------------*/
9971
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9974
Jeff Johnsone7245742012-09-05 17:12:55 -07009975 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009976 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9977
Jeff Johnsone7245742012-09-05 17:12:55 -07009978 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009979 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9980
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9983
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 wpalMemoryCopy( pSendBuffer+usDataOffset,
9985 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9986 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009987
9988 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009989 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009990
9991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009996 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009997
9998}/*WDI_ProcessRemoveSTAKeyReq*/
9999
10000/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010001 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010002 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010003
10004 @param pWDICtx: pointer to the WLAN DAL context
10005 pEventData: pointer to the event information structure
10006
Jeff Johnson295189b2012-06-20 16:38:30 -070010007 @see
10008 @return Result of the function call
10009*/
10010WDI_Status
10011WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010012(
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 WDI_ControlBlockType* pWDICtx,
10014 WDI_EventInfoType* pEventData
10015)
10016{
10017 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10018 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10019 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 wpt_uint16 usDataOffset = 0;
10022 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010024 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010025 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010026 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10027 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010028 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010029
10030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10031
10032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010034 -------------------------------------------------------------------------*/
10035 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10036 ( NULL == pEventData->pCBfnc ))
10037 {
10038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010042 }
10043
10044 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10045 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10046 /*-------------------------------------------------------------------------
10047 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 -------------------------------------------------------------------------*/
10050 wpalMutexAcquire(&pWDICtx->wptMutex);
10051
10052 /*------------------------------------------------------------------------
10053 Find the BSS for which the request is made and identify WDI session
10054 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010055 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10056 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010057 &macBSSID))
10058 {
10059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010060 "This station does not exist in the WDI Station Table %d",
10061 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010062 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 }
10065
Jeff Johnsone7245742012-09-05 17:12:55 -070010066 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10067 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010068 {
10069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010070 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010071 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010072
10073 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010074 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010076
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 /*------------------------------------------------------------------------
10078 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010079 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010080 ------------------------------------------------------------------------*/
10081 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10082 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10084 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10085 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010086
Jeff Johnsone7245742012-09-05 17:12:55 -070010087 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010088 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010089 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010090 }
10091
10092
10093 wpalMutexRelease(&pWDICtx->wptMutex);
10094 /*-----------------------------------------------------------------------
10095 Get message buffer
10096 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010097 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010098 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10099 &pSendBuffer, &usDataOffset, &usSendSize))||
10100 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10101 {
10102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010103 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010104 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010107 }
10108 /*-----------------------------------------------------------------------
10109 Copy the STA Key parameters into the HAL message
10110 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10113
Jeff Johnsone7245742012-09-05 17:12:55 -070010114 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010115 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10116
10117 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10118
10119 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10120
10121 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10122
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10124 keyIndex++)
10125 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010126 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010127 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10128 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10129 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10130 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10131 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010132
10133 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10134 {
10135 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10136 {
10137 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10138 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10139 }
10140
10141 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10142 {
10143 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10144 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10145 }
10146
10147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10148 "%s: Negated Keys", __func__);
10149 }
10150 else
10151 {
10152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10153 "%s: No change in Keys", __func__);
10154 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010155 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010156 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010157 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10158 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10159 WDI_MAX_KEY_LENGTH);
10160 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010165 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 wpalMemoryCopy( pSendBuffer+usDataOffset,
10167 &halSetStaKeyReqMsg.setStaKeyParams,
10168 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010169
10170 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010171 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010172
10173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010174 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010175 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10177 wdiSetSTAKeyRspCb, pEventData->pUserData,
10178 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010179
10180}/*WDI_ProcessSetSTABcastKeyReq*/
10181
10182/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010183 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010184 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010185
10186 @param pWDICtx: pointer to the WLAN DAL context
10187 pEventData: pointer to the event information structure
10188
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 @see
10190 @return Result of the function call
10191*/
10192WDI_Status
10193WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010194(
Jeff Johnson295189b2012-06-20 16:38:30 -070010195 WDI_ControlBlockType* pWDICtx,
10196 WDI_EventInfoType* pEventData
10197)
10198{
10199 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10200 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10201 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 wpt_uint16 usDataOffset = 0;
10204 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 wpt_macAddr macBSSID;
10207 wpt_uint8 ucCurrentBSSSesIdx;
10208 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10210
10211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010212 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010213 -------------------------------------------------------------------------*/
10214 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10215 ( NULL == pEventData->pCBfnc ))
10216 {
10217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010218 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010221 }
10222
10223 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10224 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10225 /*-------------------------------------------------------------------------
10226 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010227 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010228 -------------------------------------------------------------------------*/
10229 wpalMutexAcquire(&pWDICtx->wptMutex);
10230
10231 /*------------------------------------------------------------------------
10232 Find the BSS for which the request is made and identify WDI session
10233 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010234 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10235 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 &macBSSID))
10237 {
10238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010239 "This station does not exist in the WDI Station Table %d",
10240 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010241 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010243 }
10244
Jeff Johnsone7245742012-09-05 17:12:55 -070010245 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10246 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10249 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10250 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010251
10252 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010253 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010254 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010255
Jeff Johnson295189b2012-06-20 16:38:30 -070010256 /*------------------------------------------------------------------------
10257 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010258 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010259 ------------------------------------------------------------------------*/
10260 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10261 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10263 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10264 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010265
Jeff Johnsone7245742012-09-05 17:12:55 -070010266 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010267 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010268 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010269 }
10270
10271
10272
10273 wpalMutexRelease(&pWDICtx->wptMutex);
10274 /*-----------------------------------------------------------------------
10275 Get message buffer
10276 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010277 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10279 &pSendBuffer, &usDataOffset, &usSendSize))||
10280 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10281 {
10282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010283 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010284 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010287 }
10288
10289 /*-----------------------------------------------------------------------
10290 Copy the Key parameters into the HAL message
10291 -----------------------------------------------------------------------*/
10292
Jeff Johnsone7245742012-09-05 17:12:55 -070010293 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010294 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10295
Jeff Johnsone7245742012-09-05 17:12:55 -070010296 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10298
Jeff Johnsone7245742012-09-05 17:12:55 -070010299 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010300 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10301
Jeff Johnsone7245742012-09-05 17:12:55 -070010302 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010303 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10304
Jeff Johnsone7245742012-09-05 17:12:55 -070010305 wpalMemoryCopy( pSendBuffer+usDataOffset,
10306 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10307 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010308
10309 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010310 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010311
10312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010313 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010314 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010315 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010316 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010317 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010318
10319}/*WDI_ProcessRemoveSTABcastKeyReq*/
10320
10321/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010322 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010323==========================================================================*/
10324/**
10325 @brief Process Add TSpec Request function (called when Main FSM
10326 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010327
10328 @param pWDICtx: pointer to the WLAN DAL context
10329 pEventData: pointer to the event information structure
10330
Jeff Johnson295189b2012-06-20 16:38:30 -070010331 @see
10332 @return Result of the function call
10333*/
10334WDI_Status
10335WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010336(
Jeff Johnson295189b2012-06-20 16:38:30 -070010337 WDI_ControlBlockType* pWDICtx,
10338 WDI_EventInfoType* pEventData
10339)
10340{
10341 WDI_AddTSReqParamsType* pwdiAddTSParams;
10342 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010343 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010344 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010345 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010346 wpt_uint16 usDataOffset = 0;
10347 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010349 wpt_macAddr macBSSID;
10350 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010351
Jeff Johnson295189b2012-06-20 16:38:30 -070010352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10353
10354 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010355 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010356 -------------------------------------------------------------------------*/
10357 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10358 ( NULL == pEventData->pCBfnc ))
10359 {
10360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010361 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010362 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010364 }
10365
10366 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10367 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10368 /*-------------------------------------------------------------------------
10369 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010370 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010371 -------------------------------------------------------------------------*/
10372 wpalMutexAcquire(&pWDICtx->wptMutex);
10373
10374 /*------------------------------------------------------------------------
10375 Find the BSS for which the request is made and identify WDI session
10376 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010377 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10378 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010379 &macBSSID))
10380 {
10381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010382 "This station does not exist in the WDI Station Table %d",
10383 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 }
10387
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10389 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010390 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10392 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10393 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010394
10395 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010396 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010397 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010398
Jeff Johnson295189b2012-06-20 16:38:30 -070010399 /*------------------------------------------------------------------------
10400 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010401 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010402 ------------------------------------------------------------------------*/
10403 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10404 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10406 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10407 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010408
Jeff Johnsone7245742012-09-05 17:12:55 -070010409 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010410 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010411 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 }
10413
10414 wpalMutexRelease(&pWDICtx->wptMutex);
10415 /*-----------------------------------------------------------------------
10416 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010417 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010418 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10420 sizeof(halAddTsParams),
10421 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010422 &usSendSize))||
10423 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10424 {
10425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010426 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010427 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010430 }
10431
10432 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10433 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10434
10435 //TSPEC IE
10436 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10437 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010438 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010439 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010440 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010441 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010442 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010443 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010444 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010445 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010446 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010448 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010449 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010452 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010454 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010455 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010456 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010457 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010461 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010462 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010463 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010464 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010465 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010466 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010467 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10468
10469 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010470 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010471 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010472 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010473 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010477 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010478 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010479 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010480 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010481 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010482 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010483 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10484
10485 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010488 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010489 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10490
Jeff Johnsone7245742012-09-05 17:12:55 -070010491 wpalMemoryCopy( pSendBuffer+usDataOffset,
10492 &halAddTsParams,
10493 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010494
10495 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010496 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010497
10498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010501 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010502 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010503 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010504}/*WDI_ProcessAddTSpecReq*/
10505
10506
10507/**
10508 @brief Process Del TSpec Request function (called when Main FSM
10509 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010510
10511 @param pWDICtx: pointer to the WLAN DAL context
10512 pEventData: pointer to the event information structure
10513
Jeff Johnson295189b2012-06-20 16:38:30 -070010514 @see
10515 @return Result of the function call
10516*/
10517WDI_Status
10518WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010519(
Jeff Johnson295189b2012-06-20 16:38:30 -070010520 WDI_ControlBlockType* pWDICtx,
10521 WDI_EventInfoType* pEventData
10522)
10523{
10524 WDI_DelTSReqParamsType* pwdiDelTSParams;
10525 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010526 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010528 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010529 wpt_uint16 usDataOffset = 0;
10530 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010531 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10533
10534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010536 -------------------------------------------------------------------------*/
10537 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10538 ( NULL == pEventData->pCBfnc ))
10539 {
10540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010544 }
10545
10546 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10547 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10548
10549 /*-------------------------------------------------------------------------
10550 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010551 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010552 -------------------------------------------------------------------------*/
10553 wpalMutexAcquire(&pWDICtx->wptMutex);
10554
10555 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010557 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010558 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10559 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10560 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010561
Jeff Johnsone7245742012-09-05 17:12:55 -070010562 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010563 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10565 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10566 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10567
Jeff Johnson295189b2012-06-20 16:38:30 -070010568 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010569 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 }
10571
10572 /*------------------------------------------------------------------------
10573 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010574 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010575 ------------------------------------------------------------------------*/
10576 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10577 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10579 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10580 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010581
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010583 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010584 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010585 }
10586
10587
10588 wpalMutexRelease(&pWDICtx->wptMutex);
10589 /*-----------------------------------------------------------------------
10590 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010591 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010592 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010593 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010594 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10595 &pSendBuffer, &usDataOffset, &usSendSize))||
10596 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10597 {
10598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010599 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010600 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010603 }
10604
Jeff Johnsone7245742012-09-05 17:12:55 -070010605 wpalMemoryCopy( pSendBuffer+usDataOffset,
10606 &pwdiDelTSParams->wdiDelTSInfo,
10607 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010608
10609 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010610 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010611
10612 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010613 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010614 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010615 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10616 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010617}/*WDI_ProcessDelTSpecReq*/
10618
10619/**
10620 @brief Process Update EDCA Params Request function (called when
10621 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010622
10623 @param pWDICtx: pointer to the WLAN DAL context
10624 pEventData: pointer to the event information structure
10625
Jeff Johnson295189b2012-06-20 16:38:30 -070010626 @see
10627 @return Result of the function call
10628*/
10629WDI_Status
10630WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010631(
Jeff Johnson295189b2012-06-20 16:38:30 -070010632 WDI_ControlBlockType* pWDICtx,
10633 WDI_EventInfoType* pEventData
10634)
10635{
10636 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10637 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010638 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010639 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010640 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010641 wpt_uint16 usDataOffset = 0;
10642 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010643 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10645
10646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010648 -------------------------------------------------------------------------*/
10649 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10650 ( NULL == pEventData->pCBfnc ))
10651 {
10652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010656 }
10657
10658 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10659 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10660 /*-------------------------------------------------------------------------
10661 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010662 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010663 -------------------------------------------------------------------------*/
10664 wpalMutexAcquire(&pWDICtx->wptMutex);
10665
10666 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010668 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010669 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10670 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10671 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010672
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010674 {
10675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010676 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10677 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010678
10679 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010681 }
10682
10683 /*------------------------------------------------------------------------
10684 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010685 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010686 ------------------------------------------------------------------------*/
10687 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10688 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10690 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10691 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010692
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010694 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010695 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 }
10697
10698
10699 wpalMutexRelease(&pWDICtx->wptMutex);
10700 /*-----------------------------------------------------------------------
10701 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010702 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010703 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010704 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010705 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10706 &pSendBuffer, &usDataOffset, &usSendSize))||
10707 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10708 {
10709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010710 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010711 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10712 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 }
10715
Jeff Johnsone7245742012-09-05 17:12:55 -070010716 wpalMemoryCopy( pSendBuffer+usDataOffset,
10717 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10718 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010719
10720 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010721 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010722
10723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010724 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010725 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010726 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10727 wdiUpdateEDCARspCb, pEventData->pUserData,
10728 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010729}/*WDI_ProcessUpdateEDCAParamsReq*/
10730
10731/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010734
10735 @param pWDICtx: pointer to the WLAN DAL context
10736 pEventData: pointer to the event information structure
10737
Jeff Johnson295189b2012-06-20 16:38:30 -070010738 @see
10739 @return Result of the function call
10740*/
10741WDI_Status
10742WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010743(
Jeff Johnson295189b2012-06-20 16:38:30 -070010744 WDI_ControlBlockType* pWDICtx,
10745 WDI_EventInfoType* pEventData
10746)
10747{
10748 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10749 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010750 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010751 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 wpt_uint16 usDataOffset = 0;
10754 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 wpt_macAddr macBSSID;
10757
10758 tAddBASessionReqMsg halAddBASessionReq;
10759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10760
10761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010762 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010763 -------------------------------------------------------------------------*/
10764 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10765 ( NULL == pEventData->pCBfnc ))
10766 {
10767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010768 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010769 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010771 }
10772
Jeff Johnsone7245742012-09-05 17:12:55 -070010773 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010774 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010775 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010776 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10777 /*-------------------------------------------------------------------------
10778 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010779 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010780 -------------------------------------------------------------------------*/
10781 wpalMutexAcquire(&pWDICtx->wptMutex);
10782
10783 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010784 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010785 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010786 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10787 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010788 &macBSSID))
10789 {
10790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010791 "This station does not exist in the WDI Station Table %d",
10792 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010793 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010795 }
10796
10797
Jeff Johnsone7245742012-09-05 17:12:55 -070010798 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010799
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010801 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10803 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10804 __func__, MAC_ADDR_ARRAY(macBSSID));
10805
Jeff Johnson295189b2012-06-20 16:38:30 -070010806 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010807 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010808 }
10809
10810 /*------------------------------------------------------------------------
10811 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010812 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010813 ------------------------------------------------------------------------*/
10814 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10815 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10817 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10818 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010819
Jeff Johnsone7245742012-09-05 17:12:55 -070010820 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010821 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010822 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010823 }
10824
10825
10826 wpalMutexRelease(&pWDICtx->wptMutex);
10827 /*-----------------------------------------------------------------------
10828 Get message buffer
10829 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010830 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10831 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 sizeof(halAddBASessionReq.addBASessionParams),
10833 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010834 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10836 {
10837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010838 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010839 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010842 }
10843
10844 halAddBASessionReq.addBASessionParams.staIdx =
10845 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10846 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10847 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10848 WDI_MAC_ADDR_LEN);
10849 halAddBASessionReq.addBASessionParams.baTID =
10850 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10851 halAddBASessionReq.addBASessionParams.baPolicy =
10852 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10853 halAddBASessionReq.addBASessionParams.baBufferSize =
10854 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10855 halAddBASessionReq.addBASessionParams.baTimeout =
10856 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10857 halAddBASessionReq.addBASessionParams.baSSN =
10858 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10859 halAddBASessionReq.addBASessionParams.baDirection =
10860 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10861
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 wpalMemoryCopy( pSendBuffer+usDataOffset,
10863 &halAddBASessionReq.addBASessionParams,
10864 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010865
10866 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010867 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010868
10869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010870 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010871 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010872 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10873 wdiAddBASessionRspCb, pEventData->pUserData,
10874 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010875}/*WDI_ProcessAddBASessionReq*/
10876
10877/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010878 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010879 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010880
10881 @param pWDICtx: pointer to the WLAN DAL context
10882 pEventData: pointer to the event information structure
10883
Jeff Johnson295189b2012-06-20 16:38:30 -070010884 @see
10885 @return Result of the function call
10886*/
10887WDI_Status
10888WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010889(
Jeff Johnson295189b2012-06-20 16:38:30 -070010890 WDI_ControlBlockType* pWDICtx,
10891 WDI_EventInfoType* pEventData
10892)
10893{
10894 WDI_DelBAReqParamsType* pwdiDelBAParams;
10895 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010896 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010897 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010898 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 wpt_uint16 usDataOffset = 0;
10900 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010901 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010902 wpt_macAddr macBSSID;
10903 tDelBAParams halDelBAparam;
10904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10905
10906 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010907 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010908 -------------------------------------------------------------------------*/
10909 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10910 ( NULL == pEventData->pCBfnc ))
10911 {
10912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010913 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010916 }
10917
10918 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10919 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10920 /*-------------------------------------------------------------------------
10921 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 -------------------------------------------------------------------------*/
10924 wpalMutexAcquire(&pWDICtx->wptMutex);
10925
10926 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010928 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010929 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10930 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010931 &macBSSID))
10932 {
10933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010934 "This station does not exist in the WDI Station Table %d",
10935 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010936 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010938 }
10939
Jeff Johnsone7245742012-09-05 17:12:55 -070010940 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010941
Jeff Johnsone7245742012-09-05 17:12:55 -070010942 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010943 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10945 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10946 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010947
10948 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010949 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010950 }
10951
10952 /*------------------------------------------------------------------------
10953 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010954 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010955 ------------------------------------------------------------------------*/
10956 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10957 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10959 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10960 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010961
Jeff Johnsone7245742012-09-05 17:12:55 -070010962 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010963 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010964 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010965 }
10966
10967 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010968 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010969 sizeof(halDelBAparam),
10970 &pSendBuffer, &usDataOffset, &usSendSize))||
10971 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10972 {
10973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010974 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010975 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010978 }
10979
10980 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10981 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10982 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10983
Jeff Johnsone7245742012-09-05 17:12:55 -070010984 wpalMemoryCopy( pSendBuffer+usDataOffset,
10985 &halDelBAparam,
10986 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010987
10988 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010989 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010990
10991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010992 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010993 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010994 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10995 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010996}/*WDI_ProcessDelBAReq*/
10997
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010998#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010999
11000WDI_Status
11001WDI_ProcessTSMStatsReq
11002(
11003 WDI_ControlBlockType* pWDICtx,
11004 WDI_EventInfoType* pEventData
11005)
11006{
11007 WDI_TSMStatsReqParamsType* pwdiTSMParams;
11008 WDI_TsmRspCb wdiTSMRspCb;
11009 wpt_uint8 ucCurrentBSSSesIdx = 0;
11010 WDI_BSSSessionType* pBSSSes = NULL;
11011 wpt_uint8* pSendBuffer = NULL;
11012 wpt_uint16 usDataOffset = 0;
11013 wpt_uint16 usSendSize = 0;
11014 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11015 tTsmStatsParams halTsmStatsReqParams = {0};
11016
11017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11018
11019 /*-------------------------------------------------------------------------
11020 Sanity check
11021 -------------------------------------------------------------------------*/
11022 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11023 ( NULL == pEventData->pCBfnc ))
11024 {
11025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011027 WDI_ASSERT(0);
11028 return WDI_STATUS_E_FAILURE;
11029 }
11030
11031 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
11032 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
11033 /*-------------------------------------------------------------------------
11034 Check to see if we are in the middle of an association, if so queue, if
11035 not it means it is free to process request
11036 -------------------------------------------------------------------------*/
11037 wpalMutexAcquire(&pWDICtx->wptMutex);
11038
11039 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
11040 if ( NULL == pBSSSes )
11041 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11043 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11044 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011045
11046 wpalMutexRelease(&pWDICtx->wptMutex);
11047 return WDI_STATUS_E_NOT_ALLOWED;
11048 }
11049
11050 /*------------------------------------------------------------------------
11051 Check if this BSS is being currently processed or queued,
11052 if queued - queue the new request as well
11053 ------------------------------------------------------------------------*/
11054 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11055 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080011057 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011058 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011059
11060 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11061 wpalMutexRelease(&pWDICtx->wptMutex);
11062 return wdiStatus;
11063 }
11064
11065 wpalMutexRelease(&pWDICtx->wptMutex);
11066 /*-----------------------------------------------------------------------
11067 Get message buffer
11068 ! TO DO : proper conversion into the HAL Message Request Format
11069 -----------------------------------------------------------------------*/
11070 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11071 sizeof(halTsmStatsReqParams),
11072 &pSendBuffer, &usDataOffset, &usSendSize))||
11073 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11074 {
11075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011076 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011077 pEventData, pwdiTSMParams, wdiTSMRspCb);
11078 WDI_ASSERT(0);
11079 return WDI_STATUS_E_FAILURE;
11080 }
11081
11082 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11083 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11084 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11085 WDI_MAC_ADDR_LEN);
11086 wpalMemoryCopy( pSendBuffer+usDataOffset,
11087 &halTsmStatsReqParams,
11088 sizeof(halTsmStatsReqParams));
11089
11090 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11091 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11092
11093 /*-------------------------------------------------------------------------
11094 Send TSM Stats Request to HAL
11095 -------------------------------------------------------------------------*/
11096 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11097 wdiTSMRspCb, pEventData->pUserData,
11098 WDI_TSM_STATS_RESP);
11099}/*WDI_ProcessTSMStatsReq*/
11100
11101#endif
11102
11103
11104/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011105 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011106 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011107
11108 @param pWDICtx: pointer to the WLAN DAL context
11109 pEventData: pointer to the event information structure
11110
Jeff Johnson295189b2012-06-20 16:38:30 -070011111 @see
11112 @return Result of the function call
11113*/
11114WDI_Status
11115WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011116(
Jeff Johnson295189b2012-06-20 16:38:30 -070011117 WDI_ControlBlockType* pWDICtx,
11118 WDI_EventInfoType* pEventData
11119)
11120{
11121 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11122 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011123 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011124 wpt_uint16 usDataOffset = 0;
11125 wpt_uint16 usSendSize = 0;
11126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11127
11128 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011129 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011130 -------------------------------------------------------------------------*/
11131 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11132 ( NULL == pEventData->pCBfnc ))
11133 {
11134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011135 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011138 }
11139
11140 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11141 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11142 /*-----------------------------------------------------------------------
11143 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011144 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011145 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011146 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011147 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11148 &pSendBuffer, &usDataOffset, &usSendSize))||
11149 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11150 {
11151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011152 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011153 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011156 }
11157
Jeff Johnsone7245742012-09-05 17:12:55 -070011158 wpalMemoryCopy( pSendBuffer+usDataOffset,
11159 &pwdiFlushAcParams->wdiFlushAcInfo,
11160 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011161
11162 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011163 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011164
11165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011166 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11169 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011170}/*WDI_ProcessFlushAcReq*/
11171
11172/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011173 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011174 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011175
11176 @param pWDICtx: pointer to the WLAN DAL context
11177 pEventData: pointer to the event information structure
11178
Jeff Johnson295189b2012-06-20 16:38:30 -070011179 @see
11180 @return Result of the function call
11181*/
11182WDI_Status
11183WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011184(
Jeff Johnson295189b2012-06-20 16:38:30 -070011185 WDI_ControlBlockType* pWDICtx,
11186 WDI_EventInfoType* pEventData
11187)
11188{
11189 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11190 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011191 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011192 wpt_uint16 usDataOffset = 0;
11193 wpt_uint16 usSendSize = 0;
11194
11195 tBtAmpEventMsg haltBtAmpEventMsg;
11196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11197
11198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011199 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011200 -------------------------------------------------------------------------*/
11201 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11202 ( NULL == pEventData->pCBfnc ))
11203 {
11204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011205 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011207 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011208 }
11209
11210 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11211 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11212 /*-----------------------------------------------------------------------
11213 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011214 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011215 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011216 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011217 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11218 &pSendBuffer, &usDataOffset, &usSendSize))||
11219 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11220 {
11221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011222 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011223 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011226 }
11227
Jeff Johnsone7245742012-09-05 17:12:55 -070011228 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011229 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011230 wpalMemoryCopy( pSendBuffer+usDataOffset,
11231 &haltBtAmpEventMsg.btAmpEventParams,
11232 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011233
11234 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011235 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011236
11237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011238 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011239 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011240 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11241 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011242}/*WDI_ProcessBtAmpEventReq*/
11243
11244/**
11245 @brief Process Add STA self Request function (called when Main FSM
11246 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011247
11248 @param pWDICtx: pointer to the WLAN DAL context
11249 pEventData: pointer to the event information structure
11250
Jeff Johnson295189b2012-06-20 16:38:30 -070011251 @see
11252 @return Result of the function call
11253*/
11254WDI_Status
11255WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011256(
Jeff Johnson295189b2012-06-20 16:38:30 -070011257 WDI_ControlBlockType* pWDICtx,
11258 WDI_EventInfoType* pEventData
11259)
11260{
11261 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11262 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011263 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011264 wpt_uint16 usDataOffset = 0;
11265 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011266 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11268
11269 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011270 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011271 -------------------------------------------------------------------------*/
11272 if (( NULL == pEventData ) ||
11273 ( NULL == pEventData->pEventData) ||
11274 ( NULL == pEventData->pCBfnc))
11275 {
11276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011280 }
11281
Jeff Johnsone7245742012-09-05 17:12:55 -070011282 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011283 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011284 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011285 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11286 /*-----------------------------------------------------------------------
11287 Get message buffer
11288 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011289 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11290 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011291 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011292 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011293 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011294 {
11295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011296 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011297 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011300 }
11301
11302 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011303 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011304 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11305
Jeff Johnsone7245742012-09-05 17:12:55 -070011306 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011307 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11308 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11309 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11310 {
11311 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11312 }
11313 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11314 VOS_P2P_CLIENT_MODE) ||
11315 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11316 VOS_P2P_DEVICE))
11317 {
11318 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11319 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011320 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011321 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011322
11323 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011325
11326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011327 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011328 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011329 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11330 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11331 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011332}/*WDI_ProcessAddSTASelfReq*/
11333
11334
11335
11336/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011338 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011339
11340 @param pWDICtx: pointer to the WLAN DAL context
11341 pEventData: pointer to the event information structure
11342
Jeff Johnson295189b2012-06-20 16:38:30 -070011343 @see
11344 @return Result of the function call
11345*/
11346WDI_Status
11347WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011348(
Jeff Johnson295189b2012-06-20 16:38:30 -070011349 WDI_ControlBlockType* pWDICtx,
11350 WDI_EventInfoType* pEventData
11351)
11352{
11353 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11354 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011355 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011356 wpt_uint16 usDataOffset = 0;
11357 wpt_uint16 usSendSize = 0;
11358 tDelStaSelfParams halSetDelSelfSTAParams;
11359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11360
11361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011363 -------------------------------------------------------------------------*/
11364 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11365 ( NULL == pEventData->pCBfnc ))
11366 {
11367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011371 }
11372
Jeff Johnsone7245742012-09-05 17:12:55 -070011373 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011374 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11375 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11376
11377 /*-----------------------------------------------------------------------
11378 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011380 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011381 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011382 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11383 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011384 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011385 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11386 {
11387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011388 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011389 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011392 }
11393
Jeff Johnsone7245742012-09-05 17:12:55 -070011394 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011395 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11396
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11398 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011399
11400 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011401 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011402
11403 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011404 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011405 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011406 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11407 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011408 WDI_DEL_STA_SELF_RESP);
11409
11410}
11411
Jeff Johnsone7245742012-09-05 17:12:55 -070011412#ifdef FEATURE_OEM_DATA_SUPPORT
11413/**
11414 @brief Process Start Oem Data Request function (called when Main
11415 FSM allows it)
11416
11417 @param pWDICtx: pointer to the WLAN DAL context
11418 pEventData: pointer to the event information structure
11419
11420 @see
11421 @return Result of the function call
11422*/
11423WDI_Status
11424WDI_ProcessStartOemDataReq
11425(
11426 WDI_ControlBlockType* pWDICtx,
11427 WDI_EventInfoType* pEventData
11428)
11429{
11430 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11431 WDI_oemDataRspCb wdiOemDataRspCb;
11432 wpt_uint8* pSendBuffer = NULL;
11433 wpt_uint16 usDataOffset = 0;
11434 wpt_uint16 usSendSize = 0;
11435 wpt_uint16 reqLen;
11436 tStartOemDataReqParams* halStartOemDataReqParams;
11437
11438 /*-------------------------------------------------------------------------
11439 Sanity check
11440 -------------------------------------------------------------------------*/
11441 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11442 ( NULL == pEventData->pCBfnc ))
11443 {
11444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011445 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011446 WDI_ASSERT(0);
11447 return WDI_STATUS_E_FAILURE;
11448 }
11449
11450 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11451 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11452
11453 /*-----------------------------------------------------------------------
11454 Get message buffer
11455 -----------------------------------------------------------------------*/
11456
11457 reqLen = sizeof(tStartOemDataReqParams);
11458
11459 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11460 WDI_START_OEM_DATA_REQ, reqLen,
11461 &pSendBuffer, &usDataOffset, &usSendSize))||
11462 (usSendSize < (usDataOffset + reqLen)))
11463 {
11464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011465 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011466 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11467 WDI_ASSERT(0);
11468 return WDI_STATUS_E_FAILURE;
11469 }
11470
11471 //copying WDI OEM DATA REQ PARAMS to shared memory
11472 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11473
11474 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11475 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11476
11477 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11478 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11479
11480 /*-------------------------------------------------------------------------
11481 Send Start Request to HAL
11482 -------------------------------------------------------------------------*/
11483 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11484 wdiOemDataRspCb, pEventData->pUserData,
11485 WDI_START_OEM_DATA_RESP);
11486}/*WDI_ProcessStartOemDataReq*/
11487#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011488
11489/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011490 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011491 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011492
11493 @param pWDICtx: pointer to the WLAN DAL context
11494 pEventData: pointer to the event information structure
11495
Jeff Johnson295189b2012-06-20 16:38:30 -070011496 @see
11497 @return Result of the function call
11498*/
11499WDI_Status
11500WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011501(
Jeff Johnson295189b2012-06-20 16:38:30 -070011502 WDI_ControlBlockType* pWDICtx,
11503 WDI_EventInfoType* pEventData
11504)
11505{
11506 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11507 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011509 wpt_uint16 usDataOffset = 0;
11510 wpt_uint16 usSendSize = 0;
11511 tHalWlanHostResumeReqParam halResumeReqParams;
11512
11513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11514
11515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011516 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011517 -------------------------------------------------------------------------*/
11518 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11519 ( NULL == pEventData->pCBfnc ))
11520 {
11521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011522 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011525 }
11526
11527 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11528 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11529
11530 /*-----------------------------------------------------------------------
11531 Get message buffer
11532 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011533 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011534 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11535 &pSendBuffer, &usDataOffset, &usSendSize))||
11536 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11537 {
11538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011539 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011543 }
11544
Jeff Johnsone7245742012-09-05 17:12:55 -070011545 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011546 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011547
11548 wpalMemoryCopy( pSendBuffer+usDataOffset,
11549 &halResumeReqParams,
11550 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011551
11552 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011553 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011554
11555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011556 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011557 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011558 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11559 wdiHostResumeRspCb, pEventData->pUserData,
11560 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011561}/*WDI_ProcessHostResumeReq*/
11562
11563/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011564 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011565 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011566
11567 @param pWDICtx: pointer to the WLAN DAL context
11568 pEventData: pointer to the event information structure
11569
Jeff Johnson295189b2012-06-20 16:38:30 -070011570 @see
11571 @return Result of the function call
11572*/
11573WDI_Status
11574WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011575(
Jeff Johnson295189b2012-06-20 16:38:30 -070011576 WDI_ControlBlockType* pWDICtx,
11577 WDI_EventInfoType* pEventData
11578)
11579{
11580 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11581 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011582 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011583 wpt_uint16 usDataOffset = 0;
11584 wpt_uint16 usSendSize = 0;
11585 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11587
11588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011589 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011590 -------------------------------------------------------------------------*/
11591 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11592 ( NULL == pEventData->pCBfnc ))
11593 {
11594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011595 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011598 }
11599
11600 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11601 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011602
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 /*-----------------------------------------------------------------------
11604 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011605 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011608 sizeof(halTxPerTrackingReqParam),
11609 &pSendBuffer, &usDataOffset, &usSendSize))||
11610 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11611 {
11612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011613 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011614 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011617 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011618
Jeff Johnson295189b2012-06-20 16:38:30 -070011619 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11620 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11621 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11622 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011623
11624 wpalMemoryCopy( pSendBuffer+usDataOffset,
11625 &halTxPerTrackingReqParam,
11626 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011627
11628 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011629 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011630
11631 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011632 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011633 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11635 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011636}/*WDI_ProcessSetTxPerTrackingReq*/
11637
11638/*=========================================================================
11639 Indications
11640=========================================================================*/
11641
11642/**
11643 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011644
11645 @param pWDICtx: pointer to the WLAN DAL context
11646 pEventData: pointer to the event information structure
11647
Jeff Johnson295189b2012-06-20 16:38:30 -070011648 @see
11649 @return Result of the function call
11650*/
11651WDI_Status
11652WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011653(
Jeff Johnson295189b2012-06-20 16:38:30 -070011654 WDI_ControlBlockType* pWDICtx,
11655 WDI_EventInfoType* pEventData
11656)
11657{
11658 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011659 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011660 wpt_uint16 usDataOffset = 0;
11661 wpt_uint16 usSendSize = 0;
11662 WDI_Status wdiStatus;
11663 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11665
11666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011668 -------------------------------------------------------------------------*/
11669 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11670 {
11671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011672 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011675 }
11676
11677 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11678
11679 /*-----------------------------------------------------------------------
11680 Get message buffer
11681 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011682 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11683 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011684 sizeof(halWlanSuspendIndparams),
11685 &pSendBuffer, &usDataOffset, &usSendSize))||
11686 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11687 {
11688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11689 "Unable to get send buffer in Suspend Ind ");
11690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011692 }
11693
11694 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11695 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11696
Jeff Johnsone7245742012-09-05 17:12:55 -070011697 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011698 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011699
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11701 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011702
11703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011704 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011705 -------------------------------------------------------------------------*/
11706 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011707 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011708
Jeff Johnsone7245742012-09-05 17:12:55 -070011709 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011710 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11711}/*WDI_ProcessHostSuspendInd*/
11712
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011713
11714
11715/**
11716 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11717
11718 @param pWDICtx: pointer to the WLAN DAL context
11719 pEventData: pointer to the event information structure
11720
11721 @see
11722 @return Result of the function call
11723*/
11724WDI_Status
11725WDI_ProcessTrafficStatsInd
11726(
11727 WDI_ControlBlockType* pWDICtx,
11728 WDI_EventInfoType* pEventData
11729)
11730{
11731 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11732 wpt_uint8* pSendBuffer = NULL;
11733 wpt_uint16 usDataOffset = 0;
11734 wpt_uint16 usSendSize = 0;
11735 WDI_Status wdiStatus;
11736 tStatsClassBIndParams* pStatsClassBIndParams;
11737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11738
11739 /*-------------------------------------------------------------------------
11740 Sanity check
11741 -------------------------------------------------------------------------*/
11742 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11743 {
11744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11745 "%s: Invalid parameters in Traffic Stats ind",__func__);
11746 WDI_ASSERT(0);
11747 return WDI_STATUS_E_FAILURE;
11748 }
11749
11750 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11751
11752 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11753 {
11754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11755 "%s: Invalid parameters in Traffic Stats ind",__func__);
11756 WDI_ASSERT(0);
11757 return WDI_STATUS_E_FAILURE;
11758 }
11759
11760 /*-----------------------------------------------------------------------
11761 Get message buffer
11762 -----------------------------------------------------------------------*/
11763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11764 WDI_TRAFFIC_STATS_IND,
11765 sizeof(tStatsClassBIndParams),
11766 &pSendBuffer, &usDataOffset, &usSendSize))||
11767 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11768 {
11769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11770 "Unable to get send buffer in Traffic Stats Ind ");
11771 WDI_ASSERT(0);
11772 return WDI_STATUS_E_FAILURE;
11773 }
11774
11775 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11776
11777 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11778
11779 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11780 pTrafficStatsIndParams->pTrafficStats,
11781 pTrafficStatsIndParams->length);
11782
11783 /*-------------------------------------------------------------------------
11784 Send Suspend Request to HAL
11785 -------------------------------------------------------------------------*/
11786 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11787 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11788
11789 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11790 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11791}/*WDI_ProcessTrafficStatsInd*/
11792
Chet Lanctot186b5732013-03-18 10:26:30 -070011793#ifdef WLAN_FEATURE_11W
11794/**
11795 @brief Process Exclude Unencrypted Indications function (called
11796 when Main FSM allows it)
11797
11798 @param pWDICtx: pointer to the WLAN DAL context
11799 pEventData: pointer to the event information structure
11800
11801 @see
11802 @return Result of the function call
11803*/
11804WDI_Status
11805WDI_ProcessExcludeUnencryptInd
11806(
11807 WDI_ControlBlockType* pWDICtx,
11808 WDI_EventInfoType* pEventData
11809)
11810{
11811 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11812 wpt_uint8* pSendBuffer = NULL;
11813 wpt_uint16 usDataOffset = 0;
11814 wpt_uint16 usSendSize = 0;
11815 WDI_Status wdiStatus;
11816 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11818
11819 /*-------------------------------------------------------------------------
11820 Sanity check
11821 -------------------------------------------------------------------------*/
11822 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11823 {
11824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11825 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11826 WDI_ASSERT(0);
11827 return WDI_STATUS_E_FAILURE;
11828 }
11829
11830 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11831
11832 /*-----------------------------------------------------------------------
11833 Get message buffer
11834 -----------------------------------------------------------------------*/
11835 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11836 WDI_EXCLUDE_UNENCRYPTED_IND,
11837 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11838 &pSendBuffer, &usDataOffset, &usSendSize))||
11839 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11840 {
11841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11842 "Unable to get send buffer in Exclude Unencrypted Ind ");
11843 WDI_ASSERT(0);
11844 return WDI_STATUS_E_FAILURE;
11845 }
11846
11847 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11848
11849 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11850
11851 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11852 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11853
11854 /*-------------------------------------------------------------------------
11855 Send Suspend Request to HAL
11856 -------------------------------------------------------------------------*/
11857 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11858 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11859
11860 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11861 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11862}/*WDI_ProcessExcludeUnencryptInd*/
11863#endif
11864
Yue Mab9c86f42013-08-14 15:59:08 -070011865/**
11866 @brief Process Add Periodic Tx Pattern Indication function (called when
11867 Main FSM allows it)
11868
11869 @param pWDICtx: pointer to the WLAN DAL context
11870 pEventData: pointer to the event information structure
11871
11872 @see
11873 @return Result of the function call
11874*/
11875WDI_Status
11876WDI_ProcessAddPeriodicTxPtrnInd
11877(
11878 WDI_ControlBlockType* pWDICtx,
11879 WDI_EventInfoType* pEventData
11880)
11881{
11882 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11883 wpt_uint8* pSendBuffer = NULL;
11884 wpt_uint16 usDataOffset = 0;
11885 wpt_uint16 usSendSize = 0;
11886 WDI_Status wdiStatus;
11887 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11888 wpt_uint8 selfStaIdx = 0;
11889
11890 /*-------------------------------------------------------------------------
11891 Sanity check
11892 -------------------------------------------------------------------------*/
11893 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11894 {
11895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11896 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11897 WDI_ASSERT(0);
11898 return WDI_STATUS_E_FAILURE;
11899 }
11900
11901 pAddPeriodicTxPtrnParams =
11902 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11903
11904 /*------------------------------------------------------------------------
11905 Get message buffer
11906 ------------------------------------------------------------------------*/
11907 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11908 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11909 &pSendBuffer, &usDataOffset, &usSendSize))||
11910 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11911 {
11912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11913 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11914 __func__);
11915 WDI_ASSERT(0);
11916 return WDI_STATUS_E_FAILURE;
11917 }
11918
11919 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11920
11921 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11922 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11923 &selfStaIdx))
11924 {
11925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11926 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011927 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011928
11929 return WDI_STATUS_E_FAILURE;
11930 }
11931
11932 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11933 halAddPeriodicTxPtrn->ucPtrnId =
11934 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11935 halAddPeriodicTxPtrn->usPtrnSize =
11936 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11937 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11938 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11939
11940 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11941 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11942 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11943
11944 /*-------------------------------------------------------------------------
11945 Send Indication to HAL
11946 -------------------------------------------------------------------------*/
11947 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11948 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11949
11950 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11951
11952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11953 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11954
11955 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11956} /* WDI_ProcessAddPeriodicTxPtrnInd */
11957
11958/**
11959 @brief Process Delete Periodic Tx Pattern Indication function (called when
11960 Main FSM allows it)
11961
11962 @param pWDICtx: pointer to the WLAN DAL context
11963 pEventData: pointer to the event information structure
11964
11965 @see
11966 @return Result of the function call
11967*/
11968WDI_Status
11969WDI_ProcessDelPeriodicTxPtrnInd
11970(
11971 WDI_ControlBlockType* pWDICtx,
11972 WDI_EventInfoType* pEventData
11973)
11974{
11975 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11976 wpt_uint8* pSendBuffer = NULL;
11977 wpt_uint16 usDataOffset = 0;
11978 wpt_uint16 usSendSize = 0;
11979 WDI_Status wdiStatus;
11980 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11981 wpt_uint8 selfStaIdx = 0;
11982
11983 /*-------------------------------------------------------------------------
11984 Sanity check
11985 -------------------------------------------------------------------------*/
11986 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11987 {
11988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11989 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11990 WDI_ASSERT(0);
11991 return WDI_STATUS_E_FAILURE;
11992 }
11993
11994 pDelPeriodicTxPtrnParams =
11995 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11996
11997 /*------------------------------------------------------------------------
11998 Get message buffer
11999 ------------------------------------------------------------------------*/
12000 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12001 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
12002 &pSendBuffer, &usDataOffset, &usSendSize))||
12003 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12004 {
12005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12006 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12007 __func__);
12008 WDI_ASSERT(0);
12009 return WDI_STATUS_E_FAILURE;
12010 }
12011
12012 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12013
12014 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12015 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12016 &selfStaIdx))
12017 {
12018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12019 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012020 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012021
12022 return WDI_STATUS_E_FAILURE;
12023 }
12024
12025 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12026 halDelPeriodicTxPtrn->uPatternIdBitmap =
12027 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12028
12029 /*-------------------------------------------------------------------------
12030 Send Indication to HAL
12031 -------------------------------------------------------------------------*/
12032 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12033 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12034
12035 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12036
12037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12038 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12039
12040 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12041} /* WDI_ProcessDelPeriodicTxPtrnInd */
12042
Jeff Johnson295189b2012-06-20 16:38:30 -070012043/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012044 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012045==========================================================================*/
12046/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012049
12050 @param pWDICtx: pointer to the WLAN DAL context
12051 pEventData: pointer to the event information structure
12052
Jeff Johnson295189b2012-06-20 16:38:30 -070012053 @see
12054 @return Result of the function call
12055*/
12056WDI_Status
12057WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012058(
Jeff Johnson295189b2012-06-20 16:38:30 -070012059 WDI_ControlBlockType* pWDICtx,
12060 WDI_EventInfoType* pEventData
12061)
12062{
12063 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
12064 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012065 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012066 wpt_uint16 usDataOffset = 0;
12067 wpt_uint16 usSendSize = 0;
12068 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12070
12071 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012072 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012073 -------------------------------------------------------------------------*/
12074 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12075 ( NULL == pEventData->pCBfnc ))
12076 {
12077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012078 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012081 }
12082
12083 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12084 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12085 /*-----------------------------------------------------------------------
12086 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012087 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012088 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012089 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012090 sizeof(halSwitchChannelReq.switchChannelParams),
12091 &pSendBuffer, &usDataOffset, &usSendSize))||
12092 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12093 {
12094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012095 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012096 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 }
12100
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012102 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012103#ifndef WLAN_FEATURE_VOWIFI
12104 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12106#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012107 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012108 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12109
12110#ifdef WLAN_FEATURE_VOWIFI
12111 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012112 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012113 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12114 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12115 WDI_MAC_ADDR_LEN);
12116 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12117 pwdiSwitchChParams->wdiChInfo.macBSSId,
12118 WDI_MAC_ADDR_LEN);
12119#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012120 wpalMemoryCopy( pSendBuffer+usDataOffset,
12121 &halSwitchChannelReq.switchChannelParams,
12122 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012123
12124 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012126
12127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012128 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012129 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012130 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12131 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012132}/*WDI_ProcessChannelSwitchReq*/
12133
12134/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012135 @brief Process Channel Switch Request function (called when
12136 Main FSM allows it)
12137
12138 @param pWDICtx: pointer to the WLAN DAL context
12139 pEventData: pointer to the event information structure
12140
12141 @see
12142 @return Result of the function call
12143*/
12144WDI_Status WDI_ProcessChannelSwitchReq_V1
12145(
12146 WDI_ControlBlockType* pWDICtx,
12147 WDI_EventInfoType* pEventData
12148)
12149{
12150 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12151 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12152 wpt_uint8* pSendBuffer = NULL;
12153 wpt_uint16 usDataOffset = 0;
12154 wpt_uint16 usSendSize = 0;
12155 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12157
12158 /*-------------------------------------------------------------------------
12159 Sanity check
12160 -------------------------------------------------------------------------*/
12161 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12162 ( NULL == pEventData->pCBfnc ))
12163 {
12164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12165 "%s: Invalid parameters", __func__);
12166 WDI_ASSERT(0);
12167 return WDI_STATUS_E_FAILURE;
12168 }
12169
12170 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12171 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12172 /*-----------------------------------------------------------------------
12173 Get message buffer
12174 ! TO DO : proper conversion into the HAL Message Request Format
12175 -----------------------------------------------------------------------*/
12176 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12177 WDI_CH_SWITCH_REQ_V1,
12178 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12179 &pSendBuffer, &usDataOffset, &usSendSize))||
12180 ( usSendSize < (usDataOffset +
12181 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12182 {
12183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12184 "Unable to get send buffer in channel switch req %p %p %p",
12185 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12186 WDI_ASSERT(0);
12187 return WDI_STATUS_E_FAILURE;
12188 }
12189
12190 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12191 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12192
12193 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12194 pwdiSwitchChParams->wdiChInfo.ucChannel;
12195#ifndef WLAN_FEATURE_VOWIFI
12196 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12197 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12198#endif
12199 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12200 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12201
12202#ifdef WLAN_FEATURE_VOWIFI
12203 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12204 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12205 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12206 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12207 WDI_MAC_ADDR_LEN);
12208 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12209 pwdiSwitchChParams->wdiChInfo.macBSSId,
12210 WDI_MAC_ADDR_LEN);
12211#endif
12212 wpalMemoryCopy( pSendBuffer+usDataOffset,
12213 &halSwitchChannelReq.switchChannelParams_V1,
12214 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12215
12216 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12217 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12218
12219 /*-------------------------------------------------------------------------
12220 Send Switch Channel Request to HAL
12221 -------------------------------------------------------------------------*/
12222 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12223 wdiSwitchChRspCb, pEventData->pUserData,
12224 WDI_CH_SWITCH_RESP_V1);
12225}/*WDI_ProcessChannelSwitchReq_V1*/
12226
12227/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012228 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012229 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012230
12231 @param pWDICtx: pointer to the WLAN DAL context
12232 pEventData: pointer to the event information structure
12233
Jeff Johnson295189b2012-06-20 16:38:30 -070012234 @see
12235 @return Result of the function call
12236*/
12237WDI_Status
12238WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012239(
Jeff Johnson295189b2012-06-20 16:38:30 -070012240 WDI_ControlBlockType* pWDICtx,
12241 WDI_EventInfoType* pEventData
12242)
12243{
12244 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12245 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012246 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012247 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012248 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012249 wpt_uint16 usDataOffset = 0;
12250 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012251 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012252
Jeff Johnsone7245742012-09-05 17:12:55 -070012253 tConfigStaReqMsg halConfigStaReqMsg;
12254 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12256
12257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012259 -------------------------------------------------------------------------*/
12260 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12261 ( NULL == pEventData->pCBfnc ))
12262 {
12263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012264 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012265 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012267 }
12268
Abhishek Singh6927fa02014-06-27 17:19:55 +053012269 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012270 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12271 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12272 /*-------------------------------------------------------------------------
12273 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012274 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012275 -------------------------------------------------------------------------*/
12276 wpalMutexAcquire(&pWDICtx->wptMutex);
12277
12278 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012279 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012280 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012281 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12282 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12283 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012284
Jeff Johnsone7245742012-09-05 17:12:55 -070012285 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012286 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12288 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12289 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012290
12291 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012292 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012293 }
12294
12295 /*------------------------------------------------------------------------
12296 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012298 ------------------------------------------------------------------------*/
12299 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12300 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12302 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12303 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012304
Jeff Johnsone7245742012-09-05 17:12:55 -070012305 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012307 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 }
12309
12310 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012311
12312 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12313#ifdef WLAN_FEATURE_11AC
12314 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012315 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012316 else
12317#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012318 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012319
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 /*-----------------------------------------------------------------------
12321 Get message buffer
12322 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12324 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012325 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012326 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012327 {
12328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012329 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 }
12334
12335 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012336 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012337 &pwdiConfigSTAParams->wdiReqInfo);
12338
12339 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12340 {
12341 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012342 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012343 WDI_STATableFindStaidByAddr(pWDICtx,
12344 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012345 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012346 {
12347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012348 MAC_ADDRESS_STR
12349 ": This station does not exist in the WDI Station Table",
12350 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012351 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012352 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012354 }
12355 }
12356 else
12357 {
12358 /* Need to fill in the STA Index to invalid, since at this point we have not
12359 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012360 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012361 }
12362
12363 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012364 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012365
Jeff Johnsone7245742012-09-05 17:12:55 -070012366 wpalMemoryCopy( pSendBuffer+usDataOffset,
12367 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012368 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012369
12370 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012371 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012372
Jeff Johnsone7245742012-09-05 17:12:55 -070012373 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12374 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012375 sizeof(pWDICtx->wdiCachedConfigStaReq));
12376
12377 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012378 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012379 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012380 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12381 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012382}/*WDI_ProcessConfigStaReq*/
12383
12384
12385/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012386 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012387 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012388
12389 @param pWDICtx: pointer to the WLAN DAL context
12390 pEventData: pointer to the event information structure
12391
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 @see
12393 @return Result of the function call
12394*/
12395WDI_Status
12396WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012397(
Jeff Johnson295189b2012-06-20 16:38:30 -070012398 WDI_ControlBlockType* pWDICtx,
12399 WDI_EventInfoType* pEventData
12400)
12401{
12402 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12403 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012404 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012405 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012406 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012407 wpt_uint16 usDataOffset = 0;
12408 wpt_uint16 usSendSize = 0;
12409 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012410 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012411 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12412
12413 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012414 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012415 -------------------------------------------------------------------------*/
12416 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12417 ( NULL == pEventData->pCBfnc ))
12418 {
12419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012420 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012421 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 }
12424
12425 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12426 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12427 /*-------------------------------------------------------------------------
12428 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 -------------------------------------------------------------------------*/
12431 wpalMutexAcquire(&pWDICtx->wptMutex);
12432
12433 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012434 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012435 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012436 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12437 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12438 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012439
Jeff Johnsone7245742012-09-05 17:12:55 -070012440 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012441 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012443 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12444 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012445 }
12446 else
12447 {
12448 /*------------------------------------------------------------------------
12449 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012450 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012451 ------------------------------------------------------------------------*/
12452 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12453 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12455 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12456 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12457
12458 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012460 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012461 }
12462 }
12463 /* If the link is set to enter IDLE - the Session allocated for this BSS
12464 will be deleted on the Set Link State response coming from HAL
12465 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012466 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012467 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12468
12469 wpalMutexRelease(&pWDICtx->wptMutex);
12470 /*-----------------------------------------------------------------------
12471 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012472 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012474
12475 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012476 sizeof(halLinkStateReqMsg),
12477 &pSendBuffer, &usDataOffset, &usSendSize))||
12478 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12479 {
12480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012481 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012485 }
12486
12487 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12488 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12489
12490 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12491 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12492
Jeff Johnsone7245742012-09-05 17:12:55 -070012493 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012494 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12495
Jeff Johnsone7245742012-09-05 17:12:55 -070012496 wpalMemoryCopy( pSendBuffer+usDataOffset,
12497 &halLinkStateReqMsg,
12498 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012499
12500 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012502
12503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012504 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012505 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012506 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12507 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012508}/*WDI_ProcessSetLinkStateReq*/
12509
12510
12511/**
12512 @brief Process Get Stats Request function (called when Main FSM
12513 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012514
12515 @param pWDICtx: pointer to the WLAN DAL context
12516 pEventData: pointer to the event information structure
12517
Jeff Johnson295189b2012-06-20 16:38:30 -070012518 @see
12519 @return Result of the function call
12520*/
12521WDI_Status
12522WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012523(
Jeff Johnson295189b2012-06-20 16:38:30 -070012524 WDI_ControlBlockType* pWDICtx,
12525 WDI_EventInfoType* pEventData
12526)
12527{
12528 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12529 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 wpt_uint16 usDataOffset = 0;
12532 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012534 WDI_BSSSessionType* pBSSSes = NULL;
12535 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012536 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012537 tHalStatsReqMsg halStatsReqMsg;
12538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12539
12540 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012541 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012542 -------------------------------------------------------------------------*/
12543 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12544 ( NULL == pEventData->pCBfnc ) )
12545 {
12546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012547 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012548 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
12552 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12553 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12554
12555 /*-------------------------------------------------------------------------
12556 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012557 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012558 -------------------------------------------------------------------------*/
12559 wpalMutexAcquire(&pWDICtx->wptMutex);
12560
12561 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012562 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012563 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12565 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012566 &macBSSID))
12567 {
12568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012569 "This station does not exist in the WDI Station Table %d",
12570 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012571 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012573 }
12574
Jeff Johnsone7245742012-09-05 17:12:55 -070012575 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12576 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12579 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12580 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012581
12582 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012583 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012584 }
12585
12586 /*------------------------------------------------------------------------
12587 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012588 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012589 ------------------------------------------------------------------------*/
12590 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12591 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12593 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12594 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012595
Jeff Johnsone7245742012-09-05 17:12:55 -070012596 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012597 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012598 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012599 }
12600
12601
12602 wpalMutexRelease(&pWDICtx->wptMutex);
12603
12604 /*-----------------------------------------------------------------------
12605 Get message buffer
12606 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012607 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012608 sizeof(halStatsReqMsg.statsReqParams),
12609 &pSendBuffer, &usDataOffset, &usSendSize))||
12610 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12611 {
12612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012613 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012614 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 }
12618
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012621 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012622 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012623 wpalMemoryCopy( pSendBuffer+usDataOffset,
12624 &halStatsReqMsg.statsReqParams,
12625 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012626
12627 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012628 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012629
12630 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012631 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012632 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012633 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12634 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012635}/*WDI_ProcessGetStatsReq*/
12636
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012637#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012638/**
12639 @brief Process Get Roam Rssi Request function (called when Main FSM
12640 allows it)
12641
12642 @param pWDICtx: pointer to the WLAN DAL context
12643 pEventData: pointer to the event information structure
12644
12645 @see
12646 @return Result of the function call
12647*/
12648WDI_Status
12649WDI_ProcessGetRoamRssiReq
12650(
12651 WDI_ControlBlockType* pWDICtx,
12652 WDI_EventInfoType* pEventData
12653)
12654{
12655 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12656 WDI_GetStatsRspCb wdiGetStatsRspCb;
12657 wpt_uint8* pSendBuffer = NULL;
12658 wpt_uint16 usDataOffset = 0;
12659 wpt_uint16 usSendSize = 0;
12660 wpt_uint8 ucCurrentBSSSesIdx = 0;
12661 WDI_BSSSessionType* pBSSSes = NULL;
12662 wpt_macAddr macBSSID;
12663 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12664 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12666 /*-------------------------------------------------------------------------
12667 Sanity check
12668 -------------------------------------------------------------------------*/
12669 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12670 ( NULL == pEventData->pCBfnc ) )
12671 {
12672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12673 "%s: Invalid parameters", __func__);
12674 WDI_ASSERT(0);
12675 return WDI_STATUS_E_FAILURE;
12676 }
12677
12678 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12679 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12680
12681 /*-------------------------------------------------------------------------
12682 Check to see if we are in the middle of an association, if so queue, if
12683 not it means it is free to process request
12684 -------------------------------------------------------------------------*/
12685 wpalMutexAcquire(&pWDICtx->wptMutex);
12686
12687 /*------------------------------------------------------------------------
12688 Find the BSS for which the request is made
12689 ------------------------------------------------------------------------*/
12690 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12691 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12692 &macBSSID))
12693 {
12694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012695 "This station does not exist in the WDI Station Table %d",
12696 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012697 wpalMutexRelease(&pWDICtx->wptMutex);
12698 return WDI_STATUS_E_FAILURE;
12699 }
12700
12701 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12702 if ( NULL == pBSSSes )
12703 {
12704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12705 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12706 __func__, MAC_ADDR_ARRAY(macBSSID));
12707
12708 wpalMutexRelease(&pWDICtx->wptMutex);
12709 return WDI_STATUS_E_NOT_ALLOWED;
12710 }
12711
12712 /*------------------------------------------------------------------------
12713 Check if this BSS is being currently processed or queued,
12714 if queued - queue the new request as well
12715 ------------------------------------------------------------------------*/
12716 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12717 {
12718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12719 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12720 __func__, MAC_ADDR_ARRAY(macBSSID));
12721
12722 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12723 wpalMutexRelease(&pWDICtx->wptMutex);
12724 return wdiStatus;
12725 }
12726
12727 wpalMutexRelease(&pWDICtx->wptMutex);
12728
12729 /*-----------------------------------------------------------------------
12730 Get message buffer
12731 -----------------------------------------------------------------------*/
12732 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12733 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12734 &pSendBuffer, &usDataOffset, &usSendSize))||
12735 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12736 {
12737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012738 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012739 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12740 WDI_ASSERT(0);
12741 return WDI_STATUS_E_FAILURE;
12742 }
12743
12744 halRssiRoamReqMsg.roamRssiReqParams.staId =
12745 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12746 wpalMemoryCopy( pSendBuffer+usDataOffset,
12747 &halRssiRoamReqMsg.roamRssiReqParams,
12748 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12749
12750 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12751 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12752
12753 /*-------------------------------------------------------------------------
12754 Send Get STA Request to HAL
12755 -------------------------------------------------------------------------*/
12756 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12757 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12758}/*WDI_ProcessGetRoamRssiReq*/
12759#endif
12760
Jeff Johnson295189b2012-06-20 16:38:30 -070012761/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012762 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012763 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012764
12765 @param pWDICtx: pointer to the WLAN DAL context
12766 pEventData: pointer to the event information structure
12767
Jeff Johnson295189b2012-06-20 16:38:30 -070012768 @see
12769 @return Result of the function call
12770*/
12771WDI_Status
12772WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012773(
Jeff Johnson295189b2012-06-20 16:38:30 -070012774 WDI_ControlBlockType* pWDICtx,
12775 WDI_EventInfoType* pEventData
12776)
12777{
12778 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12779 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12780
Jeff Johnsone7245742012-09-05 17:12:55 -070012781 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 wpt_uint16 usDataOffset = 0;
12783 wpt_uint16 usSendSize = 0;
12784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12785
12786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012788 -------------------------------------------------------------------------*/
12789 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12790 ( NULL == pEventData->pCBfnc))
12791 {
12792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012796 }
12797
12798 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12799 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12800
12801 /*-----------------------------------------------------------------------
12802 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012804 -----------------------------------------------------------------------*/
12805
Jeff Johnsone7245742012-09-05 17:12:55 -070012806 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012807 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12808 &pSendBuffer, &usDataOffset, &usSendSize))||
12809 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12810 {
12811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012812 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012816 }
12817
Jeff Johnsone7245742012-09-05 17:12:55 -070012818 wpalMemoryCopy( pSendBuffer+usDataOffset,
12819 &pwdiUpdateCfgParams->uConfigBufferLen,
12820 sizeof(wpt_uint32));
12821 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12822 pwdiUpdateCfgParams->pConfigBuffer,
12823 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012824
12825 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012826 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012827
12828 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012829 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012830 -------------------------------------------------------------------------*/
12831
Jeff Johnsone7245742012-09-05 17:12:55 -070012832 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12833 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012834
12835}/*WDI_ProcessUpdateCfgReq*/
12836
12837
12838/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012839 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012840 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012841
12842 @param pWDICtx: pointer to the WLAN DAL context
12843 pEventData: pointer to the event information structure
12844
Jeff Johnson295189b2012-06-20 16:38:30 -070012845 @see
12846 @return Result of the function call
12847*/
12848WDI_Status
12849WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012850(
Jeff Johnson295189b2012-06-20 16:38:30 -070012851 WDI_ControlBlockType* pWDICtx,
12852 WDI_EventInfoType* pEventData
12853)
12854{
12855 WDI_AddBAReqParamsType* pwdiAddBAParams;
12856 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012857 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012858 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012859 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012860 wpt_uint16 usDataOffset = 0;
12861 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012862 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012863 wpt_macAddr macBSSID;
12864
12865 tAddBAReqMsg halAddBAReq;
12866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12867
12868 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012869 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012870 -------------------------------------------------------------------------*/
12871 if (( NULL == pEventData ) ||
12872 ( NULL == pEventData->pEventData) ||
12873 ( NULL == pEventData->pCBfnc ))
12874 {
12875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012877 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
12881 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12882 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12883
12884 /*-------------------------------------------------------------------------
12885 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012886 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012887 -------------------------------------------------------------------------*/
12888 wpalMutexAcquire(&pWDICtx->wptMutex);
12889
12890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012891 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012893 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12894 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012895 &macBSSID))
12896 {
12897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012898 "This station does not exist in the WDI Station Table %d",
12899 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012900 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 }
12903
Jeff Johnsone7245742012-09-05 17:12:55 -070012904 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12905 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012906 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12908 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12909 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012910
12911 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012912 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 }
12914
12915 /*------------------------------------------------------------------------
12916 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012918 ------------------------------------------------------------------------*/
12919 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12920 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12922 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12923 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012924
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012926 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012927 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012928 }
12929
12930
12931 wpalMutexRelease(&pWDICtx->wptMutex);
12932 /*-----------------------------------------------------------------------
12933 Get message buffer
12934 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012936 sizeof(halAddBAReq.addBAParams),
12937 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012938 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012939 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12940 {
12941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012942 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012943 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012946 }
12947
Jeff Johnsone7245742012-09-05 17:12:55 -070012948 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012949 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12950 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12951#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012952 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012953 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12954#endif
12955
Jeff Johnsone7245742012-09-05 17:12:55 -070012956 wpalMemoryCopy( pSendBuffer+usDataOffset,
12957 &halAddBAReq.addBAParams,
12958 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012959
12960 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012961 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012962
12963 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012964 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012965 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012966 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12967 wdiAddBARspCb, pEventData->pUserData,
12968 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012969}/*WDI_ProcessAddBAReq*/
12970
12971
12972
12973/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012974 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012975 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012976
12977 @param pWDICtx: pointer to the WLAN DAL context
12978 pEventData: pointer to the event information structure
12979
Jeff Johnson295189b2012-06-20 16:38:30 -070012980 @see
12981 @return Result of the function call
12982*/
12983WDI_Status
12984WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012985(
Jeff Johnson295189b2012-06-20 16:38:30 -070012986 WDI_ControlBlockType* pWDICtx,
12987 WDI_EventInfoType* pEventData
12988)
12989{
12990 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12991 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012992 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012993 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012994 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012995 wpt_uint16 usDataOffset = 0;
12996 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012997 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012998 wpt_uint16 index;
12999 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013000
Jeff Johnson295189b2012-06-20 16:38:30 -070013001 tTriggerBAReqMsg halTriggerBAReq;
13002 tTriggerBaReqCandidate* halTriggerBACandidate;
13003 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13005
13006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013008 -------------------------------------------------------------------------*/
13009 if (( NULL == pEventData ) ||
13010 ( NULL == pEventData->pEventData ) ||
13011 ( NULL == pEventData->pCBfnc ))
13012 {
13013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013017 }
13018
13019 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13020 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13021 /*-------------------------------------------------------------------------
13022 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013023 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013024 -------------------------------------------------------------------------*/
13025 wpalMutexAcquire(&pWDICtx->wptMutex);
13026
13027 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013028 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013029 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013030 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13031 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013032 &macBSSID))
13033 {
13034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013035 "This station does not exist in the WDI Station Table %d",
13036 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013037 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013038 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013039 }
13040
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13042 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013043 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13045 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13046 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013047
13048 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013049 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 }
13051
13052 /*------------------------------------------------------------------------
13053 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013054 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013055 ------------------------------------------------------------------------*/
13056 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13057 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13059 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13060 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013061
Jeff Johnsone7245742012-09-05 17:12:55 -070013062 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013063 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013064 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013065 }
13066
13067
13068 wpalMutexRelease(&pWDICtx->wptMutex);
13069 /*-----------------------------------------------------------------------
13070 Get message buffer
13071 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013072 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13073 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013074 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013075 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13077 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013078 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013080 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013081 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13082 {
13083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013084 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013088 }
13089
Jeff Johnsone7245742012-09-05 17:12:55 -070013090 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013091 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013092 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013093 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13094
Jeff Johnsone7245742012-09-05 17:12:55 -070013095 wpalMemoryCopy( pSendBuffer+usDataOffset,
13096 &halTriggerBAReq.triggerBAParams,
13097 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013098
Jeff Johnsone7245742012-09-05 17:12:55 -070013099 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013100 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13101 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13102 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013103
13104 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013105 index++)
13106 {
13107 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13108 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13109 halTriggerBACandidate++;
13110 wdiTriggerBACandidate++;
13111 }
13112
13113 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013114 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013115
13116 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013117 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013118 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013119 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13120 wdiTriggerBARspCb, pEventData->pUserData,
13121 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013122}/*WDI_ProcessTriggerBAReq*/
13123
13124
13125
13126/**
13127 @brief Process Update Beacon Params Request function (called when Main FSM
13128 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013129
13130 @param pWDICtx: pointer to the WLAN DAL context
13131 pEventData: pointer to the event information structure
13132
Jeff Johnson295189b2012-06-20 16:38:30 -070013133 @see
13134 @return Result of the function call
13135*/
13136WDI_Status
13137WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013138(
Jeff Johnson295189b2012-06-20 16:38:30 -070013139 WDI_ControlBlockType* pWDICtx,
13140 WDI_EventInfoType* pEventData
13141)
13142{
13143 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13144 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013145 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013146 wpt_uint16 usDataOffset = 0;
13147 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013148 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13150
13151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013152 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013153 -------------------------------------------------------------------------*/
13154 if (( NULL == pEventData ) ||
13155 ( NULL == pEventData->pEventData) ||
13156 ( NULL == pEventData->pCBfnc))
13157 {
13158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013159 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013162 }
13163
13164 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13165 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13166 /*-----------------------------------------------------------------------
13167 Get message buffer
13168 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013169 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013170 sizeof(halUpdateBeaconParams),
13171 &pSendBuffer, &usDataOffset, &usSendSize))||
13172 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13173 {
13174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013175 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013176 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013179 }
13180
13181 /*BSS Index of the BSS*/
13182 halUpdateBeaconParams.bssIdx =
13183 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13184 /*shortPreamble mode. HAL should update all the STA rates when it
13185 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013186 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013187 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13188 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013189 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013190 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13191 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013192 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013193 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13194
13195 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013196 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013197 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013198 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013199 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013200 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013201 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013202 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013203 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013204 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013205 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013206 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013207 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13208 halUpdateBeaconParams.fRIFSMode =
13209 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013210 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13212
Jeff Johnsone7245742012-09-05 17:12:55 -070013213 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13214 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013215
13216 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013218
13219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013220 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013221 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013222 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13223 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013224}/*WDI_ProcessUpdateBeaconParamsReq*/
13225
13226
13227
13228/**
13229 @brief Process Send Beacon template Request function (called when Main FSM
13230 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013231
13232 @param pWDICtx: pointer to the WLAN DAL context
13233 pEventData: pointer to the event information structure
13234
Jeff Johnson295189b2012-06-20 16:38:30 -070013235 @see
13236 @return Result of the function call
13237*/
13238WDI_Status
13239WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013240(
Jeff Johnson295189b2012-06-20 16:38:30 -070013241 WDI_ControlBlockType* pWDICtx,
13242 WDI_EventInfoType* pEventData
13243)
13244{
13245 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13246 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013247 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013248 wpt_uint16 usDataOffset = 0;
13249 wpt_uint16 usSendSize = 0;
13250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13251
13252 tSendBeaconReqMsg halSendBeaconReq;
13253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013254 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013255 -------------------------------------------------------------------------*/
13256 if (( NULL == pEventData ) ||
13257 ( NULL == pEventData->pEventData ) ||
13258 ( NULL == pEventData->pCBfnc ))
13259 {
13260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013261 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 }
13265
13266 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13267 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13268 /*-----------------------------------------------------------------------
13269 Get message buffer
13270 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013271 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013272 sizeof(halSendBeaconReq.sendBeaconParam),
13273 &pSendBuffer, &usDataOffset, &usSendSize))||
13274 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13275 {
13276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013277 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13279 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013281 }
13282
13283 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13284 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13285 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013286 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013287 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13288 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13289 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13290 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013291 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013292 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013293 /* usP2PIeOffset should be atleast greater than timIeOffset */
13294 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13295 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13296 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13297 {
13298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13299 "Invalid usP2PIeOffset %hu",
13300 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13301 WDI_ASSERT(0);
13302 return WDI_STATUS_E_FAILURE;
13303 }
13304
Jeff Johnsone7245742012-09-05 17:12:55 -070013305 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013306 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013307
Jeff Johnsone7245742012-09-05 17:12:55 -070013308 wpalMemoryCopy( pSendBuffer+usDataOffset,
13309 &halSendBeaconReq.sendBeaconParam,
13310 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013311
13312 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013314
13315 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013316 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013317 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013318 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13319 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013320}/*WDI_ProcessSendBeaconParamsReq*/
13321
13322/**
13323 @brief Process Update Beacon Params Request function (called when Main FSM
13324 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013325
13326 @param pWDICtx: pointer to the WLAN DAL context
13327 pEventData: pointer to the event information structure
13328
Jeff Johnson295189b2012-06-20 16:38:30 -070013329 @see
13330 @return Result of the function call
13331*/
13332WDI_Status
13333WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013334(
Jeff Johnson295189b2012-06-20 16:38:30 -070013335 WDI_ControlBlockType* pWDICtx,
13336 WDI_EventInfoType* pEventData
13337)
13338{
13339 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13340 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013341 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013342 wpt_uint16 usDataOffset = 0;
13343 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013344 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13346
13347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013349 -------------------------------------------------------------------------*/
13350 if (( NULL == pEventData ) ||
13351 ( NULL == pEventData->pEventData) ||
13352 ( NULL == pEventData->pCBfnc))
13353 {
13354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013355 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013356 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013357 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 }
13359
Jeff Johnsone7245742012-09-05 17:12:55 -070013360 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013361 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013362 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13364 /*-----------------------------------------------------------------------
13365 Get message buffer
13366 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013367 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013368 sizeof(halUpdateProbeRspTmplParams),
13369 &pSendBuffer, &usDataOffset, &usSendSize))||
13370 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13371 {
13372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013373 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13375 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 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013381 WDI_MAC_ADDR_LEN);
13382
Jeff Johnsone7245742012-09-05 17:12:55 -070013383 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13385
13386 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13387 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013388 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013389
13390
13391 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13392 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13393 WDI_PROBE_REQ_BITMAP_IE_LEN);
13394
Jeff Johnsone7245742012-09-05 17:12:55 -070013395 wpalMemoryCopy( pSendBuffer+usDataOffset,
13396 &halUpdateProbeRspTmplParams,
13397 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013398
13399 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013400 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013401
13402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013403 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013404 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013405 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13406 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13407 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013408}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13409
13410/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013411 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013412 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013413
13414 @param pWDICtx: pointer to the WLAN DAL context
13415 pEventData: pointer to the event information structure
13416
Jeff Johnson295189b2012-06-20 16:38:30 -070013417 @see
13418 @return Result of the function call
13419*/
13420WDI_Status
13421WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013422(
Jeff Johnson295189b2012-06-20 16:38:30 -070013423 WDI_ControlBlockType* pWDICtx,
13424 WDI_EventInfoType* pEventData
13425)
13426{
13427
13428 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13429 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13430
13431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013433 -------------------------------------------------------------------------*/
13434 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013435 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013436 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013437 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013438 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13439 {
13440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013444 }
13445
13446 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013447 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013448 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13449
13450 /*cache the wdi nv request message here if the the first fragment
13451 * To issue the request to HAL for the next fragment */
13452 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13453 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013454 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13455 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13457
13458 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13459 pWDICtx->pRspCBUserData = pEventData->pUserData;
13460 }
13461
13462 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13463}
13464
13465/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013466 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013467 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013468
13469 @param pWDICtx: pointer to the WLAN DAL context
13470 pEventData: pointer to the event information structure
13471
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 @see
13473 @return Result of the function call
13474*/
13475WDI_Status WDI_ProcessSetMaxTxPowerReq
13476(
13477 WDI_ControlBlockType* pWDICtx,
13478 WDI_EventInfoType* pEventData
13479)
13480{
13481 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13482 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013484 wpt_uint16 usDataOffset = 0;
13485 wpt_uint16 usSendSize = 0;
13486 tSetMaxTxPwrReq halSetMaxTxPower;
13487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13488
13489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013491 -------------------------------------------------------------------------*/
13492 if (( NULL == pEventData ) ||
13493 ( NULL == pEventData->pEventData ) ||
13494 ( NULL == pEventData->pCBfnc ))
13495 {
13496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013497 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013500 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013501 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013502 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013503 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013504 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13505
13506 /*-----------------------------------------------------------------------
13507 Get message buffer
13508 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013509if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013510 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13511 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013512 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013513)))
13514 {
13515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013516 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013520 }
13521
13522 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13523 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13524 WDI_MAC_ADDR_LEN);
13525
13526 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13527 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13528 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013529 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013531
13532 wpalMemoryCopy( pSendBuffer+usDataOffset,
13533 &halSetMaxTxPower.setMaxTxPwrParams,
13534 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013535
13536 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013537 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013538
13539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013540 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013542 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13543 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13544 WDI_SET_MAX_TX_POWER_RESP);
13545
Jeff Johnson295189b2012-06-20 16:38:30 -070013546}
13547
Arif Hussaina5ebce02013-08-09 15:09:58 -070013548/*
13549 @brief Process Set Max Tx Power Per Band Request function (called when Main
13550 FSM allows it)
13551
13552 @param pWDICtx: pointer to the WLAN DAL context
13553 pEventData: pointer to the event information structure
13554
13555 @see
13556 @return Result of the function call
13557*/
13558WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13559(
13560 WDI_ControlBlockType* pWDICtx,
13561 WDI_EventInfoType* pEventData
13562)
13563{
13564 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13565 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13566 wpt_uint8* pSendBuffer = NULL;
13567 wpt_uint16 usDataOffset = 0;
13568 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013569 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013570 WDI_Status rValue = WDI_STATUS_SUCCESS;
13571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13572
13573 /*-------------------------------------------------------------------------
13574 Sanity check
13575 -------------------------------------------------------------------------*/
13576 if (( NULL == pEventData ) ||
13577 ( NULL == pEventData->pEventData ) ||
13578 ( NULL == pEventData->pCBfnc ))
13579 {
13580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13581 "%s: Invalid parameters", __func__);
13582 WDI_ASSERT(0);
13583 return WDI_STATUS_E_FAILURE;
13584 }
13585 pwdiSetMaxTxPowerPerBandParams = \
13586 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13587
13588 wdiSetMaxTxPowerPerBandRspCb = \
13589 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13590
13591 /*-----------------------------------------------------------------------
13592 Get message buffer
13593 -----------------------------------------------------------------------*/
13594
13595 rValue = WDI_GetMessageBuffer(pWDICtx,
13596 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13597 sizeof(tSetMaxTxPwrPerBandParams),
13598 &pSendBuffer, &usDataOffset, &usSendSize);
13599
13600 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13601 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13602 {
13603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13604 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13605 pEventData, pwdiSetMaxTxPowerPerBandParams,
13606 wdiSetMaxTxPowerPerBandRspCb);
13607 WDI_ASSERT(0);
13608 return WDI_STATUS_E_FAILURE;
13609 }
13610
13611
Arif Hussainf8f080c2014-04-03 09:48:36 -070013612 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13613 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013614 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13615
Arif Hussainf8f080c2014-04-03 09:48:36 -070013616 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013617 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13618
13619 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13620 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13621
13622 /*-------------------------------------------------------------------------
13623 Send Set Max Tx Power Per Band Request to HAL
13624 -------------------------------------------------------------------------*/
13625 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13626 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13627 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13628}
13629
schang86c22c42013-03-13 18:41:24 -070013630/**
13631 @brief Process Set Tx Power Request function (called when Main
13632 FSM allows it)
13633
13634 @param pWDICtx: pointer to the WLAN DAL context
13635 pEventData: pointer to the event information structure
13636
13637 @see
13638 @return Result of the function call
13639*/
13640WDI_Status WDI_ProcessSetTxPowerReq
13641(
13642 WDI_ControlBlockType* pWDICtx,
13643 WDI_EventInfoType* pEventData
13644)
13645{
13646 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13647 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13648 wpt_uint8* pSendBuffer = NULL;
13649 wpt_uint16 usDataOffset = 0;
13650 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013651 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13653
13654 /*-------------------------------------------------------------------------
13655 Sanity check
13656 -------------------------------------------------------------------------*/
13657 if (( NULL == pEventData ) ||
13658 ( NULL == pEventData->pEventData ) ||
13659 ( NULL == pEventData->pCBfnc ))
13660 {
13661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13662 "%s: Invalid parameters", __func__);
13663 WDI_ASSERT(0);
13664 return WDI_STATUS_E_FAILURE;
13665 }
13666
13667 pwdiSetTxPowerParams =
13668 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13669 wdiSetTxPowerRspCb =
13670 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13671
13672 /*-----------------------------------------------------------------------
13673 Get message buffer
13674 -----------------------------------------------------------------------*/
13675 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13676 sizeof(tSetTxPwrReqParams),
13677 &pSendBuffer, &usDataOffset, &usSendSize))||
13678 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13679 )))
13680 {
13681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013682 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013683 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13684 WDI_ASSERT(0);
13685 return WDI_STATUS_E_FAILURE;
13686 }
13687
Leo Chang9a43db92013-03-25 17:39:58 -070013688 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13689 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13690 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013691
13692 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13693 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13694
13695 /*-------------------------------------------------------------------------
13696 Send Set Tx Power Request to HAL
13697 -------------------------------------------------------------------------*/
13698 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13699 wdiSetTxPowerRspCb, pEventData->pUserData,
13700 WDI_SET_TX_POWER_RESP);
13701}
Jeff Johnson295189b2012-06-20 16:38:30 -070013702
13703/**
13704 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13705 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013706
13707 @param pWDICtx: pointer to the WLAN DAL context
13708 pEventData: pointer to the event information structure
13709
Jeff Johnson295189b2012-06-20 16:38:30 -070013710 @see
13711 @return Result of the function call
13712*/
13713WDI_Status
13714WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013715(
Jeff Johnson295189b2012-06-20 16:38:30 -070013716 WDI_ControlBlockType* pWDICtx,
13717 WDI_EventInfoType* pEventData
13718)
13719{
13720 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13721 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013722 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013723 wpt_uint16 usDataOffset = 0;
13724 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013725 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13727
13728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013729 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013730 -------------------------------------------------------------------------*/
13731 if (( NULL == pEventData ) ||
13732 ( NULL == pEventData->pEventData) ||
13733 ( NULL == pEventData->pCBfnc))
13734 {
13735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013736 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013737 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013739 }
13740
Jeff Johnsone7245742012-09-05 17:12:55 -070013741 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013742 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013743 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013744 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13745 /*-----------------------------------------------------------------------
13746 Get message buffer
13747 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013748 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13749 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013750 sizeof(halSetP2PGONOAParams),
13751 &pSendBuffer, &usDataOffset, &usSendSize))||
13752 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13753 {
13754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013755 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013756 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13757 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 }
13760
Jeff Johnsone7245742012-09-05 17:12:55 -070013761 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013762 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13765 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013769 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013770 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013771 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013773 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13774
Jeff Johnsone7245742012-09-05 17:12:55 -070013775 wpalMemoryCopy( pSendBuffer+usDataOffset,
13776 &halSetP2PGONOAParams,
13777 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013778
13779 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013781
13782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013783 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013784 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013785 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13786 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13787 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013788}/*WDI_ProcessP2PGONOAReq*/
13789
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013790#ifdef FEATURE_WLAN_TDLS
13791
13792/**
13793 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13794 allows it)
13795
13796 @param pWDICtx: pointer to the WLAN DAL context
13797 pEventData: pointer to the event information structure
13798
13799 @see
13800 @return Result of the function call
13801*/
13802WDI_Status
13803WDI_ProcessTdlsLinkEstablishReq
13804(
13805 WDI_ControlBlockType* pWDICtx,
13806 WDI_EventInfoType* pEventData
13807)
13808{
13809 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13810 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13811 wpt_uint8* pSendBuffer = NULL;
13812 wpt_uint16 usDataOffset = 0;
13813 wpt_uint16 usSendSize = 0;
13814
13815 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13817
13818 /*-------------------------------------------------------------------------
13819 Sanity check
13820 -------------------------------------------------------------------------*/
13821 if (( NULL == pEventData ) ||
13822 ( NULL == pEventData->pEventData) ||
13823 ( NULL == pEventData->pCBfnc))
13824 {
13825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13826 "%s: Invalid parameters", __func__);
13827 WDI_ASSERT(0);
13828 return WDI_STATUS_E_FAILURE;
13829 }
13830 pwdiTDLSLinkEstablishReqParams =
13831 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13832 wdiTDLSLinkEstablishReqRspCb =
13833 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13834
13835
13836 /*-----------------------------------------------------------------------
13837 Get message buffer
13838 -----------------------------------------------------------------------*/
13839 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13840 WDI_TDLS_LINK_ESTABLISH_REQ,
13841 sizeof(halSetTDLSLinkEstablishParams),
13842 &pSendBuffer, &usDataOffset, &usSendSize))||
13843 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13844 {
13845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013846 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013847 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13848 WDI_ASSERT(0);
13849 return WDI_STATUS_E_FAILURE;
13850 }
13851
13852 halSetTDLSLinkEstablishParams.staIdx =
13853 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13854 halSetTDLSLinkEstablishParams.bIsResponder =
13855 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13856 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13857 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13858 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13859 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13860 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13861 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13862 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13863 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13864 halSetTDLSLinkEstablishParams.aAck = 0;
13865 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13866 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13867 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013868 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13869 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13870
13871 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13872 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13873 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13874 halSetTDLSLinkEstablishParams.validChannelsLen =
13875 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13876
13877 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13878 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13879 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13880 halSetTDLSLinkEstablishParams.validOperClassesLen =
13881 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013882
13883 wpalMemoryCopy( pSendBuffer+usDataOffset,
13884 &halSetTDLSLinkEstablishParams,
13885 sizeof(halSetTDLSLinkEstablishParams));
13886
13887 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13888 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13889
13890 /*-------------------------------------------------------------------------
13891 Send Update Probe Resp Template Request to HAL
13892 -------------------------------------------------------------------------*/
13893 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13894 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13895 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13896 return 0;
13897}/*WDI_ProcessTdlsLinkEstablishReq*/
13898
13899
Atul Mittalc0f739f2014-07-31 13:47:47 +053013900/**
13901 @brief sends the channel switch command to f/w (called when Main FSM
13902 allows it)
13903
13904 @param pWDICtx: pointer to the WLAN DAL context
13905 pEventData: pointer to the event information structure
13906
13907 @see
13908 @return Result of the function call
13909*/
13910WDI_Status
13911WDI_ProcessTdlsChanSwitchReq
13912(
13913 WDI_ControlBlockType* pWDICtx,
13914 WDI_EventInfoType* pEventData
13915)
13916{
13917 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13918 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13919 wpt_uint8* pSendBuffer = NULL;
13920 wpt_uint16 usDataOffset = 0;
13921 wpt_uint16 usSendSize = 0;
13922 //WDI_Status wdiStatus;
13923 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13925
13926 /*-------------------------------------------------------------------------
13927 Sanity check
13928 -------------------------------------------------------------------------*/
13929 if (( NULL == pEventData ) ||
13930 ( NULL == pEventData->pEventData))
13931 {
13932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13933 "%s: Invalid parameters", __func__);
13934 WDI_ASSERT(0);
13935 return WDI_STATUS_E_FAILURE;
13936 }
13937 pwdiTDLSChanSwitchReqParams =
13938 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13939 wdiTDLSChanSwitchReqRspCb =
13940 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13941
13942 /*-----------------------------------------------------------------------
13943 Get message buffer
13944 -----------------------------------------------------------------------*/
13945 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13946 WDI_TDLS_CHAN_SWITCH_REQ,
13947 sizeof(halSetTDLSChanSwitchParams),
13948 &pSendBuffer, &usDataOffset, &usSendSize))||
13949 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13950 {
13951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13952 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13953 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13954 WDI_ASSERT(0);
13955 return WDI_STATUS_E_FAILURE;
13956 }
13957
13958 halSetTDLSChanSwitchParams.staIdx =
13959 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13960 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13961 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13962 halSetTDLSChanSwitchParams.targetOperClass =
13963 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13964 halSetTDLSChanSwitchParams.targetChannel =
13965 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13966 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13967 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13968 wpalMemoryCopy( pSendBuffer+usDataOffset,
13969 &halSetTDLSChanSwitchParams,
13970 sizeof(halSetTDLSChanSwitchParams));
13971
13972 pWDICtx->wdiReqStatusCB = NULL;
13973 pWDICtx->pReqStatusUserData = NULL;
13974
13975 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13976 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13977 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13978}/*WDI_ProcessTdlsChanSwitchReq*/
13979
13980#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013981
Jeff Johnson295189b2012-06-20 16:38:30 -070013982
13983
13984/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013985 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 @param None
13988
13989 @see
13990 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013991*/
13992void
13993WDI_SetPowerStateCb
13994(
13995 wpt_status status,
13996 unsigned int dxePhyAddr,
13997 void *pContext
13998)
13999{
14000 wpt_status wptStatus;
14001 WDI_ControlBlockType *pCB = NULL;
14002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 /*
14004 * Trigger the event to bring the Enter BMPS req function to come
14005 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014006*/
14007 if( NULL != pContext )
14008 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014009 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014010 }
14011 else
14012 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014013 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014014 pCB = &gWDICb;
14015 }
Mihir Shetea4306052014-03-25 00:02:54 +053014016
14017 if(eWLAN_PAL_STATUS_SUCCESS == status )
14018 {
14019 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
14020 }
14021 else
14022 {
14023 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
14024 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 pCB->dxePhyAddr = dxePhyAddr;
14026 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
14027 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14028 {
14029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14030 "Failed to set an event");
14031
Jeff Johnsone7245742012-09-05 17:12:55 -070014032 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070014033 }
14034 return;
14035}
14036
14037
14038/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014039 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014040 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014041
14042 @param pWDICtx: pointer to the WLAN DAL context
14043 pEventData: pointer to the event information structure
14044
Jeff Johnson295189b2012-06-20 16:38:30 -070014045 @see
14046 @return Result of the function call
14047*/
14048WDI_Status
14049WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014050(
Jeff Johnson295189b2012-06-20 16:38:30 -070014051 WDI_ControlBlockType* pWDICtx,
14052 WDI_EventInfoType* pEventData
14053)
14054{
Jeff Johnson43971f52012-07-17 12:26:56 -070014055 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014056 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014057 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014058 wpt_uint16 usDataOffset = 0;
14059 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053014060 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14062
14063 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014064 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014065 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053014066 if ((NULL == pEventData ) ||
14067 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14068 (NULL == (pwdiEnterImpsReqParams =
14069 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 {
14071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014072 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014073 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014074 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014075 }
14076
14077 /*-----------------------------------------------------------------------
14078 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014079 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014080 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014081 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014082 0,
14083 &pSendBuffer, &usDataOffset, &usSendSize))||
14084 ( usSendSize < (usDataOffset )))
14085 {
14086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014087 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014088 pEventData, wdiEnterImpsRspCb);
14089 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014090 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014091 }
14092
14093 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014094 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14095 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014096 {
14097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14098 "WDI Init failed to reset an event");
14099
Jeff Johnsone7245742012-09-05 17:12:55 -070014100 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014101 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014102 }
14103
14104 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014105 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14106 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014108 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014109 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014110 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014111 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014112
14113 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014114 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014115 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014116 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14117 WDI_SET_POWER_STATE_TIMEOUT);
14118 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014119 {
14120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14121 "WDI Init failed to wait on an event");
14122
Karthick S1fa70262015-08-20 13:28:14 +053014123 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014124 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014125 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014126 }
14127
Mihir Shetea4306052014-03-25 00:02:54 +053014128 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14129 {
14130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14131 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14132
14133 goto fail;
14134 }
14135
14136 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14137 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014138 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014139 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014140 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014141 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14142 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014143
14144fail:
14145 // Release the message buffer so we don't leak
14146 wpalMemoryFree(pSendBuffer);
14147
14148failRequest:
14149 //WDA should have failure check to avoid the memory leak
14150 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014151}/*WDI_ProcessEnterImpsReq*/
14152
14153/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014154 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014155 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014156
14157 @param pWDICtx: pointer to the WLAN DAL context
14158 pEventData: pointer to the event information structure
14159
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 @see
14161 @return Result of the function call
14162*/
14163WDI_Status
14164WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014165(
Jeff Johnson295189b2012-06-20 16:38:30 -070014166 WDI_ControlBlockType* pWDICtx,
14167 WDI_EventInfoType* pEventData
14168)
14169{
14170 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014171 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 wpt_uint16 usDataOffset = 0;
14173 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014174 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14176
14177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014178 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014179 -------------------------------------------------------------------------*/
14180 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014181 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14182 (NULL == (pwdiExitImpsReqParams =
14183 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014184 {
14185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014189 }
14190
14191 /*-----------------------------------------------------------------------
14192 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014193 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014194 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014195 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014196 0,
14197 &pSendBuffer, &usDataOffset, &usSendSize))||
14198 ( usSendSize < (usDataOffset )))
14199 {
14200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014201 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 pEventData, wdiExitImpsRspCb);
14203 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014204 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014205 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014206 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14207 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014209 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014210 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014211 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14212 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014213}/*WDI_ProcessExitImpsReq*/
14214
14215/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014216 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014217 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014218
14219 @param pWDICtx: pointer to the WLAN DAL context
14220 pEventData: pointer to the event information structure
14221
Jeff Johnson295189b2012-06-20 16:38:30 -070014222 @see
14223 @return Result of the function call
14224*/
14225WDI_Status
14226WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014227(
Jeff Johnson295189b2012-06-20 16:38:30 -070014228 WDI_ControlBlockType* pWDICtx,
14229 WDI_EventInfoType* pEventData
14230)
14231{
14232 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14233 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014234 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014235 wpt_uint16 usDataOffset = 0;
14236 wpt_uint16 usSendSize = 0;
14237 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014238 wpt_status wptStatus;
14239
Jeff Johnson295189b2012-06-20 16:38:30 -070014240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14241
14242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014243 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014244 -------------------------------------------------------------------------*/
14245 if (( NULL == pEventData ) ||
14246 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14247 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14248 {
14249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014251 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014252 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014253 }
14254
14255 /*-----------------------------------------------------------------------
14256 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014259 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014260 sizeof(enterBmpsReq),
14261 &pSendBuffer, &usDataOffset, &usSendSize))||
14262 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14263 {
14264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014265 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14267 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014268 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014269 }
14270
14271 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014272 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14273 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014274 {
14275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14276 "WDI Init failed to reset an event");
14277
Jeff Johnsone7245742012-09-05 17:12:55 -070014278 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014279 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014280 }
14281
14282 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014283 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14284 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14285 {
14286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014287 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014288 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014289 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014290 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014291
14292/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014293 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014295 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14296 WDI_SET_POWER_STATE_TIMEOUT);
14297 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 {
14299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14300 "WDI Init failed to wait on an event");
14301
Karthick S1fa70262015-08-20 13:28:14 +053014302 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014303 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014304 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014305 }
14306
14307 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14308
14309 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14310 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14311 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14312 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14313
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014314 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014315 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14316 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14317 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14318
14319 wpalMemoryCopy( pSendBuffer+usDataOffset,
14320 &enterBmpsReq,
14321 sizeof(enterBmpsReq));
14322
14323 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014324 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014325
14326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014329 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14330 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014331
14332fail:
14333 // Release the message buffer so we don't leak
14334 wpalMemoryFree(pSendBuffer);
14335
14336failRequest:
14337 //WDA should have failure check to avoid the memory leak
14338 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014339}/*WDI_ProcessEnterBmpsReq*/
14340
14341/**
14342 @brief Process Exit BMPS Request function (called when Main FSM
14343 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014344
14345 @param pWDICtx: pointer to the WLAN DAL context
14346 pEventData: pointer to the event information structure
14347
Jeff Johnson295189b2012-06-20 16:38:30 -070014348 @see
14349 @return Result of the function call
14350*/
14351WDI_Status
14352WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014353(
Jeff Johnson295189b2012-06-20 16:38:30 -070014354 WDI_ControlBlockType* pWDICtx,
14355 WDI_EventInfoType* pEventData
14356)
14357{
14358 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14359 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014360 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014361 wpt_uint16 usDataOffset = 0;
14362 wpt_uint16 usSendSize = 0;
14363 tHalExitBmpsReqParams exitBmpsReq;
14364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14365
14366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014368 -------------------------------------------------------------------------*/
14369 if (( NULL == pEventData ) ||
14370 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14371 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14372 {
14373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 }
14378
14379 /*-----------------------------------------------------------------------
14380 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014381 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 sizeof(exitBmpsReq),
14385 &pSendBuffer, &usDataOffset, &usSendSize))||
14386 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14387 {
14388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014389 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014390 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 }
14394 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14395
Jeff Johnsone7245742012-09-05 17:12:55 -070014396 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14397
Jeff Johnson295189b2012-06-20 16:38:30 -070014398 wpalMemoryCopy( pSendBuffer+usDataOffset,
14399 &exitBmpsReq,
14400 sizeof(exitBmpsReq));
14401
14402 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014404
14405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014406 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014407 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014408 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14409 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014410}/*WDI_ProcessExitBmpsReq*/
14411
14412/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014413 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014415
14416 @param pWDICtx: pointer to the WLAN DAL context
14417 pEventData: pointer to the event information structure
14418
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 @see
14420 @return Result of the function call
14421*/
14422WDI_Status
14423WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014424(
Jeff Johnson295189b2012-06-20 16:38:30 -070014425 WDI_ControlBlockType* pWDICtx,
14426 WDI_EventInfoType* pEventData
14427)
14428{
14429 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14430 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014431 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014432 wpt_uint16 usDataOffset = 0;
14433 wpt_uint16 usSendSize = 0;
14434 tUapsdReqParams enterUapsdReq;
14435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14436
14437 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014438 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014439 -------------------------------------------------------------------------*/
14440 if (( NULL == pEventData ) ||
14441 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14442 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14443 {
14444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 }
14449
14450 /*-----------------------------------------------------------------------
14451 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014452 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014453 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014454 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014455 sizeof(enterUapsdReq),
14456 &pSendBuffer, &usDataOffset, &usSendSize))||
14457 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14458 {
14459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014460 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014461 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 }
14465
14466 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14467 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14468 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14469 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14470 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14471 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14472 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14473 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014475
Jeff Johnsone7245742012-09-05 17:12:55 -070014476 wpalMemoryCopy( pSendBuffer+usDataOffset,
14477 &enterUapsdReq,
14478 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014479
14480 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014481 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014482
14483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014484 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14487 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014488}/*WDI_ProcessEnterUapsdReq*/
14489
14490/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014491 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014493
14494 @param pWDICtx: pointer to the WLAN DAL context
14495 pEventData: pointer to the event information structure
14496
Jeff Johnson295189b2012-06-20 16:38:30 -070014497 @see
14498 @return Result of the function call
14499*/
14500WDI_Status
14501WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014502(
Jeff Johnson295189b2012-06-20 16:38:30 -070014503 WDI_ControlBlockType* pWDICtx,
14504 WDI_EventInfoType* pEventData
14505)
14506{
14507 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014508 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014509 wpt_uint16 usDataOffset = 0;
14510 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014511 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14512 wpt_uint8 bssIdx = 0;
14513
Jeff Johnson295189b2012-06-20 16:38:30 -070014514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14515
14516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014518 -------------------------------------------------------------------------*/
14519 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014520 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014521 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14522 {
14523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014524 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014527 }
14528
14529 /*-----------------------------------------------------------------------
14530 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014531 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014533 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014534 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014536 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014537 {
14538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014539 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014540 pEventData, wdiExitUapsdRspCb);
14541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014543 }
14544
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014545 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14546
14547 wpalMemoryCopy( pSendBuffer+usDataOffset,
14548 &bssIdx,
14549 sizeof(wpt_uint8));
14550
14551 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14552 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14553
Jeff Johnson295189b2012-06-20 16:38:30 -070014554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014555 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014556 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014557 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14558 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014559}/*WDI_ProcessExitUapsdReq*/
14560
14561/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014562 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014563 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014564
14565 @param pWDICtx: pointer to the WLAN DAL context
14566 pEventData: pointer to the event information structure
14567
Jeff Johnson295189b2012-06-20 16:38:30 -070014568 @see
14569 @return Result of the function call
14570*/
14571WDI_Status
14572WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014573(
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 WDI_ControlBlockType* pWDICtx,
14575 WDI_EventInfoType* pEventData
14576)
14577{
14578 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14579 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014580 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014581 wpt_uint16 usDataOffset = 0;
14582 wpt_uint16 usSendSize = 0;
14583 tUapsdInfo uapsdAcParamsReq;
14584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14585
14586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014588 -------------------------------------------------------------------------*/
14589 if (( NULL == pEventData ) ||
14590 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14591 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14592 {
14593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014594 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014597 }
14598
14599 /*-----------------------------------------------------------------------
14600 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014601 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014602 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014603 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014604 sizeof(uapsdAcParamsReq),
14605 &pSendBuffer, &usDataOffset, &usSendSize))||
14606 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14607 {
14608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014609 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014613 }
14614
14615 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14616 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14617 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14618 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14619 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14620 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14621
Jeff Johnsone7245742012-09-05 17:12:55 -070014622 wpalMemoryCopy( pSendBuffer+usDataOffset,
14623 &uapsdAcParamsReq,
14624 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014625
14626 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014627 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014628
14629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014630 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014631 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014632 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14633 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014634}/*WDI_ProcessSetUapsdAcParamsReq*/
14635
14636/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014637 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014639
14640 @param pWDICtx: pointer to the WLAN DAL context
14641 pEventData: pointer to the event information structure
14642
Jeff Johnson295189b2012-06-20 16:38:30 -070014643 @see
14644 @return Result of the function call
14645*/
14646WDI_Status
14647WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014648(
Jeff Johnson295189b2012-06-20 16:38:30 -070014649 WDI_ControlBlockType* pWDICtx,
14650 WDI_EventInfoType* pEventData
14651)
14652{
14653 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14654 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014655 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014656 wpt_uint16 usDataOffset = 0;
14657 wpt_uint16 usSendSize = 0;
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 == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14665 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)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
Jeff Johnsone7245742012-09-05 17:12:55 -070014675 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014677 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014678 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14679 &pSendBuffer, &usDataOffset, &usSendSize))||
14680 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14681 {
14682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014683 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014687 }
14688
Jeff Johnsone7245742012-09-05 17:12:55 -070014689 wpalMemoryCopy( pSendBuffer+usDataOffset,
14690 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14691 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014692
14693 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014695
14696 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014697 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014698 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014699 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14700 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014701}/*WDI_ProcessUpdateUapsdParamsReq*/
14702
14703/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014704 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014706
14707 @param pWDICtx: pointer to the WLAN DAL context
14708 pEventData: pointer to the event information structure
14709
Jeff Johnson295189b2012-06-20 16:38:30 -070014710 @see
14711 @return Result of the function call
14712*/
14713WDI_Status
14714WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014715(
Jeff Johnson295189b2012-06-20 16:38:30 -070014716 WDI_ControlBlockType* pWDICtx,
14717 WDI_EventInfoType* pEventData
14718)
14719{
14720 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14721 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 wpt_uint16 usDataOffset = 0;
14724 wpt_uint16 usSendSize = 0;
14725 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14726
14727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14728
14729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014730 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 -------------------------------------------------------------------------*/
14732 if (( NULL == pEventData ) ||
14733 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14734 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14735 {
14736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014737 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 }
14741
14742 /*-----------------------------------------------------------------------
14743 Get message buffer
14744 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014745 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 sizeof(halRxpFilterParams),
14747 &pSendBuffer, &usDataOffset, &usSendSize))||
14748 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14749 {
14750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014751 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 }
14756
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014759 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014760 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14761
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 wpalMemoryCopy( pSendBuffer+usDataOffset,
14763 &halRxpFilterParams,
14764 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014765
14766 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014767 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014768
14769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014771 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014772 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14773 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014774}/*WDI_ProcessConfigureRxpFilterReq*/
14775
14776/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014777 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014779
14780 @param pWDICtx: pointer to the WLAN DAL context
14781 pEventData: pointer to the event information structure
14782
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 @see
14784 @return Result of the function call
14785*/
14786WDI_Status
14787WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014788(
Jeff Johnson295189b2012-06-20 16:38:30 -070014789 WDI_ControlBlockType* pWDICtx,
14790 WDI_EventInfoType* pEventData
14791)
14792{
14793 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14794 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014795 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014796 wpt_uint16 usDataOffset = 0;
14797 wpt_uint16 usSendSize = 0;
14798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14799
14800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014802 -------------------------------------------------------------------------*/
14803 if (( NULL == pEventData ) ||
14804 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14805 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14806 {
14807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014811 }
14812
14813 /*-----------------------------------------------------------------------
14814 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014815 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014816 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014817 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014818 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14819 &pSendBuffer, &usDataOffset, &usSendSize))||
14820 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14821 {
14822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014823 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014824 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14825 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014827 }
14828
Jeff Johnsone7245742012-09-05 17:12:55 -070014829 wpalMemoryCopy( pSendBuffer+usDataOffset,
14830 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14831 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14832 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14833 &pwdiBeaconFilterParams->aFilters[0],
14834 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014835
14836 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014838
14839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014840 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014841 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014842 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14843 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014844}/*WDI_ProcessSetBeaconFilterReq*/
14845
14846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014847 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014848 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014849
14850 @param pWDICtx: pointer to the WLAN DAL context
14851 pEventData: pointer to the event information structure
14852
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 @see
14854 @return Result of the function call
14855*/
14856WDI_Status
14857WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014858(
Jeff Johnson295189b2012-06-20 16:38:30 -070014859 WDI_ControlBlockType* pWDICtx,
14860 WDI_EventInfoType* pEventData
14861)
14862{
14863 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14864 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014865 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014866 wpt_uint16 usDataOffset = 0;
14867 wpt_uint16 usSendSize = 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 == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14875 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)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_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014888 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14889 &pSendBuffer, &usDataOffset, &usSendSize))||
14890 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
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, pwdiBeaconFilterParams, wdiBeaconFilterCb);
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 wpalMemoryCopy( pSendBuffer+usDataOffset,
14900 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14901 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014902
14903 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014905
14906 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14910 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014911}
14912
14913/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014914 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014916
14917 @param pWDICtx: pointer to the WLAN DAL context
14918 pEventData: pointer to the event information structure
14919
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 @see
14921 @return Result of the function call
14922*/
14923WDI_Status
14924WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014925(
Jeff Johnson295189b2012-06-20 16:38:30 -070014926 WDI_ControlBlockType* pWDICtx,
14927 WDI_EventInfoType* pEventData
14928)
14929{
14930 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14931 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 wpt_uint16 usDataOffset = 0;
14934 wpt_uint16 usSendSize = 0;
14935 tHalRSSIThresholds rssiThresholdsReq;
14936 WDI_Status ret_status = 0;
14937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14938
14939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 -------------------------------------------------------------------------*/
14942 if (( NULL == pEventData ) ||
14943 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14944 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14945 {
14946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014947 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014950 }
14951
14952 /*-----------------------------------------------------------------------
14953 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014954 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014955 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014956 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014957 sizeof(rssiThresholdsReq),
14958 &pSendBuffer, &usDataOffset, &usSendSize))||
14959 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14960 {
14961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014962 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014966 }
14967
Jeff Johnsone7245742012-09-05 17:12:55 -070014968 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014969 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014970 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014971 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014972 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014973 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014974 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014975 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014976 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014977 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014978 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014979 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014980 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014981 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014982 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014984 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014985 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014986 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014987 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14988
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 wpalMemoryCopy( pSendBuffer+usDataOffset,
14990 &rssiThresholdsReq,
14991 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014992
14993 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014994 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014995
14996 /*-------------------------------------------------------------------------
14997 Send Set threshold req to HAL
14998 -------------------------------------------------------------------------*/
14999 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15000 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
15001 {
15002 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
15003 // req. Then as a result of processing the threshold cross ind, we trigger
15004 // a Set threshold req, then we need to indicate to WDI that it needs to
15005 // go to busy state as a result of the indication as we sent a req in the
15006 // same WDI context.
15007 // Hence expected state transition is to busy.
15008 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15009 }
15010
15011 return ret_status;
15012}
15013
15014/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015015 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015016 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015017
15018 @param pWDICtx: pointer to the WLAN DAL context
15019 pEventData: pointer to the event information structure
15020
Jeff Johnson295189b2012-06-20 16:38:30 -070015021 @see
15022 @return Result of the function call
15023*/
15024WDI_Status
15025WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015026(
Jeff Johnson295189b2012-06-20 16:38:30 -070015027 WDI_ControlBlockType* pWDICtx,
15028 WDI_EventInfoType* pEventData
15029)
15030{
15031 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
15032 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015033 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015034 wpt_uint16 usDataOffset = 0;
15035 wpt_uint16 usSendSize = 0;
15036 tHalHostOffloadReq hostOffloadParams;
15037 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015038 wpt_uint8 ucCurrentBSSSesIdx = 0;
15039 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015040
15041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15042
15043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 -------------------------------------------------------------------------*/
15046 if (( NULL == pEventData ) ||
15047 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
15048 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
15049 {
15050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015051 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015052 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015053 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015054 }
15055
15056 /*-----------------------------------------------------------------------
15057 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015058 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015059 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015060 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015061 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
15062 &pSendBuffer, &usDataOffset, &usSendSize))||
15063 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
15064 {
15065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015066 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015067 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
15068 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015069 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015070 }
15071
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015072 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15073 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15074 &pBSSSes);
15075 if ( NULL == pBSSSes )
15076 {
c_hpothu86feba52014-10-28 15:51:18 +053015077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015078 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15079 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015080 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015081 }
15082
Jeff Johnson295189b2012-06-20 16:38:30 -070015083 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15084 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015085
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15087 {
15088 // ARP Offload
15089 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15090 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15091 4);
15092 }
15093 else
15094 {
15095 // NS Offload
15096 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15097 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15098 16);
15099
15100#ifdef WLAN_NS_OFFLOAD
15101 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15102 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15103 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15104 16);
15105 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15106 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15107 16);
15108 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15109 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15110 16);
15111 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15112 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15113 16);
15114 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15115 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15116 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015117 nsOffloadParams.srcIPv6AddrValid =
15118 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15119
15120 nsOffloadParams.targetIPv6Addr1Valid =
15121 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15122
15123 nsOffloadParams.targetIPv6Addr2Valid =
15124 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15125
15126 nsOffloadParams.slotIndex =
15127 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015128
Jeff Johnson295189b2012-06-20 16:38:30 -070015129#endif // WLAN_NS_OFFLOAD
15130 }
15131
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015132 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15133
Jeff Johnson295189b2012-06-20 16:38:30 -070015134 // copy hostOffloadParams into pSendBuffer
15135 wpalMemoryCopy( pSendBuffer+usDataOffset,
15136 &hostOffloadParams,
15137 sizeof(hostOffloadParams));
15138
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015139 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015140 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015141 // copy nsOffloadParams into pSendBuffer
15142 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015143 &nsOffloadParams,
15144 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015145 }
15146 else
15147 {
15148#ifdef WLAN_NS_OFFLOAD
15149 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15150 {
15151 // copy nsOffloadParams into pSendBuffer
15152 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15153 &nsOffloadParams,
15154 sizeof(nsOffloadParams));
15155 }
15156#endif
15157 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015158
15159 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015160 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015161
15162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015163 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015164 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015165 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15166 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015167
15168fail:
15169 // Release the message buffer so we don't leak
15170 wpalMemoryFree(pSendBuffer);
15171
15172failRequest:
15173 //WDA should have failure check to avoid the memory leak
15174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015175}/*WDI_ProcessHostOffloadReq*/
15176
15177/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015178 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015180
15181 @param pWDICtx: pointer to the WLAN DAL context
15182 pEventData: pointer to the event information structure
15183
Jeff Johnson295189b2012-06-20 16:38:30 -070015184 @see
15185 @return Result of the function call
15186*/
15187WDI_Status
15188WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015189(
Jeff Johnson295189b2012-06-20 16:38:30 -070015190 WDI_ControlBlockType* pWDICtx,
15191 WDI_EventInfoType* pEventData
15192)
15193{
15194 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15195 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015196 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015197 wpt_uint16 usDataOffset = 0;
15198 wpt_uint16 usSendSize = 0;
15199 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015200 wpt_uint8 ucCurrentBSSSesIdx = 0;
15201 WDI_BSSSessionType* pBSSSes = NULL;
15202
Jeff Johnson295189b2012-06-20 16:38:30 -070015203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15204
15205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015206 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015207 -------------------------------------------------------------------------*/
15208 if (( NULL == pEventData ) ||
15209 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15210 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15211 {
15212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15213 "Invalid parameters in Keep Alive req");
15214 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015215 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015216 }
15217
15218 /*-----------------------------------------------------------------------
15219 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015221 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015222 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015223 sizeof(keepAliveReq),
15224 &pSendBuffer, &usDataOffset, &usSendSize))||
15225 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15226 {
15227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015228 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15230 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015231 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015232 }
15233
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015234 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15235 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15236 &pBSSSes);
15237 if ( NULL == pBSSSes )
15238 {
15239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015240 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015241 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015242 }
15243
Jeff Johnson295189b2012-06-20 16:38:30 -070015244 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15245 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15246
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015247 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015248
Jeff Johnson295189b2012-06-20 16:38:30 -070015249 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15250 {
15251 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15252 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15253 HAL_IPV4_ADDR_LEN);
15254 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15255 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015256 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 wpalMemoryCopy(keepAliveReq.destMacAddr,
15258 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15259 HAL_MAC_ADDR_LEN);
15260 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015261
15262 wpalMemoryCopy( pSendBuffer+usDataOffset,
15263 &keepAliveReq,
15264 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015265
15266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015267 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015268
15269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015270 "Process keep alive req time period %d",
15271 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015272
15273 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015274 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015275
15276 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15277 "Sending keep alive req to HAL");
15278
15279 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015280 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015282 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15283 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015284
15285fail:
15286 // Release the message buffer so we don't leak
15287 wpalMemoryFree(pSendBuffer);
15288
15289failRequest:
15290 //WDA should have failure check to avoid the memory leak
15291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015292}/*WDI_ProcessKeepAliveReq*/
15293
15294
15295/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015296 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015298
15299 @param pWDICtx: pointer to the WLAN DAL context
15300 pEventData: pointer to the event information structure
15301
Jeff Johnson295189b2012-06-20 16:38:30 -070015302 @see
15303 @return Result of the function call
15304*/
15305WDI_Status
15306WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015307(
Jeff Johnson295189b2012-06-20 16:38:30 -070015308 WDI_ControlBlockType* pWDICtx,
15309 WDI_EventInfoType* pEventData
15310)
15311{
15312 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15313 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015314 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015315 wpt_uint16 usDataOffset = 0;
15316 wpt_uint16 usSendSize = 0;
15317 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015318 wpt_uint8 ucCurrentBSSSesIdx = 0;
15319 WDI_BSSSessionType* pBSSSes = NULL;
15320
Jeff Johnson295189b2012-06-20 16:38:30 -070015321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15322
15323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015324 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015325 -------------------------------------------------------------------------*/
15326 if (( NULL == pEventData ) ||
15327 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15328 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15329 {
15330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015331 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015332 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015333 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015334 }
15335
15336 /*-----------------------------------------------------------------------
15337 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015338 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015339 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015340 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015341 sizeof(wowlAddBcPtrnReq),
15342 &pSendBuffer, &usDataOffset, &usSendSize))||
15343 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15344 {
15345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015346 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15348 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015349 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015350 }
15351
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015352 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15353 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15354 &pBSSSes);
15355 if ( NULL == pBSSSes )
15356 {
15357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015358 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015359 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015360 }
15361
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015364 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015365 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015367 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015368 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015369 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15370
15371 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15372 {
15373 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15374 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15375 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15376 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15377 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15378 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15379 }
15380 else
15381 {
15382 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15383 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15384 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15385 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15386 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15387 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15388
15389 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15390 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15391 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15392 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15393 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15394 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15395 }
15396
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015397 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15398
Jeff Johnson295189b2012-06-20 16:38:30 -070015399 wpalMemoryCopy( pSendBuffer+usDataOffset,
15400 &wowlAddBcPtrnReq,
15401 sizeof(wowlAddBcPtrnReq));
15402
15403 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015404 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015405
15406 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015407 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015408 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015409 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15410 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015411fail:
15412 // Release the message buffer so we don't leak
15413 wpalMemoryFree(pSendBuffer);
15414
15415failRequest:
15416 //WDA should have failure check to avoid the memory leak
15417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015418}/*WDI_ProcessWowlAddBcPtrnReq*/
15419
15420/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015421 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015423
15424 @param pWDICtx: pointer to the WLAN DAL context
15425 pEventData: pointer to the event information structure
15426
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 @see
15428 @return Result of the function call
15429*/
15430WDI_Status
15431WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015432(
Jeff Johnson295189b2012-06-20 16:38:30 -070015433 WDI_ControlBlockType* pWDICtx,
15434 WDI_EventInfoType* pEventData
15435)
15436{
15437 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15438 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015439 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015440 wpt_uint16 usDataOffset = 0;
15441 wpt_uint16 usSendSize = 0;
15442 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015443 wpt_uint8 ucCurrentBSSSesIdx = 0;
15444 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15446
15447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015448 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015449 -------------------------------------------------------------------------*/
15450 if (( NULL == pEventData ) ||
15451 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15452 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15453 {
15454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015456 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015457 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015458 }
15459
15460 /*-----------------------------------------------------------------------
15461 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015462 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015463 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015464 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015465 sizeof(wowlDelBcPtrnReq),
15466 &pSendBuffer, &usDataOffset, &usSendSize))||
15467 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15468 {
15469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015470 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015471 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15472 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015473 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015474 }
15475
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015476 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15477 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15478 &pBSSSes);
15479 if ( NULL == pBSSSes )
15480 {
15481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015482 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015483 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015484 }
15485
Jeff Johnsone7245742012-09-05 17:12:55 -070015486 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015488
15489 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15490
Jeff Johnsone7245742012-09-05 17:12:55 -070015491 wpalMemoryCopy( pSendBuffer+usDataOffset,
15492 &wowlDelBcPtrnReq,
15493 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015494
15495 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015497
15498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015499 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015501 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15502 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015503
15504fail:
15505 // Release the message buffer so we don't leak
15506 wpalMemoryFree(pSendBuffer);
15507
15508failRequest:
15509 //WDA should have failure check to avoid the memory leak
15510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015511}/*WDI_ProcessWowlDelBcPtrnReq*/
15512
15513/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015514 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015515 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015516
15517 @param pWDICtx: pointer to the WLAN DAL context
15518 pEventData: pointer to the event information structure
15519
Jeff Johnson295189b2012-06-20 16:38:30 -070015520 @see
15521 @return Result of the function call
15522*/
15523WDI_Status
15524WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015525(
Jeff Johnson295189b2012-06-20 16:38:30 -070015526 WDI_ControlBlockType* pWDICtx,
15527 WDI_EventInfoType* pEventData
15528)
15529{
15530 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15531 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015532 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015533 wpt_uint16 usDataOffset = 0;
15534 wpt_uint16 usSendSize = 0;
15535 tHalWowlEnterParams wowlEnterReq;
15536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15537
15538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015539 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015540 -------------------------------------------------------------------------*/
15541 if (( NULL == pEventData ) ||
15542 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15543 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15544 {
15545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015549 }
15550
15551 /*-----------------------------------------------------------------------
15552 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015553 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015554 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015555 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015556 sizeof(wowlEnterReq),
15557 &pSendBuffer, &usDataOffset, &usSendSize))||
15558 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15559 {
15560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015561 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015562 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 }
15566
Kumar Anandaca924e2013-07-22 14:35:34 -070015567 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15568
Jeff Johnsone7245742012-09-05 17:12:55 -070015569 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015570 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015571 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015573 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015574 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015575 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015576 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015577 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015579 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015581 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015582 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015583 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015584 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15585
15586#ifdef WLAN_WAKEUP_EVENTS
15587 wowlEnterReq.ucWoWEAPIDRequestEnable =
15588 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15589
15590 wowlEnterReq.ucWoWEAPOL4WayEnable =
15591 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15592
15593 wowlEnterReq.ucWowNetScanOffloadMatch =
15594 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15595
15596 wowlEnterReq.ucWowGTKRekeyError =
15597 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15598
15599 wowlEnterReq.ucWoWBSSConnLoss =
15600 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15601#endif // WLAN_WAKEUP_EVENTS
15602
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015603 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15604
Jeff Johnson295189b2012-06-20 16:38:30 -070015605 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15606 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15607 sizeof(tSirMacAddr));
15608
Jeff Johnsone7245742012-09-05 17:12:55 -070015609 wpalMemoryCopy( pSendBuffer+usDataOffset,
15610 &wowlEnterReq,
15611 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015612
15613 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015614 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015615
15616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015617 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15620 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015621}/*WDI_ProcessWowlEnterReq*/
15622
15623/**
15624 @brief Process Wowl exit Request function (called when Main FSM
15625 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015626
15627 @param pWDICtx: pointer to the WLAN DAL context
15628 pEventData: pointer to the event information structure
15629
Jeff Johnson295189b2012-06-20 16:38:30 -070015630 @see
15631 @return Result of the function call
15632*/
15633WDI_Status
15634WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015635(
Jeff Johnson295189b2012-06-20 16:38:30 -070015636 WDI_ControlBlockType* pWDICtx,
15637 WDI_EventInfoType* pEventData
15638)
15639{
15640 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015641 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015642 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015643 wpt_uint16 usDataOffset = 0;
15644 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015645 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15647
15648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015650 -------------------------------------------------------------------------*/
15651 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015652 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15654 {
15655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015659 }
15660
15661 /*-----------------------------------------------------------------------
15662 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015663 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015666 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015667 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015668 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 {
15670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015671 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015672 pEventData, wdiWowlExitCb);
15673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015675 }
15676
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015677 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15678
15679 wpalMemoryCopy( pSendBuffer+usDataOffset,
15680 &wowlExitparams,
15681 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015682 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015683 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015684 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015685 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15686 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015687}/*WDI_ProcessWowlExitReq*/
15688
15689/**
15690 @brief Process Configure Apps Cpu Wakeup State Request function
15691 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015692
15693 @param pWDICtx: pointer to the WLAN DAL context
15694 pEventData: pointer to the event information structure
15695
Jeff Johnson295189b2012-06-20 16:38:30 -070015696 @see
15697 @return Result of the function call
15698*/
15699WDI_Status
15700WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015701(
Jeff Johnson295189b2012-06-20 16:38:30 -070015702 WDI_ControlBlockType* pWDICtx,
15703 WDI_EventInfoType* pEventData
15704)
15705{
15706 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15707 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015708 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015709 wpt_uint16 usDataOffset = 0;
15710 wpt_uint16 usSendSize = 0;
15711 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15713
15714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015716 -------------------------------------------------------------------------*/
15717 if (( NULL == pEventData ) ||
15718 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15719 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15720 {
15721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015725 }
15726
15727 /*-----------------------------------------------------------------------
15728 Get message buffer
15729 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015730 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015731 sizeof(halCfgAppsCpuWakeupStateReqParams),
15732 &pSendBuffer, &usDataOffset, &usSendSize))||
15733 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15734 {
15735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015736 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015737 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 }
15741
Jeff Johnsone7245742012-09-05 17:12:55 -070015742 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015743 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15744
Jeff Johnsone7245742012-09-05 17:12:55 -070015745 wpalMemoryCopy( pSendBuffer+usDataOffset,
15746 &halCfgAppsCpuWakeupStateReqParams,
15747 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015748
15749 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015750 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015751
15752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015753 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015754 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015755 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15756 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15757 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015758}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15759
15760#ifdef WLAN_FEATURE_VOWIFI_11R
15761/**
15762 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15763 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015764
15765 @param pWDICtx: pointer to the WLAN DAL context
15766 pEventData: pointer to the event information structure
15767
Jeff Johnson295189b2012-06-20 16:38:30 -070015768 @see
15769 @return Result of the function call
15770*/
15771WDI_Status
15772WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015773(
Jeff Johnson295189b2012-06-20 16:38:30 -070015774 WDI_ControlBlockType* pWDICtx,
15775 WDI_EventInfoType* pEventData
15776)
15777{
15778 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15779 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015780 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015781 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015782 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 wpt_uint16 usDataOffset = 0;
15784 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015785 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 wpt_macAddr macBSSID;
15787 tAggrAddTsReq halAggrAddTsReq;
15788 int i;
15789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15790
15791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015793 -------------------------------------------------------------------------*/
15794 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15795 ( NULL == pEventData->pCBfnc ))
15796 {
15797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015801 }
15802 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15803 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15804 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15805 /*-------------------------------------------------------------------------
15806 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015807 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 -------------------------------------------------------------------------*/
15809 wpalMutexAcquire(&pWDICtx->wptMutex);
15810
15811 /*------------------------------------------------------------------------
15812 Find the BSS for which the request is made and identify WDI session
15813 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015814 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15815 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015816 &macBSSID))
15817 {
15818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015819 "This station does not exist in the WDI Station Table %d",
15820 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015821 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 }
15824
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15826 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015827 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15829 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15830 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015831
15832 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015833 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015835
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 /*------------------------------------------------------------------------
15837 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015838 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015839 ------------------------------------------------------------------------*/
15840 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15841 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15843 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15844 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015845
Jeff Johnsone7245742012-09-05 17:12:55 -070015846 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 }
15850
15851 wpalMutexRelease(&pWDICtx->wptMutex);
15852 /*-----------------------------------------------------------------------
15853 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015854 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 sizeof(tAggrAddTsParams),
15858 &pSendBuffer, &usDataOffset, &usSendSize))||
15859 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15860 {
15861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015862 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15864 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 }
15867
Jeff Johnsone7245742012-09-05 17:12:55 -070015868 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015870 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15872
15873 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15874 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015875 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015876 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015877 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015878 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015879 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015880 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15881 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015882 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15884 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015885 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015886 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15887 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015888 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15890 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15893 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015894 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015895 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15896 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015897 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015898 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15899 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015900 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015901 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15902 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015903 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015904 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015905 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015906 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015907
15908
15909 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015910 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015911 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015913 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015914 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015915 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015916 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015917 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015918 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015919 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015920 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015923 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015924 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015925 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015927 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015928 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015929 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015930 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015931 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015933 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015934 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015935 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015936 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015937 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15939 }
15940
Jeff Johnsone7245742012-09-05 17:12:55 -070015941 wpalMemoryCopy( pSendBuffer+usDataOffset,
15942 &halAggrAddTsReq,
15943 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015944
15945 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015946 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015947
15948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015949 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015950 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015951 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015952 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015953 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015954}/*WDI_ProcessAggrAddTSpecReq*/
15955#endif /* WLAN_FEATURE_VOWIFI_11R */
15956
15957/**
15958 @brief Process Shutdown Request function (called when Main FSM
15959 allows it)
15960
15961 @param pWDICtx: pointer to the WLAN DAL context
15962 pEventData: pointer to the event information structure
15963
15964 @see
15965 @return Result of the function call
15966*/
15967WDI_Status
15968WDI_ProcessShutdownReq
15969(
15970 WDI_ControlBlockType* pWDICtx,
15971 WDI_EventInfoType* pEventData
15972 )
15973{
15974 wpt_status wptStatus;
15975
15976
15977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15978
15979 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015980 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015981 -------------------------------------------------------------------------*/
15982 if ( NULL == pEventData )
15983 {
15984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015985 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015986 WDI_ASSERT(0);
15987 return WDI_STATUS_E_FAILURE;
15988 }
15989
15990 wpalMutexAcquire(&pWDICtx->wptMutex);
15991
15992
15993 gWDIInitialized = eWLAN_PAL_FALSE;
15994 /*! TO DO: stop the data services */
15995 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15996 {
15997 /*Stop the STA Table !UT- check this logic again
15998 It is safer to do it here than on the response - because a stop is imminent*/
15999 WDI_STATableStop(pWDICtx);
16000
16001 /* Stop Transport Driver, DXE */
16002 WDTS_Stop(pWDICtx);
16003 }
16004
16005 /*Clear all pending request*/
16006 WDI_ClearPendingRequests(pWDICtx);
16007 /* Close Data transport*/
16008 /* FTM mode does not open Data Path */
16009 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16010 {
16011 WDTS_Close(pWDICtx);
16012 }
16013 /*Close the STA Table !UT- check this logic again*/
16014 WDI_STATableClose(pWDICtx);
16015 /*close the PAL */
16016 wptStatus = wpalClose(pWDICtx->pPALContext);
16017 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16018 {
16019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16020 "Failed to wpal Close %d", wptStatus);
16021 WDI_ASSERT(0);
16022 }
16023
16024 /*Transition back to init state*/
16025 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
16026
16027 wpalMutexRelease(&pWDICtx->wptMutex);
16028
16029 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016030 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016031
16032
Jeff Johnsone7245742012-09-05 17:12:55 -070016033 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016034}/*WDI_ProcessShutdownReq*/
16035
16036/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016037 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016038========================================================================*/
16039
16040/**
16041 @brief Process Start Response function (called when a response
16042 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016043
16044 @param pWDICtx: pointer to the WLAN DAL context
16045 pEventData: pointer to the event information structure
16046
Jeff Johnson295189b2012-06-20 16:38:30 -070016047 @see
16048 @return Result of the function call
16049*/
16050WDI_Status
16051WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016052(
Jeff Johnson295189b2012-06-20 16:38:30 -070016053 WDI_ControlBlockType* pWDICtx,
16054 WDI_EventInfoType* pEventData
16055)
16056{
16057 WDI_StartRspParamsType wdiRspParams;
16058 WDI_StartRspCb wdiStartRspCb = NULL;
16059
16060 tHalMacStartRspParams* startRspParams;
16061
16062#ifndef HAL_SELF_STA_PER_BSS
16063 WDI_AddStaParams wdiAddSTAParam = {0};
16064#endif
16065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16066
Jeff Johnsone7245742012-09-05 17:12:55 -070016067 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016069 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016070 -------------------------------------------------------------------------*/
16071 if (( NULL == pEventData ) ||
16072 ( NULL == pEventData->pEventData) ||
16073 ( NULL == wdiStartRspCb ))
16074 {
16075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016076 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016079 }
16080
16081 /*-------------------------------------------------------------------------
16082 Extract response and send it to UMAC
16083 -------------------------------------------------------------------------*/
16084 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16085 {
16086 // not enough data was received
16087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016088 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016089 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016092 }
16093
16094 /*-------------------------------------------------------------------------
16095 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016096 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 -------------------------------------------------------------------------*/
16098 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16099
16100 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16101 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16102 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16103 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16104 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16105 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16106 wdiRspParams.wlanReportedVersion.major =
16107 startRspParams->wcnssWlanVersion.major;
16108 wdiRspParams.wlanReportedVersion.minor =
16109 startRspParams->wcnssWlanVersion.minor;
16110 wdiRspParams.wlanReportedVersion.version =
16111 startRspParams->wcnssWlanVersion.version;
16112 wdiRspParams.wlanReportedVersion.revision =
16113 startRspParams->wcnssWlanVersion.revision;
16114 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16115 startRspParams->wcnssCrmVersionString,
16116 sizeof(wdiRspParams.wcnssSoftwareVersion));
16117 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16118 startRspParams->wcnssWlanVersionString,
16119 sizeof(wdiRspParams.wcnssHardwareVersion));
16120 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16121
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016122 /*Save the HAL Version*/
16123 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16124
Jeff Johnson295189b2012-06-20 16:38:30 -070016125 wpalMutexAcquire(&pWDICtx->wptMutex);
16126 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16127 {
16128 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16129
16130 /*Cache the start response for further use*/
16131 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016132 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 sizeof(pWDICtx->wdiCachedStartRspParams));
16134
16135 }
16136 else
16137 {
16138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16139 "Failed to start device with status %s(%d)",
16140 WDI_getHALStatusMsgString(startRspParams->status),
16141 startRspParams->status);
16142
16143 /*Set the expected state transition to stopped - because the start has
16144 failed*/
16145 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16146
16147 wpalMutexRelease(&pWDICtx->wptMutex);
16148
16149 /*Notify UMAC*/
16150 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016151
Jeff Johnson295189b2012-06-20 16:38:30 -070016152 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016153 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016154
16155 /*Although the response is an error - it was processed by our function
16156 so as far as the caller is concerned this is a succesful reponse processing*/
16157 return WDI_STATUS_SUCCESS;
16158 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016159
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 wpalMutexRelease(&pWDICtx->wptMutex);
16161
16162 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16163 {
16164 /* FTM mode does not need to execute below */
16165 /* Notify UMAC */
16166 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16167 return WDI_STATUS_SUCCESS;
16168 }
16169
16170 /* START the Data transport */
16171 WDTS_startTransport(pWDICtx);
16172
16173 /*Start the STA Table !- check this logic again*/
16174 WDI_STATableStart(pWDICtx);
16175
16176#ifndef HAL_SELF_STA_PER_BSS
16177 /* Store the Self STA Index */
16178 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16179
16180 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16181 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16182 WDI_MAC_ADDR_LEN);
16183
16184 /* At this point add the self-STA */
16185
16186 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16187 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16188 /*! TO DO: wdiAddSTAParam.dpuSig */
16189 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16190 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16191 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16192
16193 //all DPU indices are the same for self STA
16194 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16195 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016196 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016197 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16198 WDI_MAC_ADDR_LEN);
16199 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16200 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16201
16202 /* Note: Since we don't get an explicit config STA request for self STA, we
16203 add the self STA upon receiving the Start response message. But the
16204 self STA entry in the table is deleted when WDI gets an explicit delete STA
16205 request */
16206 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16207#endif
16208
16209 /*Notify UMAC*/
16210 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16211
Jeff Johnsone7245742012-09-05 17:12:55 -070016212 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016213}/*WDI_ProcessStartRsp*/
16214
16215
16216/**
16217 @brief Process Stop Response function (called when a response
16218 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016219
16220 @param pWDICtx: pointer to the WLAN DAL context
16221 pEventData: pointer to the event information structure
16222
Jeff Johnson295189b2012-06-20 16:38:30 -070016223 @see
16224 @return Result of the function call
16225*/
16226WDI_Status
16227WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016228(
Jeff Johnson295189b2012-06-20 16:38:30 -070016229 WDI_ControlBlockType* pWDICtx,
16230 WDI_EventInfoType* pEventData
16231)
16232{
16233 WDI_Status wdiStatus;
16234 WDI_StopRspCb wdiStopRspCb = NULL;
16235
Jeff Johnsone7245742012-09-05 17:12:55 -070016236 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16238
Jeff Johnsone7245742012-09-05 17:12:55 -070016239 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016242 -------------------------------------------------------------------------*/
16243 if (( NULL == pEventData ) ||
16244 ( NULL == pEventData->pEventData) ||
16245 ( NULL == wdiStopRspCb ))
16246 {
16247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016251 }
16252
16253 /*-------------------------------------------------------------------------
16254 Extract response and send it to UMAC
16255 -------------------------------------------------------------------------*/
16256 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16257 {
16258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016259 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016260 pEventData->uEventDataSize);
16261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 }
16264
16265 /*-------------------------------------------------------------------------
16266 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016267 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016268 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016269 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16270 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016271 sizeof(halMacStopRspMsg.stopRspParams));
16272
Jeff Johnsone7245742012-09-05 17:12:55 -070016273 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016274
16275 wpalMutexAcquire(&pWDICtx->wptMutex);
16276
16277 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016278 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016279 --------------------------------------------------------------------------*/
16280 if ( WDI_STATUS_SUCCESS != wdiStatus )
16281 {
16282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16283 "Failed to stop the device with status %s (%d)",
16284 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16285 halMacStopRspMsg.stopRspParams.status);
16286
Jeff Johnsone7245742012-09-05 17:12:55 -070016287 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016288 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016289
Jeff Johnson295189b2012-06-20 16:38:30 -070016290 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016292 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016293
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16295
16296 /*Transition now as WDI may get preempted imediately after it sends
16297 up the Stop Response and it will not get to process the state transition
16298 from Main Rsp function*/
16299 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16300 wpalMutexRelease(&pWDICtx->wptMutex);
16301
16302 /*! TO DO: - STOP the Data transport */
16303
16304 /*Notify UMAC*/
16305 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16306
Jeff Johnsone7245742012-09-05 17:12:55 -070016307 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016308}/*WDI_ProcessStopRsp*/
16309
16310/**
16311 @brief Process Close Rsp function (called when a response
16312 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016313
16314 @param pWDICtx: pointer to the WLAN DAL context
16315 pEventData: pointer to the event information structure
16316
Jeff Johnson295189b2012-06-20 16:38:30 -070016317 @see
16318 @return Result of the function call
16319*/
16320WDI_Status
16321WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016322(
Jeff Johnson295189b2012-06-20 16:38:30 -070016323 WDI_ControlBlockType* pWDICtx,
16324 WDI_EventInfoType* pEventData
16325)
16326{
16327 /*There is no close response comming from HAL - function just kept for
16328 simmetry */
16329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016330 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016331}/*WDI_ProcessCloseRsp*/
16332
16333
16334/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016335 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016336============================================================================*/
16337
16338/**
16339 @brief Process Init Scan Rsp function (called when a response
16340 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016341
16342 @param pWDICtx: pointer to the WLAN DAL context
16343 pEventData: pointer to the event information structure
16344
Jeff Johnson295189b2012-06-20 16:38:30 -070016345 @see
16346 @return Result of the function call
16347*/
16348WDI_Status
16349WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016350(
Jeff Johnson295189b2012-06-20 16:38:30 -070016351 WDI_ControlBlockType* pWDICtx,
16352 WDI_EventInfoType* pEventData
16353)
16354{
16355 WDI_Status wdiStatus;
16356 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016357 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016358 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16360
16361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016363 -------------------------------------------------------------------------*/
16364 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16365 ( NULL == pEventData->pEventData))
16366 {
16367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016371 }
16372
16373 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16374 if( NULL == wdiInitScanRspCb)
16375 {
16376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016377 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016380 }
16381
16382 /*-------------------------------------------------------------------------
16383 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016384 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016385 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016386 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16387 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016388 sizeof(halInitScanRspMsg.initScanRspParams));
16389
Jeff Johnsone7245742012-09-05 17:12:55 -070016390 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016391
16392 if ( pWDICtx->bInBmps )
16393 {
16394 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016395 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16396 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016398 "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 -080016399 WDI_ASSERT(0);
16400 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016401 }
16402
16403 /*Notify UMAC*/
16404 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16405
Jeff Johnsone7245742012-09-05 17:12:55 -070016406 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016407}/*WDI_ProcessInitScanRsp*/
16408
16409
16410/**
16411 @brief Process Start Scan Rsp function (called when a response
16412 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016413
16414 @param pWDICtx: pointer to the WLAN DAL context
16415 pEventData: pointer to the event information structure
16416
Jeff Johnson295189b2012-06-20 16:38:30 -070016417 @see
16418 @return Result of the function call
16419*/
16420WDI_Status
16421WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016422(
Jeff Johnson295189b2012-06-20 16:38:30 -070016423 WDI_ControlBlockType* pWDICtx,
16424 WDI_EventInfoType* pEventData
16425)
16426{
16427 WDI_StartScanRspParamsType wdiStartScanParams;
16428 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016429
16430 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16432
16433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016435 -------------------------------------------------------------------------*/
16436 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16437 ( NULL == pEventData->pEventData))
16438 {
16439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016443 }
16444
16445 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16446 if( NULL == wdiStartScanRspCb)
16447 {
16448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016449 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016452 }
16453
16454 /*-------------------------------------------------------------------------
16455 Extract response and send it to UMAC
16456 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016457 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16458 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016459 sizeof(halStartScanRspMsg.startScanRspParams));
16460
16461 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16462 halStartScanRspMsg.startScanRspParams.status);
16463#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016464 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016465 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016466 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016467 halStartScanRspMsg.startScanRspParams.startTSF,
16468 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016469#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016470
16471 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16472 {
16473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16474 "Start scan failed with status %s (%d)",
16475 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16476 halStartScanRspMsg.startScanRspParams.status);
16477 /* send the status to UMAC, don't return from here*/
16478 }
16479
16480 /*Notify UMAC*/
16481 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16482
Jeff Johnsone7245742012-09-05 17:12:55 -070016483 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016484
16485}/*WDI_ProcessStartScanRsp*/
16486
16487
16488/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016489 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016490 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016491
16492 @param pWDICtx: pointer to the WLAN DAL context
16493 pEventData: pointer to the event information structure
16494
Jeff Johnson295189b2012-06-20 16:38:30 -070016495 @see
16496 @return Result of the function call
16497*/
16498WDI_Status
16499WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016500(
Jeff Johnson295189b2012-06-20 16:38:30 -070016501 WDI_ControlBlockType* pWDICtx,
16502 WDI_EventInfoType* pEventData
16503)
16504{
16505 WDI_Status wdiStatus;
16506 tHalEndScanRspMsg halEndScanRspMsg;
16507 WDI_EndScanRspCb wdiEndScanRspCb;
16508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16509
16510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016512 -------------------------------------------------------------------------*/
16513 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16514 ( NULL == pEventData->pEventData))
16515 {
16516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016520 }
16521
16522 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16523
16524 /*-------------------------------------------------------------------------
16525 Extract response and send it to UMAC
16526 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016527 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16528 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016529 sizeof(halEndScanRspMsg.endScanRspParams));
16530
Jeff Johnsone7245742012-09-05 17:12:55 -070016531 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016532
16533 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16534 {
16535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16536 "End Scan failed with status %s (%d )",
16537 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16538 halEndScanRspMsg.endScanRspParams.status);
16539 /* send the status to UMAC, don't return from here*/
16540 }
16541
16542 /*Notify UMAC*/
16543 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16544
Jeff Johnsone7245742012-09-05 17:12:55 -070016545 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016546}/*WDI_ProcessEndScanRsp*/
16547
16548
16549/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016550 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016552
16553 @param pWDICtx: pointer to the WLAN DAL context
16554 pEventData: pointer to the event information structure
16555
Jeff Johnson295189b2012-06-20 16:38:30 -070016556 @see
16557 @return Result of the function call
16558*/
16559WDI_Status
16560WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016561(
Jeff Johnson295189b2012-06-20 16:38:30 -070016562 WDI_ControlBlockType* pWDICtx,
16563 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016564)
Jeff Johnson295189b2012-06-20 16:38:30 -070016565{
16566 WDI_Status wdiStatus;
16567 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016568
16569 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16571
16572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016574 -------------------------------------------------------------------------*/
16575 if (( NULL == pWDICtx ) || ( 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 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16585
16586 /*-------------------------------------------------------------------------
16587 Extract response and send it to UMAC
16588 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016589 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16590 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016591 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16592
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016594
16595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016596 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016597 halFinishScanRspMsg.finishScanRspParams.status);
16598
16599 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16600 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16601 {
16602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16603 "Finish Scan failed with status %s (%d)",
16604 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16605 halFinishScanRspMsg.finishScanRspParams.status);
16606 /* send the status to UMAC, don't return from here*/
16607 }
16608
16609 /*Notify UMAC*/
16610 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16611
Jeff Johnsone7245742012-09-05 17:12:55 -070016612 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016613}/*WDI_ProcessFinishScanRsp*/
16614
16615/**
16616 @brief Process Join Response function (called when a response
16617 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016618
16619 @param pWDICtx: pointer to the WLAN DAL context
16620 pEventData: pointer to the event information structure
16621
Jeff Johnson295189b2012-06-20 16:38:30 -070016622 @see
16623 @return Result of the function call
16624*/
16625WDI_Status
16626WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016627(
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 WDI_ControlBlockType* pWDICtx,
16629 WDI_EventInfoType* pEventData
16630)
16631{
16632 WDI_Status wdiStatus;
16633 WDI_JoinRspCb wdiJoinRspCb;
16634 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016635
16636 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16638
16639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016641 -------------------------------------------------------------------------*/
16642 if (( NULL == pWDICtx ) ||
16643 ( NULL == pWDICtx->pfncRspCB ) ||
16644 ( NULL == pEventData ) ||
16645 ( NULL == pEventData->pEventData))
16646 {
16647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016648 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016651 }
16652
16653 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16654
16655 /*-------------------------------------------------------------------------
16656 Extract response and send it to UMAC
16657 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016658 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16659 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016660 sizeof(halJoinRspMsg.joinRspParams));
16661
Jeff Johnsone7245742012-09-05 17:12:55 -070016662 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016663
16664 wpalMutexAcquire(&pWDICtx->wptMutex);
16665
16666 /*-----------------------------------------------------------------------
16667 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016668 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016669 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016670 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016671 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16672 {
16673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016674 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16675 "association no longer in progress %d - mysterious HAL response",
16676 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016677
Jeff Johnsone7245742012-09-05 17:12:55 -070016678 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016679 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016681 }
16682
16683 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16684
16685 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016686 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016687 -----------------------------------------------------------------------*/
16688 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16689 {
16690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16691 "Join only allowed in Joining state - failure state is %d "
16692 "strange HAL response", pBSSSes->wdiAssocState);
16693
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16695
Jeff Johnson295189b2012-06-20 16:38:30 -070016696 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016697 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016698 }
16699
16700
16701 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016702 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016703 -----------------------------------------------------------------------*/
16704 if ( WDI_STATUS_SUCCESS != wdiStatus )
16705 {
16706 /*Association was failed by HAL - remove session*/
16707 WDI_DeleteSession(pWDICtx, pBSSSes);
16708
16709 /*Association no longer in progress */
16710 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16711
16712 /*Association no longer in progress - prepare pending assoc for processing*/
16713 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016714
Jeff Johnson295189b2012-06-20 16:38:30 -070016715 }
16716 else
16717 {
16718 /*Transition to state Joining - this may be redundant as we are supposed
16719 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016720 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016721 }
16722
16723 wpalMutexRelease(&pWDICtx->wptMutex);
16724
16725 /*Notify UMAC*/
16726 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16727
Jeff Johnsone7245742012-09-05 17:12:55 -070016728 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016729}/*WDI_ProcessJoinRsp*/
16730
16731
16732/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016733 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016734 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016735
16736 @param pWDICtx: pointer to the WLAN DAL context
16737 pEventData: pointer to the event information structure
16738
Jeff Johnson295189b2012-06-20 16:38:30 -070016739 @see
16740 @return Result of the function call
16741*/
16742WDI_Status
16743WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016744(
Jeff Johnson295189b2012-06-20 16:38:30 -070016745 WDI_ControlBlockType* pWDICtx,
16746 WDI_EventInfoType* pEventData
16747)
16748{
16749 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16750 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016751 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016752 WDI_BSSSessionType* pBSSSes = NULL;
16753
Jeff Johnsone7245742012-09-05 17:12:55 -070016754 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016755 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16756 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016757
Jeff Johnson295189b2012-06-20 16:38:30 -070016758 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16759
16760 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016761 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 -------------------------------------------------------------------------*/
16763 if (( NULL == pEventData ) ||
16764 ( NULL == pEventData->pEventData))
16765 {
16766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016767 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016770 }
16771
16772 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16773
16774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016775 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016776 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016777 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16778 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016779 sizeof(halConfigBssRspMsg.configBssRspParams));
16780
16781 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16782 halConfigBssRspMsg.configBssRspParams.status);
16783 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16784 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016785 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016786 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16787 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016788
Jeff Johnson295189b2012-06-20 16:38:30 -070016789 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016790
16791 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016792 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016793
16794 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016795 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016796
Jeff Johnson295189b2012-06-20 16:38:30 -070016797 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016798
Jeff Johnson295189b2012-06-20 16:38:30 -070016799 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016800 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016801 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16802 #endif
16803 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16804 halConfigBssRspMsg.configBssRspParams.staMac,
16805 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016806
Jeff Johnson295189b2012-06-20 16:38:30 -070016807 wpalMutexAcquire(&pWDICtx->wptMutex);
16808 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016810 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016811 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16812 wdiConfigBSSParams.macBSSID,
16813 &pBSSSes);
16814
Jeff Johnson295189b2012-06-20 16:38:30 -070016815 /*-----------------------------------------------------------------------
16816 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016817 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016818 -----------------------------------------------------------------------*/
16819 if ( NULL == pBSSSes )
16820 {
16821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16822 "Association sequence for this BSS does not yet exist "
16823 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016824
16825 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16826
Jeff Johnson295189b2012-06-20 16:38:30 -070016827 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016828 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016829 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016830
Jeff Johnson295189b2012-06-20 16:38:30 -070016831 /*Save data for this BSS*/
16832 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16833 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016834 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016835 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016836 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016837 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016838 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016839 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016840 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016841 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016842 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016843 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16844 pBSSSes->bcastStaIdx =
16845 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016846
Jeff Johnson295189b2012-06-20 16:38:30 -070016847 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016848
Jeff Johnson295189b2012-06-20 16:38:30 -070016849 /*-------------------------------------------------------------------------
16850 Add Peer STA
16851 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016852 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016853 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16854 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016855
Jeff Johnson295189b2012-06-20 16:38:30 -070016856 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016857 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016858 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016859 wdiAddSTAParam.ucHTCapable =
16860 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16861 wdiAddSTAParam.ucStaType =
16862 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16863
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016865 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16866 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016868
16869 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16870 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16871 WDI_MAC_ADDR_LEN);
16872
Jeff Johnson295189b2012-06-20 16:38:30 -070016873 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016874 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016875 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016876 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016877 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016878 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016879 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016880 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016881 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016882 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016883 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016884 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016885 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016886
Jeff Johnson295189b2012-06-20 16:38:30 -070016887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16888 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016889
Jeff Johnson295189b2012-06-20 16:38:30 -070016890 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16891 /*-------------------------------------------------------------------------
16892 Add Broadcast STA only in AP mode
16893 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016894 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016895 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016896 {
16897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16898 "Add BCAST STA to table for index: %d",
16899 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016900
16901 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016902 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016903
Jeff Johnson295189b2012-06-20 16:38:30 -070016904 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16905 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16906 }
16907 wpalMutexRelease(&pWDICtx->wptMutex);
16908 }
16909 else
16910 {
16911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16912 "Config BSS RSP failed with status : %s(%d)",
16913 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016914 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016915 halConfigBssRspMsg.configBssRspParams.status);
16916
Jeff Johnsone7245742012-09-05 17:12:55 -070016917
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 /*Association was failed by HAL - remove session*/
16919 WDI_DeleteSession(pWDICtx, pBSSSes);
16920
16921 /*Association no longer in progress */
16922 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16923
16924 /*Association no longer in progress - prepare pending assoc for processing*/
16925 WDI_DequeueAssocRequest(pWDICtx);
16926
16927 }
16928
16929 /*Notify UMAC*/
16930 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16931
Jeff Johnsone7245742012-09-05 17:12:55 -070016932 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016933}/*WDI_ProcessConfigBSSRsp*/
16934
16935
16936/**
16937 @brief Process Del BSS Response function (called when a response
16938 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016939
16940 @param pWDICtx: pointer to the WLAN DAL context
16941 pEventData: pointer to the event information structure
16942
Jeff Johnson295189b2012-06-20 16:38:30 -070016943 @see
16944 @return Result of the function call
16945*/
16946WDI_Status
16947WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016948(
Jeff Johnson295189b2012-06-20 16:38:30 -070016949 WDI_ControlBlockType* pWDICtx,
16950 WDI_EventInfoType* pEventData
16951)
16952{
16953 WDI_DelBSSRspParamsType wdiDelBSSParams;
16954 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016955 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016956 WDI_BSSSessionType* pBSSSes = NULL;
16957
Jeff Johnsone7245742012-09-05 17:12:55 -070016958 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16960
16961 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016962 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016963 -------------------------------------------------------------------------*/
16964 if (( NULL == pEventData ) ||
16965 ( NULL == pEventData->pEventData))
16966 {
16967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016968 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016969 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016971 }
16972
16973 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16974
16975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016976 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016977 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016978 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16979 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016980 sizeof(halDelBssRspMsg.deleteBssRspParams));
16981
16982
16983 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016984 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016985
16986 wpalMutexAcquire(&pWDICtx->wptMutex);
16987
16988 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016989 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016990 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016991 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16992 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16993 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016994
16995 /*-----------------------------------------------------------------------
16996 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016997 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016998 -----------------------------------------------------------------------*/
16999 if ( NULL == pBSSSes )
17000 {
17001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17002 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017003 "association no longer in progress - mysterious HAL response");
17004
17005 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17006
17007 wpalMutexRelease(&pWDICtx->wptMutex);
17008 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017009 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017010
17011 /*Extract BSSID for the response to UMAC*/
17012 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
17013 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
17014
17015 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
17016
17017 /*-----------------------------------------------------------------------
17018 The current session will be deleted
17019 -----------------------------------------------------------------------*/
17020 WDI_DeleteSession(pWDICtx, pBSSSes);
17021
17022
17023 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070017024 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
17025 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017026 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017027 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070017028 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017029
17030 /* Delete the STA's in this BSS */
17031 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
17032
Jeff Johnson295189b2012-06-20 16:38:30 -070017033 wpalMutexRelease(&pWDICtx->wptMutex);
17034
17035 /*Notify UMAC*/
17036 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
17037
Jeff Johnsone7245742012-09-05 17:12:55 -070017038 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017039}/*WDI_ProcessDelBSSRsp*/
17040
17041/**
17042 @brief Process Post Assoc Rsp function (called when a response
17043 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017044
17045 @param pWDICtx: pointer to the WLAN DAL context
17046 pEventData: pointer to the event information structure
17047
Jeff Johnson295189b2012-06-20 16:38:30 -070017048 @see
17049 @return Result of the function call
17050*/
17051WDI_Status
17052WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017053(
Jeff Johnson295189b2012-06-20 16:38:30 -070017054 WDI_ControlBlockType* pWDICtx,
17055 WDI_EventInfoType* pEventData
17056)
17057{
17058 WDI_PostAssocRspParamsType wdiPostAssocParams;
17059 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017060 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017061 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017062 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17064
17065 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017066 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017067 -------------------------------------------------------------------------*/
17068 if (( NULL == pEventData ) ||
17069 ( NULL == pEventData->pEventData))
17070 {
17071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017072 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017075 }
17076
17077 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17078
17079 /*-------------------------------------------------------------------------
17080 Extract response and send it to UMAC
17081 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017082 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17083 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017084 sizeof(halPostAssocRspMsg.postAssocRspParams));
17085
17086 /*Extract the Post Assoc STA Params */
17087
Jeff Johnsone7245742012-09-05 17:12:55 -070017088 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017091 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017092 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017093 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17094
Jeff Johnsone7245742012-09-05 17:12:55 -070017095 wdiPostAssocParams.wdiStatus =
17096 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017097
17098 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17099 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017100 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17101 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017102 WDI_MAC_ADDR_LEN);
17103
17104 /* Extract Post Assoc BSS Params */
17105
Jeff Johnsone7245742012-09-05 17:12:55 -070017106 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17107 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17108 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017109
17110 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17111 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017112 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017113 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17114 .macSTA, WDI_MAC_ADDR_LEN);
17115
Jeff Johnsone7245742012-09-05 17:12:55 -070017116 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017117 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17118
Jeff Johnsone7245742012-09-05 17:12:55 -070017119 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17121
17122 wdiPostAssocParams.bssParams.ucBSSIdx =
17123 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17124
Jeff Johnsone7245742012-09-05 17:12:55 -070017125 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017126 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17127
17128 wpalMutexAcquire(&pWDICtx->wptMutex);
17129
17130 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017131 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017132 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017133 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017134 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017135 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017136
17137 /*-----------------------------------------------------------------------
17138 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017139 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017140 -----------------------------------------------------------------------*/
17141 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017142 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017143 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17144 {
17145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17146 "Association sequence for this BSS does not yet exist or "
17147 "association no longer in progress - mysterious HAL response");
17148
Jeff Johnsone7245742012-09-05 17:12:55 -070017149 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17150
Jeff Johnson295189b2012-06-20 16:38:30 -070017151 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017152 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017153 }
17154
17155 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017156 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017157 -----------------------------------------------------------------------*/
17158 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17159 {
17160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17161 "Post Assoc not allowed before JOIN - failing request "
17162 "strange HAL response");
17163
Jeff Johnsone7245742012-09-05 17:12:55 -070017164 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17165
Jeff Johnson295189b2012-06-20 16:38:30 -070017166 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017167 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017168 }
17169
17170 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017171 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017172 -----------------------------------------------------------------------*/
17173 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17174 {
17175 /*Association was failed by HAL - remove session*/
17176 WDI_DeleteSession(pWDICtx, pBSSSes);
17177 }
17178 else
17179 {
17180 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017181 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017182
17183 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017184 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017185 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017186 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017188 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017189 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017190 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017191 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17192
Jeff Johnsone7245742012-09-05 17:12:55 -070017193 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017194 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17195 }
17196
17197 /*Association no longer in progress */
17198 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17199
17200 /*Association no longer in progress - prepare pending assoc for processing*/
17201 WDI_DequeueAssocRequest(pWDICtx);
17202
17203 wpalMutexRelease(&pWDICtx->wptMutex);
17204
17205 /*Notify UMAC*/
17206 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17207
Jeff Johnsone7245742012-09-05 17:12:55 -070017208 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017209}/*WDI_ProcessPostAssocRsp*/
17210
17211/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017212 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017213 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017214
17215 @param pWDICtx: pointer to the WLAN DAL context
17216 pEventData: pointer to the event information structure
17217
Jeff Johnson295189b2012-06-20 16:38:30 -070017218 @see
17219 @return Result of the function call
17220*/
17221WDI_Status
17222WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017223(
Jeff Johnson295189b2012-06-20 16:38:30 -070017224 WDI_ControlBlockType* pWDICtx,
17225 WDI_EventInfoType* pEventData
17226)
17227{
17228 WDI_DelSTARspParamsType wdiDelSTARsp;
17229 WDI_DelSTARspCb wdiDelSTARspCb;
17230 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017231 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17233
17234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017235 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017236 -------------------------------------------------------------------------*/
17237 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17238 ( NULL == pEventData->pEventData))
17239 {
17240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017244 }
17245
17246 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17247
17248 /*-------------------------------------------------------------------------
17249 Extract response and send it to UMAC
17250 -------------------------------------------------------------------------*/
17251 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017252 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017253 sizeof(halDelStaRspMsg.delStaRspParams));
17254
17255 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017256 wdiDelSTARsp.wdiStatus =
17257 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017258
17259 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17260
17261 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17262 if(staType == WDI_STA_ENTRY_SELF)
17263 {
17264 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17265
17266 /* At this point add the self-STA */
17267
17268 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17269 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17270 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17271
17272#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17273#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17274
17275 //all DPU indices are the same for self STA
17276 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17277 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17278 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17279 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17280 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17281 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017282
17283 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017284 }
17285 else
17286 {
17287 //Delete the station in the table
17288 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17289 }
17290
17291 /*Notify UMAC*/
17292 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17293
Jeff Johnsone7245742012-09-05 17:12:55 -070017294 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017295}/*WDI_ProcessDelSTARsp*/
17296
17297
17298/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017299 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017300==========================================================================*/
17301
17302/**
17303 @brief Process Set BSS Key Rsp function (called when a response
17304 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017305
17306 @param pWDICtx: pointer to the WLAN DAL context
17307 pEventData: pointer to the event information structure
17308
Jeff Johnson295189b2012-06-20 16:38:30 -070017309 @see
17310 @return Result of the function call
17311*/
17312WDI_Status
17313WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017314(
Jeff Johnson295189b2012-06-20 16:38:30 -070017315 WDI_ControlBlockType* pWDICtx,
17316 WDI_EventInfoType* pEventData
17317)
17318{
17319 WDI_Status wdiStatus;
17320 eHalStatus halStatus;
17321 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17323
17324 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017325 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017326 -------------------------------------------------------------------------*/
17327 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17328 ( NULL == pEventData->pEventData))
17329 {
17330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017331 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017332 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017334 }
17335
17336 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17337
17338 /*-------------------------------------------------------------------------
17339 Extract response and send it to UMAC
17340 -------------------------------------------------------------------------*/
17341 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017342 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017343
17344 if ( eHAL_STATUS_SUCCESS != halStatus )
17345 {
17346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17347 "Set BSS Key failed with status %s (%d)",
17348 WDI_getHALStatusMsgString(halStatus),
17349 halStatus);
17350 /* send the status to UMAC, don't return from here*/
17351 }
17352
17353 /*Notify UMAC*/
17354 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17355
Jeff Johnsone7245742012-09-05 17:12:55 -070017356 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017357}/*WDI_ProcessSetBssKeyRsp*/
17358
17359/**
17360 @brief Process Remove BSS Key Rsp function (called when a response
17361 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017362
17363 @param pWDICtx: pointer to the WLAN DAL context
17364 pEventData: pointer to the event information structure
17365
Jeff Johnson295189b2012-06-20 16:38:30 -070017366 @see
17367 @return Result of the function call
17368*/
17369WDI_Status
17370WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017371(
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 WDI_ControlBlockType* pWDICtx,
17373 WDI_EventInfoType* pEventData
17374)
17375{
17376 WDI_Status wdiStatus;
17377 eHalStatus halStatus;
17378 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17380
17381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017382 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017383 -------------------------------------------------------------------------*/
17384 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17385 ( NULL == pEventData->pEventData))
17386 {
17387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017388 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017391 }
17392
17393 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17394
17395 /*-------------------------------------------------------------------------
17396 Extract response and send it to UMAC
17397 -------------------------------------------------------------------------*/
17398 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017399 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017400
17401 if ( eHAL_STATUS_SUCCESS != halStatus )
17402 {
17403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17404 "Remove BSS Key failed with status %s (%d )",
17405 WDI_getHALStatusMsgString(halStatus),
17406 halStatus);
17407 /* send the status to UMAC, don't return from here*/
17408 }
17409
17410 /*Notify UMAC*/
17411 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17412
Jeff Johnsone7245742012-09-05 17:12:55 -070017413 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017414}/*WDI_ProcessSetBssKeyRsp*/
17415
17416
17417/**
17418 @brief Process Set STA Key Rsp function (called when a response
17419 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017420
17421 @param pWDICtx: pointer to the WLAN DAL context
17422 pEventData: pointer to the event information structure
17423
Jeff Johnson295189b2012-06-20 16:38:30 -070017424 @see
17425 @return Result of the function call
17426*/
17427WDI_Status
17428WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017429(
Jeff Johnson295189b2012-06-20 16:38:30 -070017430 WDI_ControlBlockType* pWDICtx,
17431 WDI_EventInfoType* pEventData
17432)
17433{
17434 WDI_Status wdiStatus;
17435 eHalStatus halStatus;
17436 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17438
17439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017440 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017441 -------------------------------------------------------------------------*/
17442 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17443 ( NULL == pEventData->pEventData))
17444 {
17445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017446 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017447 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017449 }
17450
17451 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17452
17453 /*-------------------------------------------------------------------------
17454 Extract response and send it to UMAC
17455 -------------------------------------------------------------------------*/
17456 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017457 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017458
17459 if ( eHAL_STATUS_SUCCESS != halStatus )
17460 {
17461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17462 "Set STA Key failed with status %s (%d)",
17463 WDI_getHALStatusMsgString(halStatus),
17464 halStatus);
17465 /* send the status to UMAC, don't return from here*/
17466 }
17467
17468 /*Notify UMAC*/
17469 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17470
Jeff Johnsone7245742012-09-05 17:12:55 -070017471 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017472}/*WDI_ProcessSetSTAKeyRsp*/
17473
17474/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017475 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017476 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017477
17478 @param pWDICtx: pointer to the WLAN DAL context
17479 pEventData: pointer to the event information structure
17480
Jeff Johnson295189b2012-06-20 16:38:30 -070017481 @see
17482 @return Result of the function call
17483*/
17484WDI_Status
17485WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017486(
Jeff Johnson295189b2012-06-20 16:38:30 -070017487 WDI_ControlBlockType* pWDICtx,
17488 WDI_EventInfoType* pEventData
17489)
17490{
17491 WDI_Status wdiStatus;
17492 eHalStatus halStatus;
17493 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17495
17496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017497 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017498 -------------------------------------------------------------------------*/
17499 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17500 ( NULL == pEventData->pEventData))
17501 {
17502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017503 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017506 }
17507
17508 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17509
17510 /*-------------------------------------------------------------------------
17511 Extract response and send it to UMAC
17512 -------------------------------------------------------------------------*/
17513 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017514 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017515
17516 if ( eHAL_STATUS_SUCCESS != halStatus )
17517 {
17518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17519 "Remove STA Key failed with status %s (%d)",
17520 WDI_getHALStatusMsgString(halStatus),
17521 halStatus);
17522 /* send the status to UMAC, don't return from here*/
17523 }
17524
17525 /*Notify UMAC*/
17526 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17527
Jeff Johnsone7245742012-09-05 17:12:55 -070017528 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017529}/*WDI_ProcessRemoveStaKeyRsp*/
17530
17531/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017532 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017533 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017534
17535 @param pWDICtx: pointer to the WLAN DAL context
17536 pEventData: pointer to the event information structure
17537
Jeff Johnson295189b2012-06-20 16:38:30 -070017538 @see
17539 @return Result of the function call
17540*/
17541WDI_Status
17542WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017543(
Jeff Johnson295189b2012-06-20 16:38:30 -070017544 WDI_ControlBlockType* pWDICtx,
17545 WDI_EventInfoType* pEventData
17546)
17547{
17548 WDI_Status wdiStatus;
17549 eHalStatus halStatus;
17550 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17552
17553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017554 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017555 -------------------------------------------------------------------------*/
17556 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17557 ( NULL == pEventData->pEventData))
17558 {
17559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017560 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017563 }
17564
17565 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17566
17567 /*-------------------------------------------------------------------------
17568 Extract response and send it to UMAC
17569 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017570 wpalMemoryCopy( &halStatus,
17571 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017572 sizeof(halStatus));
17573
Jeff Johnsone7245742012-09-05 17:12:55 -070017574 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017575
17576 if ( eHAL_STATUS_SUCCESS != halStatus )
17577 {
17578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17579 "Set STA Key failed with status %s (%d)",
17580 WDI_getHALStatusMsgString(halStatus),
17581 halStatus);
17582 /* send the status to UMAC, don't return from here*/
17583 }
17584
17585 /*Notify UMAC*/
17586 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17587
Jeff Johnsone7245742012-09-05 17:12:55 -070017588 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017589}/*WDI_ProcessSetSTABcastKeyRsp*/
17590
17591/**
17592 @brief Process Remove STA Bcast Key Rsp function (called when a
17593 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017594
17595 @param pWDICtx: pointer to the WLAN DAL context
17596 pEventData: pointer to the event information structure
17597
Jeff Johnson295189b2012-06-20 16:38:30 -070017598 @see
17599 @return Result of the function call
17600*/
17601WDI_Status
17602WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017603(
Jeff Johnson295189b2012-06-20 16:38:30 -070017604 WDI_ControlBlockType* pWDICtx,
17605 WDI_EventInfoType* pEventData
17606)
17607{
17608 WDI_Status wdiStatus;
17609 eHalStatus halStatus;
17610 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17612
17613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017614 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017615 -------------------------------------------------------------------------*/
17616 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17617 ( NULL == pEventData->pEventData))
17618 {
17619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017620 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017623 }
17624
17625 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17626
17627 /*-------------------------------------------------------------------------
17628 Extract response and send it to UMAC
17629 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017630 wpalMemoryCopy( &halStatus,
17631 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017632 sizeof(halStatus));
17633
Jeff Johnsone7245742012-09-05 17:12:55 -070017634 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017635
17636 if ( eHAL_STATUS_SUCCESS != halStatus )
17637 {
17638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17639 "Remove STA Key failed with status %s (%d)",
17640 WDI_getHALStatusMsgString(halStatus),
17641 halStatus);
17642 /* send the status to UMAC, don't return from here*/
17643 }
17644
17645 /*Notify UMAC*/
17646 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17647
Jeff Johnsone7245742012-09-05 17:12:55 -070017648 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017649}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17650
17651
17652/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017653 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017654==========================================================================*/
17655
17656/**
17657 @brief Process Add TSpec Rsp function (called when a response
17658 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017659
17660 @param pWDICtx: pointer to the WLAN DAL context
17661 pEventData: pointer to the event information structure
17662
Jeff Johnson295189b2012-06-20 16:38:30 -070017663 @see
17664 @return Result of the function call
17665*/
17666WDI_Status
17667WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017668(
Jeff Johnson295189b2012-06-20 16:38:30 -070017669 WDI_ControlBlockType* pWDICtx,
17670 WDI_EventInfoType* pEventData
17671)
17672{
17673 WDI_Status wdiStatus;
17674 eHalStatus halStatus;
17675 WDI_AddTsRspCb wdiAddTsRspCb;
17676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17677
17678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017679 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017680 -------------------------------------------------------------------------*/
17681 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17682 ( NULL == pEventData->pEventData))
17683 {
17684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017688 }
17689
17690 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17691
17692 /*-------------------------------------------------------------------------
17693 Extract response and send it to UMAC
17694 -------------------------------------------------------------------------*/
17695 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017696 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017697
17698 /*Notify UMAC*/
17699 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17700
Jeff Johnsone7245742012-09-05 17:12:55 -070017701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017702}/*WDI_ProcessAddTSpecRsp*/
17703
17704
Sunil Duttbd736ed2014-05-26 21:19:41 +053017705
17706#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17707
17708WDI_Status
17709WDI_ProcessLLStatsSetRsp
17710(
17711 WDI_ControlBlockType* pWDICtx,
17712 WDI_EventInfoType* pEventData
17713)
17714{
17715 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17716
17717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17718 "%s: Enter ", __func__);
17719 /*-------------------------------------------------------------------------
17720 Sanity check
17721 -------------------------------------------------------------------------*/
17722 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17723 ( NULL == pEventData->pEventData))
17724 {
17725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17726 "%s: Invalid parameters", __func__);
17727 WDI_ASSERT(0);
17728 return WDI_STATUS_E_FAILURE;
17729 }
17730
17731 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17732
17733 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17734
17735 return WDI_STATUS_SUCCESS;
17736}
17737
17738WDI_Status
17739WDI_ProcessLLStatsGetRsp
17740(
17741 WDI_ControlBlockType* pWDICtx,
17742 WDI_EventInfoType* pEventData
17743)
17744{
17745 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17746
17747 /*-------------------------------------------------------------------------
17748 Sanity check
17749 -------------------------------------------------------------------------*/
17750 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17751 ( NULL == pEventData->pEventData))
17752 {
17753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17754 "%s: Invalid parameters", __func__);
17755 WDI_ASSERT(0);
17756 return WDI_STATUS_E_FAILURE;
17757 }
17758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17759 "%s: Enter ", __func__);
17760
17761 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17762
17763 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17764
17765 return WDI_STATUS_SUCCESS;
17766}
17767
17768WDI_Status
17769WDI_ProcessLLStatsClearRsp
17770(
17771 WDI_ControlBlockType* pWDICtx,
17772 WDI_EventInfoType* pEventData
17773)
17774{
17775 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17776
17777 /*-------------------------------------------------------------------------
17778 Sanity check
17779 -------------------------------------------------------------------------*/
17780 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17781 ( NULL == pEventData->pEventData))
17782 {
17783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17784 "%s: Invalid parameters", __func__);
17785 WDI_ASSERT(0);
17786 return WDI_STATUS_E_FAILURE;
17787 }
17788
17789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17790 "%s: CLEAR RESPONSE CALL BACK", __func__);
17791 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17792
17793 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17794
17795 return WDI_STATUS_SUCCESS;
17796}
17797#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17798
Jeff Johnson295189b2012-06-20 16:38:30 -070017799/**
17800 @brief Process Del TSpec Rsp function (called when a response
17801 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017802
17803 @param pWDICtx: pointer to the WLAN DAL context
17804 pEventData: pointer to the event information structure
17805
Jeff Johnson295189b2012-06-20 16:38:30 -070017806 @see
17807 @return Result of the function call
17808*/
17809WDI_Status
17810WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017811(
Jeff Johnson295189b2012-06-20 16:38:30 -070017812 WDI_ControlBlockType* pWDICtx,
17813 WDI_EventInfoType* pEventData
17814)
17815{
17816 WDI_Status wdiStatus;
17817 eHalStatus halStatus;
17818 WDI_DelTsRspCb wdiDelTsRspCb;
17819 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17820
17821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017822 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017823 -------------------------------------------------------------------------*/
17824 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17825 ( NULL == pEventData->pEventData))
17826 {
17827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017828 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017829 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017831 }
17832
17833 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17834
17835 /*-------------------------------------------------------------------------
17836 Extract response and send it to UMAC
17837 -------------------------------------------------------------------------*/
17838 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017839 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017840
17841 /*Notify UMAC*/
17842 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17843
Jeff Johnsone7245742012-09-05 17:12:55 -070017844 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017845}/*WDI_ProcessDelTSpecRsp*/
17846
17847/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017848 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017849 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017850
17851 @param pWDICtx: pointer to the WLAN DAL context
17852 pEventData: pointer to the event information structure
17853
Jeff Johnson295189b2012-06-20 16:38:30 -070017854 @see
17855 @return Result of the function call
17856*/
17857WDI_Status
17858WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017859(
Jeff Johnson295189b2012-06-20 16:38:30 -070017860 WDI_ControlBlockType* pWDICtx,
17861 WDI_EventInfoType* pEventData
17862)
17863{
17864 WDI_Status wdiStatus;
17865 eHalStatus halStatus;
17866 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17868
17869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017871 -------------------------------------------------------------------------*/
17872 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17873 ( NULL == pEventData->pEventData))
17874 {
17875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017879 }
17880
17881 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17882
17883 /*-------------------------------------------------------------------------
17884 Extract response and send it to UMAC
17885 -------------------------------------------------------------------------*/
17886 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017887 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017888
17889 /*Notify UMAC*/
17890 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17891
Jeff Johnsone7245742012-09-05 17:12:55 -070017892 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017893}/*WDI_ProcessUpdateEDCAParamsRsp*/
17894
17895
17896/**
17897 @brief Process Add BA Rsp function (called when a response
17898 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017899
17900 @param pWDICtx: pointer to the WLAN DAL context
17901 pEventData: pointer to the event information structure
17902
Jeff Johnson295189b2012-06-20 16:38:30 -070017903 @see
17904 @return Result of the function call
17905*/
17906WDI_Status
17907WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017908(
Jeff Johnson295189b2012-06-20 16:38:30 -070017909 WDI_ControlBlockType* pWDICtx,
17910 WDI_EventInfoType* pEventData
17911)
17912{
17913 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17914
17915 tAddBASessionRspParams halBASessionRsp;
17916 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17917
Jeff Johnsone7245742012-09-05 17:12:55 -070017918
Jeff Johnson295189b2012-06-20 16:38:30 -070017919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17920
17921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017922 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017923 -------------------------------------------------------------------------*/
17924 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17925 ( NULL == pEventData->pEventData))
17926 {
17927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017928 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017931 }
17932
17933 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17934
17935 /*-------------------------------------------------------------------------
17936 Extract response and send it to UMAC
17937 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017938 wpalMemoryCopy( &halBASessionRsp,
17939 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017940 sizeof(halBASessionRsp));
17941
17942 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17943
Jeff Johnson43971f52012-07-17 12:26:56 -070017944 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017945 {
17946 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17947 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17948 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17949 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17950 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17951 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17952 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17953 }
17954
17955 /*Notify UMAC*/
17956 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17957
Jeff Johnsone7245742012-09-05 17:12:55 -070017958 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017959}/*WDI_ProcessAddSessionBARsp*/
17960
17961
17962/**
17963 @brief Process Del BA Rsp function (called when a response
17964 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017965
17966 @param pWDICtx: pointer to the WLAN DAL context
17967 pEventData: pointer to the event information structure
17968
Jeff Johnson295189b2012-06-20 16:38:30 -070017969 @see
17970 @return Result of the function call
17971*/
17972WDI_Status
17973WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017974(
Jeff Johnson295189b2012-06-20 16:38:30 -070017975 WDI_ControlBlockType* pWDICtx,
17976 WDI_EventInfoType* pEventData
17977)
17978{
17979 WDI_Status wdiStatus;
17980 eHalStatus halStatus;
17981 WDI_DelBARspCb wdiDelBARspCb;
17982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17983
17984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017985 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017986 -------------------------------------------------------------------------*/
17987 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17988 ( NULL == pEventData->pEventData))
17989 {
17990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017991 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017994 }
17995
17996 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17997
17998 /*-------------------------------------------------------------------------
17999 Extract response and send it to UMAC
18000 -------------------------------------------------------------------------*/
18001 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018002 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018003
18004 if ( eHAL_STATUS_SUCCESS == halStatus )
18005 {
18006 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18007 }
18008
18009 /*Notify UMAC*/
18010 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
18011
Jeff Johnsone7245742012-09-05 17:12:55 -070018012 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018013}/*WDI_ProcessDelBARsp*/
18014
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018015#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070018016/**
18017 @brief Process TSM Stats Rsp function (called when a response
18018 is being received over the bus from HAL)
18019
18020 @param pWDICtx: pointer to the WLAN DAL context
18021 pEventData: pointer to the event information structure
18022
18023 @see
18024 @return Result of the function call
18025*/
18026WDI_Status
18027WDI_ProcessTsmStatsRsp
18028(
18029 WDI_ControlBlockType* pWDICtx,
18030 WDI_EventInfoType* pEventData
18031)
18032{
18033 WDI_TsmRspCb wdiTsmStatsRspCb;
18034 tTsmStatsRspMsg halTsmStatsRspMsg;
18035 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
18036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18037
18038 /*-------------------------------------------------------------------------
18039 Sanity check
18040 -------------------------------------------------------------------------*/
18041 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18042 ( NULL == pEventData->pEventData))
18043 {
18044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018045 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018046 WDI_ASSERT(0);
18047 return WDI_STATUS_E_FAILURE;
18048 }
18049
18050 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
18051
18052 /*-------------------------------------------------------------------------
18053 Unpack HAL Response Message - the header was already extracted by the
18054 main Response Handling procedure
18055 -------------------------------------------------------------------------*/
18056 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
18057 pEventData->pEventData,
18058 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
18059
18060 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
18061 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
18062 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
18063 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
18064 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
18065 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
18066 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
18067 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
18068 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18069 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18070 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18071 halTsmStatsRspMsg.tsmStatsRspParams.status);
18072
18073 /*Notify UMAC*/
18074 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18075
18076 return WDI_STATUS_SUCCESS;
18077}/*WDI_ProcessTsmStatsRsp*/
18078
18079#endif
18080
18081
18082
18083/**
18084 @brief Process Flush AC Rsp function (called when a response
18085 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018086
18087 @param pWDICtx: pointer to the WLAN DAL context
18088 pEventData: pointer to the event information structure
18089
Jeff Johnson295189b2012-06-20 16:38:30 -070018090 @see
18091 @return Result of the function call
18092*/
18093WDI_Status
18094WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018095(
Jeff Johnson295189b2012-06-20 16:38:30 -070018096 WDI_ControlBlockType* pWDICtx,
18097 WDI_EventInfoType* pEventData
18098)
18099{
18100 WDI_Status wdiStatus;
18101 eHalStatus halStatus;
18102 WDI_FlushAcRspCb wdiFlushAcRspCb;
18103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18104
18105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018106 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018107 -------------------------------------------------------------------------*/
18108 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18109 ( NULL == pEventData->pEventData))
18110 {
18111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018112 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018113 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018114 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018115 }
18116
18117 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18118
18119 /*-------------------------------------------------------------------------
18120 Extract response and send it to UMAC
18121 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018122 wpalMemoryCopy( &halStatus,
18123 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018124 sizeof(halStatus));
18125
Jeff Johnsone7245742012-09-05 17:12:55 -070018126 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018127
18128 /*Notify UMAC*/
18129 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18130
Jeff Johnsone7245742012-09-05 17:12:55 -070018131 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018132}/*WDI_ProcessFlushAcRsp*/
18133
18134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018135 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018136 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018137
18138 @param pWDICtx: pointer to the WLAN DAL context
18139 pEventData: pointer to the event information structure
18140
Jeff Johnson295189b2012-06-20 16:38:30 -070018141 @see
18142 @return Result of the function call
18143*/
18144WDI_Status
18145WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018146(
Jeff Johnson295189b2012-06-20 16:38:30 -070018147 WDI_ControlBlockType* pWDICtx,
18148 WDI_EventInfoType* pEventData
18149)
18150{
18151 WDI_Status wdiStatus;
18152 eHalStatus halStatus;
18153 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18155
18156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018158 -------------------------------------------------------------------------*/
18159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18160 ( NULL == pEventData->pEventData))
18161 {
18162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018166 }
18167
18168 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18169
18170 /*-------------------------------------------------------------------------
18171 Extract response and send it to UMAC
18172 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018173 wpalMemoryCopy( &halStatus,
18174 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018175 sizeof(halStatus));
18176
Jeff Johnsone7245742012-09-05 17:12:55 -070018177 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018178
18179 /*Notify UMAC*/
18180 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18181
Jeff Johnsone7245742012-09-05 17:12:55 -070018182 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018183}/*WDI_ProcessBtAmpEventRsp*/
18184
18185
18186/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018187 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018188 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018189
18190 @param pWDICtx: pointer to the WLAN DAL context
18191 pEventData: pointer to the event information structure
18192
Jeff Johnson295189b2012-06-20 16:38:30 -070018193 @see
18194 @return Result of the function call
18195*/
18196WDI_Status
18197WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018198(
Jeff Johnson295189b2012-06-20 16:38:30 -070018199 WDI_ControlBlockType* pWDICtx,
18200 WDI_EventInfoType* pEventData
18201)
18202{
18203 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18204 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18205 tAddStaSelfRspMsg halAddStaSelfRsp;
18206 WDI_AddStaParams wdiAddSTAParam = {0};
18207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18208
18209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018211 -------------------------------------------------------------------------*/
18212 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18213 ( NULL == pEventData->pEventData))
18214 {
18215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 }
18220
Jeff Johnsone7245742012-09-05 17:12:55 -070018221 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018222 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18223
18224 /*-------------------------------------------------------------------------
18225 Extract response and send it to UMAC
18226 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018227 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18228 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018229 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18230
18231
Jeff Johnsone7245742012-09-05 17:12:55 -070018232 wdiAddSTASelfParams.wdiStatus =
18233 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018234
Jeff Johnsone7245742012-09-05 17:12:55 -070018235 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018236 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018237 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018238 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018239 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018240 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18241
18242 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18243 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18244 WDI_MAC_ADDR_LEN);
18245
18246
18247#ifdef HAL_SELF_STA_PER_BSS
18248
18249 /* At this point add the self-STA */
18250
18251 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18252 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18253 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18254
18255 //all DPU indices are the same for self STA
18256
18257 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018258 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018259 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18260 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18261 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18262 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18263 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18264
18265 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18266 WDI_MAC_ADDR_LEN);
18267
18268 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18269 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18270
Jeff Johnsone7245742012-09-05 17:12:55 -070018271 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018272 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18273 {
18274 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18275 }
18276#endif
18277
18278 /*Notify UMAC*/
18279 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18280
Jeff Johnsone7245742012-09-05 17:12:55 -070018281 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018282}/*WDI_ProcessAddSTASelfRsp*/
18283
18284
18285
18286/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018287 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018288 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018289
18290 @param pWDICtx: pointer to the WLAN DAL context
18291 pEventData: pointer to the event information structure
18292
Jeff Johnson295189b2012-06-20 16:38:30 -070018293 @see
18294 @return Result of the function call
18295*/
18296WDI_Status
18297WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018298(
Jeff Johnson295189b2012-06-20 16:38:30 -070018299 WDI_ControlBlockType* pWDICtx,
18300 WDI_EventInfoType* pEventData
18301)
18302{
18303 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18304 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18305 tDelStaSelfRspParams delStaSelfRspParams;
18306 wpt_uint8 ucStaIdx;
18307
18308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18309
18310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018312 -------------------------------------------------------------------------*/
18313 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18314 ( NULL == pEventData->pEventData))
18315 {
18316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018317 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018320 }
18321
18322 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18323
18324 /*-------------------------------------------------------------------------
18325 Extract response and send it to UMAC
18326 -------------------------------------------------------------------------*/
18327
Jeff Johnsone7245742012-09-05 17:12:55 -070018328 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018329 (wpt_uint8*)pEventData->pEventData,
18330 sizeof(tDelStaSelfRspParams));
18331
Jeff Johnsone7245742012-09-05 17:12:55 -070018332 wdiDelStaSelfRspParams.wdiStatus =
18333 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018334
Jeff Johnsone7245742012-09-05 17:12:55 -070018335 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018336 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18337 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18338 {
18339 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018340 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018341 delStaSelfRspParams.selfMacAddr,
18342 &ucStaIdx);
18343 if(WDI_STATUS_E_FAILURE == wdiStatus)
18344 {
18345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018346 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018349 }
18350 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18351 }
18352
18353 /*Notify UMAC*/
18354 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18355
18356 return WDI_STATUS_SUCCESS;
18357}
18358
Jeff Johnsone7245742012-09-05 17:12:55 -070018359#ifdef FEATURE_OEM_DATA_SUPPORT
18360/**
18361 @brief Start Oem Data Rsp function (called when a
18362 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018363
Jeff Johnsone7245742012-09-05 17:12:55 -070018364 @param pWDICtx: pointer to the WLAN DAL context
18365 pEventData: pointer to the event information structure
18366
18367 @see
18368 @return Result of the function call
18369*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018370
18371WDI_Status
18372WDI_ProcessStartOemDataRsp
18373(
18374 WDI_ControlBlockType* pWDICtx,
18375 WDI_EventInfoType* pEventData
18376)
18377{
18378 WDI_oemDataRspCb wdiOemDataRspCb;
18379 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18380 tStartOemDataRspParams* halStartOemDataRspParams;
18381
18382 /*-------------------------------------------------------------------------
18383 Sanity check
18384 -------------------------------------------------------------------------*/
18385 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18386 ( NULL == pEventData->pEventData))
18387 {
18388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018389 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018390 WDI_ASSERT(0);
18391 return WDI_STATUS_E_FAILURE;
18392 }
18393
18394 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18395
18396 /*-------------------------------------------------------------------------
18397 Extract response and send it to UMAC
18398 -------------------------------------------------------------------------*/
18399 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18400
18401
18402 //It is the responsibility of the application code to check for failure
18403 //conditions!
18404
18405 //Allocate memory for WDI OEM DATA RSP structure
18406 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18407
18408 if(NULL == wdiOemDataRspParams)
18409 {
18410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018411 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018412 pWDICtx, pEventData, pEventData->pEventData);
18413 WDI_ASSERT(0);
18414 return WDI_STATUS_E_FAILURE;
18415 }
18416
18417 /* Populate WDI structure members */
18418 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18419
18420 /*Notify UMAC*/
18421 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18422
18423 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18424 wpalMemoryFree(wdiOemDataRspParams);
18425
18426 return WDI_STATUS_SUCCESS;
18427}/*WDI_PrcoessStartOemDataRsp*/
18428#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018429
18430/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018431 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018432===========================================================================*/
18433
18434/**
18435 @brief Process Channel Switch Rsp function (called when a response
18436 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018437
18438 @param pWDICtx: pointer to the WLAN DAL context
18439 pEventData: pointer to the event information structure
18440
Jeff Johnson295189b2012-06-20 16:38:30 -070018441 @see
18442 @return Result of the function call
18443*/
18444WDI_Status
18445WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018446(
Jeff Johnson295189b2012-06-20 16:38:30 -070018447 WDI_ControlBlockType* pWDICtx,
18448 WDI_EventInfoType* pEventData
18449)
18450{
18451 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18452 WDI_SwitchChRspCb wdiChSwitchRspCb;
18453 tSwitchChannelRspParams halSwitchChannelRsp;
18454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18455
18456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018457 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018458 -------------------------------------------------------------------------*/
18459 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18460 ( NULL == pEventData->pEventData))
18461 {
18462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018463 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018464 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018465 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018466 }
18467
18468 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18469
18470 /*-------------------------------------------------------------------------
18471 Extract response and send it to UMAC
18472 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018473 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018474 (wpt_uint8*)pEventData->pEventData,
18475 sizeof(halSwitchChannelRsp));
18476
Jeff Johnsone7245742012-09-05 17:12:55 -070018477 wdiSwitchChRsp.wdiStatus =
18478 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018479 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18480
18481#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018482 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018483#endif
18484
18485 /*Notify UMAC*/
18486 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18487
Jeff Johnsone7245742012-09-05 17:12:55 -070018488 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018489}/*WDI_ProcessChannelSwitchRsp*/
18490
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018491/**
18492 @brief Process Channel Switch Rsp function (called when a response
18493 is being received over the bus from HAL against
18494 WDI_ProcessChannelSwitchReq_V1)
18495
18496 @param pWDICtx: pointer to the WLAN DAL context
18497 pEventData: pointer to the event information structure
18498
18499 @see
18500 @return Result of the function call
18501*/
18502
18503WDI_Status
18504WDI_ProcessChannelSwitchRsp_V1
18505(
18506 WDI_ControlBlockType* pWDICtx,
18507 WDI_EventInfoType* pEventData
18508)
18509{
18510 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18511 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18512 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18514
18515 /*-------------------------------------------------------------------------
18516 Sanity check
18517 -------------------------------------------------------------------------*/
18518 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18519 ( NULL == pEventData->pEventData))
18520 {
18521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18522 "%s: Invalid parameters", __func__);
18523 WDI_ASSERT(0);
18524 return WDI_STATUS_E_FAILURE;
18525 }
18526
18527 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18528
18529 /*-------------------------------------------------------------------------
18530 Extract response and send it to UMAC
18531 -------------------------------------------------------------------------*/
18532 wpalMemoryCopy( &halSwitchChannelRsp,
18533 (wpt_uint8*)pEventData->pEventData,
18534 sizeof(halSwitchChannelRsp));
18535
18536 wdiSwitchChRsp.wdiStatus =
18537 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18538 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18539
18540#ifdef WLAN_FEATURE_VOWIFI
18541 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18542#endif
18543
18544 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18545 if (( NULL == wdiChSwitchRspCb ) )
18546 {
18547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18548 "%s: ### Call back function is null", __func__);
18549 WDI_ASSERT(0);
18550 return WDI_STATUS_E_FAILURE;
18551 }
18552 /*Notify UMAC*/
18553 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18554
18555 return WDI_STATUS_SUCCESS;
18556}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018557
18558/**
18559 @brief Process Config STA Rsp function (called when a response
18560 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018561
18562 @param pWDICtx: pointer to the WLAN DAL context
18563 pEventData: pointer to the event information structure
18564
Jeff Johnson295189b2012-06-20 16:38:30 -070018565 @see
18566 @return Result of the function call
18567*/
18568WDI_Status
18569WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018570(
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 WDI_ControlBlockType* pWDICtx,
18572 WDI_EventInfoType* pEventData
18573)
18574{
18575 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18576 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18577 WDI_AddStaParams wdiAddSTAParam;
18578
18579 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018580 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018581
Jeff Johnsone7245742012-09-05 17:12:55 -070018582 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18584
18585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018587 -------------------------------------------------------------------------*/
18588 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18589 ( NULL == pEventData->pEventData))
18590 {
18591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018595 }
18596
18597 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18598
18599 /*-------------------------------------------------------------------------
18600 Extract response and send it to UMAC
18601 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018602 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18603 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018604 sizeof(halConfigStaRsp.configStaRspParams));
18605
18606
18607 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18608 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18609 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18610 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18611 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18612
18613 /* MAC Address of STA - take from cache as it does not come back in the
18614 response*/
18615 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018616 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018617 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018618
18619 wdiCfgSTAParams.wdiStatus =
18620 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018621
18622 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18623 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18624 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18625
18626 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18627 {
18628 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18629 {
18630 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018631 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018632 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18633 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018634
Jeff Johnson295189b2012-06-20 16:38:30 -070018635 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018636 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018637 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018638 wdiAddSTAParam.ucHTCapable =
18639 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18640 wdiAddSTAParam.ucStaType =
18641 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018642 wdiAddSTAParam.ucRmfEnabled =
18643 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018644
Jeff Johnson295189b2012-06-20 16:38:30 -070018645 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018646 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18647 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018648 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018649
18650 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18651 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18652 WDI_MAC_ADDR_LEN);
18653
18654 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18655 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18656 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018657
18658 if ( NULL == pBSSSes )
18659 {
18660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18661 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018662
Jeff Johnson295189b2012-06-20 16:38:30 -070018663 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018664 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018665 }
18666
18667 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018668 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018669 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018670 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018671 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018672 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018673 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018674 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018675 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018676 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018677
Jeff Johnson295189b2012-06-20 16:38:30 -070018678 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18679 }
18680 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18681 {
18682 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18683
Jeff Johnsone7245742012-09-05 17:12:55 -070018684 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018685 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018686 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018687 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018688 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018689 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018690 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018691 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018692 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018693 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018694 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018695 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018696 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018697 halConfigStaRsp.configStaRspParams.ucUcastSig;
18698 }
18699 }
18700
18701 /*Notify UMAC*/
18702 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18703
Jeff Johnsone7245742012-09-05 17:12:55 -070018704 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018705}/*WDI_ProcessConfigStaRsp*/
18706
18707
18708/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018709 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018710 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018711
18712 @param pWDICtx: pointer to the WLAN DAL context
18713 pEventData: pointer to the event information structure
18714
Jeff Johnson295189b2012-06-20 16:38:30 -070018715 @see
18716 @return Result of the function call
18717*/
18718WDI_Status
18719WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018720(
Jeff Johnson295189b2012-06-20 16:38:30 -070018721 WDI_ControlBlockType* pWDICtx,
18722 WDI_EventInfoType* pEventData
18723)
18724{
18725 WDI_Status wdiStatus;
18726 eHalStatus halStatus;
18727 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18728
18729 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018730 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18732
18733 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018734 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018735 -------------------------------------------------------------------------*/
18736 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18737 ( NULL == pEventData->pEventData))
18738 {
18739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018740 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018741 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018742 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 }
18744
18745 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18746
18747 wpalMutexAcquire(&pWDICtx->wptMutex);
18748
18749 /*If the link is being transitioned to idle - the BSS is to be deleted
18750 - this type of ending a session is possible when UMAC has failed an
18751 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018752 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018753 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18754 {
18755 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018756 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018757 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018758 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18759 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18760 &pBSSSes);
18761
Jeff Johnson295189b2012-06-20 16:38:30 -070018762 /*-----------------------------------------------------------------------
18763 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018764 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018765 -----------------------------------------------------------------------*/
18766 if ( NULL == pBSSSes )
18767 {
18768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18769 "Set link response received outside association session");
18770 }
18771 else
18772 {
18773 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18774 will be del BSS coming after this to stop the beaconing & cleaning up the
18775 sessions*/
18776 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18777 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18778 {
18779 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018780 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018781 -----------------------------------------------------------------------*/
18782 WDI_DeleteSession(pWDICtx, pBSSSes);
18783
18784 /*-----------------------------------------------------------------------
18785 Check to see if this association is in progress - if so disable the
18786 flag as this has ended
18787 -----------------------------------------------------------------------*/
18788 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018789 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018790 /*Association no longer in progress */
18791 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18792 /*Association no longer in progress - prepare pending assoc for processing*/
18793 WDI_DequeueAssocRequest(pWDICtx);
18794 }
18795 }
18796 }
18797 }
18798 /* If the link state has been set to POST ASSOC, reset the "association in
18799 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018800 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018801 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18802 {
18803 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18804 WDI_DequeueAssocRequest(pWDICtx);
18805 }
18806
18807 wpalMutexRelease(&pWDICtx->wptMutex);
18808
18809 /*-------------------------------------------------------------------------
18810 Extract response and send it to UMAC
18811 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018812 wpalMemoryCopy( &halStatus,
18813 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018814 sizeof(halStatus));
18815
Jeff Johnsone7245742012-09-05 17:12:55 -070018816 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018817
18818 /*Notify UMAC*/
18819 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18820
Jeff Johnsone7245742012-09-05 17:12:55 -070018821 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018822}/*WDI_ProcessSetLinkStateRsp*/
18823
18824/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018825 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018826 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018827
18828 @param pWDICtx: pointer to the WLAN DAL context
18829 pEventData: pointer to the event information structure
18830
Jeff Johnson295189b2012-06-20 16:38:30 -070018831 @see
18832 @return Result of the function call
18833*/
18834WDI_Status
18835WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018836(
Jeff Johnson295189b2012-06-20 16:38:30 -070018837 WDI_ControlBlockType* pWDICtx,
18838 WDI_EventInfoType* pEventData
18839)
18840{
18841 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18842 WDI_GetStatsRspCb wdiGetStatsRspCb;
18843 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018844
Jeff Johnson295189b2012-06-20 16:38:30 -070018845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18846
18847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018848 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018849 -------------------------------------------------------------------------*/
18850 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18851 ( NULL == pEventData->pEventData))
18852 {
18853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018854 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018855 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018857 }
18858
18859 /*-------------------------------------------------------------------------
18860 Extract response and send it to UMAC
18861 -------------------------------------------------------------------------*/
18862 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18863
18864 /*allocate the stats response buffer */
18865 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18866 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18867 + sizeof(WDI_GetStatsRspParamsType));
18868
18869 if(NULL == wdiGetStatsRsp)
18870 {
18871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018872 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018873 pWDICtx, pEventData, pEventData->pEventData);
18874 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018876 }
18877
18878 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18879
18880 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18881 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18882 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18883 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18884 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18885 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18886
18887 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18888 wpalMemoryCopy(wdiGetStatsRsp + 1,
18889 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18890 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18891
18892 /*Notify UMAC*/
18893 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18894
18895 wpalMemoryFree(wdiGetStatsRsp);
18896
Jeff Johnsone7245742012-09-05 17:12:55 -070018897 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018898}/*WDI_ProcessGetStatsRsp*/
18899
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018900#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018901/**
18902 @brief Process Get Roam Rssi Rsp function (called when a response is
18903 being received over the bus from HAL)
18904
18905 @param pWDICtx: pointer to the WLAN DAL context
18906 pEventData: pointer to the event information structure
18907
18908 @see
18909 @return Result of the function call
18910*/
18911WDI_Status
18912WDI_ProcessGetRoamRssiRsp
18913(
18914 WDI_ControlBlockType* pWDICtx,
18915 WDI_EventInfoType* pEventData
18916)
18917{
18918 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18919 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18920 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18922
18923 /*-------------------------------------------------------------------------
18924 Sanity check
18925 -------------------------------------------------------------------------*/
18926 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18927 ( NULL == pEventData->pEventData))
18928 {
18929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18930 "%s: Invalid parameters", __func__);
18931 WDI_ASSERT(0);
18932 return WDI_STATUS_E_FAILURE;
18933 }
18934
18935 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18936 if(NULL == wdiGetRoamRssiRspCb)
18937 {
18938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18939 "%s: call back function is NULL", __func__);
18940 WDI_ASSERT(0);
18941 return WDI_STATUS_E_FAILURE;
18942 }
18943
18944 /*-------------------------------------------------------------------------
18945 Extract response and send it to UMAC
18946 -------------------------------------------------------------------------*/
18947 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18948 pEventData->pEventData,
18949 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18950
18951 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18952 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18953 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18954
18955 /*Notify UMAC*/
18956 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18957
18958 return WDI_STATUS_SUCCESS;
18959}/*WDI_ProcessGetRoamRssiRsp*/
18960#endif
18961
Jeff Johnson295189b2012-06-20 16:38:30 -070018962
18963/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018964 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018965 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018966
18967 @param pWDICtx: pointer to the WLAN DAL context
18968 pEventData: pointer to the event information structure
18969
Jeff Johnson295189b2012-06-20 16:38:30 -070018970 @see
18971 @return Result of the function call
18972*/
18973WDI_Status
18974WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018975(
Jeff Johnson295189b2012-06-20 16:38:30 -070018976 WDI_ControlBlockType* pWDICtx,
18977 WDI_EventInfoType* pEventData
18978)
18979{
18980 WDI_Status wdiStatus;
18981 eHalStatus halStatus;
18982 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18984
18985 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018986 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018987 -------------------------------------------------------------------------*/
18988 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18989 ( NULL == pEventData->pEventData))
18990 {
18991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018995 }
18996
18997 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18998
18999 /*-------------------------------------------------------------------------
19000 Extract response and send it to UMAC
19001 -------------------------------------------------------------------------*/
19002 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019003 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019004
19005 /*Notify UMAC*/
19006 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19007
Jeff Johnsone7245742012-09-05 17:12:55 -070019008 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019009}/*WDI_ProcessUpdateCfgRsp*/
19010
19011
19012
19013/**
19014 @brief Process Add BA Rsp function (called when a response
19015 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019016
19017 @param pWDICtx: pointer to the WLAN DAL context
19018 pEventData: pointer to the event information structure
19019
Jeff Johnson295189b2012-06-20 16:38:30 -070019020 @see
19021 @return Result of the function call
19022*/
19023WDI_Status
19024WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019025(
Jeff Johnson295189b2012-06-20 16:38:30 -070019026 WDI_ControlBlockType* pWDICtx,
19027 WDI_EventInfoType* pEventData
19028)
19029{
19030 WDI_AddBARspCb wdiAddBARspCb;
19031
19032 tAddBARspParams halAddBARsp;
19033 WDI_AddBARspinfoType wdiAddBARsp;
19034
19035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19036
19037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019038 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019039 -------------------------------------------------------------------------*/
19040 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19041 ( NULL == pEventData->pEventData))
19042 {
19043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019044 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019047 }
19048
19049 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
19050
19051 /*-------------------------------------------------------------------------
19052 Extract response and send it to UMAC
19053 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019054 wpalMemoryCopy( &halAddBARsp,
19055 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019056 sizeof(halAddBARsp));
19057
19058 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
19059
Jeff Johnson43971f52012-07-17 12:26:56 -070019060 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070019061 {
19062 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
19063 }
19064
19065 /*Notify UMAC*/
19066 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
19067
Jeff Johnsone7245742012-09-05 17:12:55 -070019068 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019069}/*WDI_ProcessAddSessionBARsp*/
19070
19071/**
19072 @brief Process Add BA Rsp function (called when a response
19073 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019074
19075 @param pWDICtx: pointer to the WLAN DAL context
19076 pEventData: pointer to the event information structure
19077
Jeff Johnson295189b2012-06-20 16:38:30 -070019078 @see
19079 @return Result of the function call
19080*/
19081WDI_Status
19082WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019083(
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 WDI_ControlBlockType* pWDICtx,
19085 WDI_EventInfoType* pEventData
19086)
19087{
19088 WDI_TriggerBARspCb wdiTriggerBARspCb;
19089
19090 tTriggerBARspParams* halTriggerBARsp;
19091 tTriggerBaRspCandidate* halBaCandidate;
19092 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19093 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19094 wpt_uint16 index;
19095 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019096 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19098
19099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019100 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019101 -------------------------------------------------------------------------*/
19102 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19103 ( NULL == pEventData->pEventData))
19104 {
19105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019106 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019109 }
19110
19111 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19112
19113 /*-------------------------------------------------------------------------
19114 Extract response and send it to UMAC
19115 -------------------------------------------------------------------------*/
19116 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19117
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019118 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19119
19120 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19121 {
19122 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019123 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019124 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019125
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019126 if(NULL == wdiTriggerBARsp)
19127 {
19128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019129 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019130 pWDICtx, pEventData, pEventData->pEventData);
19131 WDI_ASSERT(0);
19132 return WDI_STATUS_E_FAILURE;
19133 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019134
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019135 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19136
Jeff Johnson295189b2012-06-20 16:38:30 -070019137 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019138 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019139 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19140
19141 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19142 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19143
19144 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19145 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019146 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019147 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19148 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19149 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019150 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019151 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019152 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019153 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19154 }
19155 wdiTriggerBARspCandidate++;
19156 halBaCandidate++;
19157 }
19158 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019159 else
19160 {
19161 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19162
19163 if(NULL == wdiTriggerBARsp)
19164 {
19165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019166 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019167 pWDICtx, pEventData, pEventData->pEventData);
19168 WDI_ASSERT(0);
19169 return WDI_STATUS_E_FAILURE;
19170 }
19171
19172 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19173
19174 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019175
19176 /*Notify UMAC*/
19177 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19178
19179 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019180 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019181}/*WDI_ProcessAddSessionBARsp*/
19182
19183/**
19184 @brief Process Update Beacon Params Rsp function (called when a response
19185 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019186
19187 @param pWDICtx: pointer to the WLAN DAL context
19188 pEventData: pointer to the event information structure
19189
Jeff Johnson295189b2012-06-20 16:38:30 -070019190 @see
19191 @return Result of the function call
19192*/
19193WDI_Status
19194WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019195(
Jeff Johnson295189b2012-06-20 16:38:30 -070019196 WDI_ControlBlockType* pWDICtx,
19197 WDI_EventInfoType* pEventData
19198)
19199{
19200 WDI_Status wdiStatus;
19201 eHalStatus halStatus;
19202 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19204
19205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019206 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019207 -------------------------------------------------------------------------*/
19208 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19209 ( NULL == pEventData->pEventData))
19210 {
19211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019212 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019215 }
19216
19217 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19218
19219 /*-------------------------------------------------------------------------
19220 Extract response and send it to UMAC
19221 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019222 wpalMemoryCopy( &halStatus,
19223 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 sizeof(halStatus));
19225
Jeff Johnsone7245742012-09-05 17:12:55 -070019226 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019227
19228 /*Notify UMAC*/
19229 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19230
Jeff Johnsone7245742012-09-05 17:12:55 -070019231 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019232}/*WDI_ProcessUpdateBeaconParamsRsp*/
19233
19234/**
19235 @brief Process Send Beacon template Rsp function (called when a response
19236 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019237
19238 @param pWDICtx: pointer to the WLAN DAL context
19239 pEventData: pointer to the event information structure
19240
Jeff Johnson295189b2012-06-20 16:38:30 -070019241 @see
19242 @return Result of the function call
19243*/
19244WDI_Status
19245WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019246(
Jeff Johnson295189b2012-06-20 16:38:30 -070019247 WDI_ControlBlockType* pWDICtx,
19248 WDI_EventInfoType* pEventData
19249)
19250{
19251 WDI_Status wdiStatus;
19252 eHalStatus halStatus;
19253 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19255
19256 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019257 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019258 -------------------------------------------------------------------------*/
19259 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19260 ( NULL == pEventData->pEventData))
19261 {
19262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019263 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019264 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019266 }
19267
19268 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19269
19270 /*-------------------------------------------------------------------------
19271 Extract response and send it to UMAC
19272 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019273 wpalMemoryCopy( &halStatus,
19274 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019275 sizeof(halStatus));
19276
Jeff Johnsone7245742012-09-05 17:12:55 -070019277 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019278
19279 /*Notify UMAC*/
19280 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19281
Jeff Johnsone7245742012-09-05 17:12:55 -070019282 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019283}/*WDI_ProcessSendBeaconParamsRsp*/
19284
Jeff Johnsone7245742012-09-05 17:12:55 -070019285
Jeff Johnson295189b2012-06-20 16:38:30 -070019286/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019287 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019288 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019289
19290 @param pWDICtx: pointer to the WLAN DAL context
19291 pEventData: pointer to the event information structure
19292
Jeff Johnson295189b2012-06-20 16:38:30 -070019293 @see
19294 @return Result of the function call
19295*/
19296WDI_Status
19297WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019298(
Jeff Johnson295189b2012-06-20 16:38:30 -070019299 WDI_ControlBlockType* pWDICtx,
19300 WDI_EventInfoType* pEventData
19301)
19302{
19303 WDI_Status wdiStatus;
19304 eHalStatus halStatus;
19305 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19307
19308 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019309 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019310 -------------------------------------------------------------------------*/
19311 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19312 ( NULL == pEventData->pEventData))
19313 {
19314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019315 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019318 }
19319
19320 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19321
19322 /*-------------------------------------------------------------------------
19323 Extract response and send it to UMAC
19324 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019325 wpalMemoryCopy( &halStatus,
19326 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019327 sizeof(halStatus));
19328
Jeff Johnsone7245742012-09-05 17:12:55 -070019329 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019330
19331 /*Notify UMAC*/
19332 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19333
Jeff Johnsone7245742012-09-05 17:12:55 -070019334 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019335}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19336
19337 /**
19338 @brief Process Set Max Tx Power Rsp function (called when a response
19339 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019340
19341 @param pWDICtx: pointer to the WLAN DAL context
19342 pEventData: pointer to the event information structure
19343
Jeff Johnson295189b2012-06-20 16:38:30 -070019344 @see
19345 @return Result of the function call
19346*/
19347WDI_Status
19348WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019349(
Jeff Johnson295189b2012-06-20 16:38:30 -070019350 WDI_ControlBlockType* pWDICtx,
19351 WDI_EventInfoType* pEventData
19352)
19353{
19354 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019355
Jeff Johnson295189b2012-06-20 16:38:30 -070019356 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019357
Jeff Johnson295189b2012-06-20 16:38:30 -070019358 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19360
19361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019363 -------------------------------------------------------------------------*/
19364 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19365 ( NULL == pEventData->pEventData))
19366 {
19367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019371 }
19372
19373 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19374
19375 /*-------------------------------------------------------------------------
19376 Extract response and send it to UMAC
19377 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019378 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19379 pEventData->pEventData,
19380 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019381
19382 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19383 {
19384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19385 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019387 }
19388
Jeff Johnsone7245742012-09-05 17:12:55 -070019389 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019390 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019391 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019392
19393 /*Notify UMAC*/
19394 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19395
Jeff Johnsone7245742012-09-05 17:12:55 -070019396 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019397}
19398
schang86c22c42013-03-13 18:41:24 -070019399 /**
19400 @brief Process Set Tx Power Rsp function (called when a response
19401 is being received over the bus from HAL)
19402
19403 @param pWDICtx: pointer to the WLAN DAL context
19404 pEventData: pointer to the event information structure
19405
19406 @see
19407 @return Result of the function call
19408*/
19409WDI_Status
19410WDI_ProcessSetTxPowerRsp
19411(
19412 WDI_ControlBlockType* pWDICtx,
19413 WDI_EventInfoType* pEventData
19414)
19415{
19416 tSetTxPwrRspMsg halTxpowerrsp;
19417 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19418 WDA_SetTxPowerRspCb wdiReqStatusCb;
19419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19420
19421 /*-------------------------------------------------------------------------
19422 Sanity check
19423 -------------------------------------------------------------------------*/
19424 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19425 ( NULL == pEventData->pEventData))
19426 {
19427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19428 "%s: Invalid parameters", __func__);
19429 WDI_ASSERT(0);
19430 return WDI_STATUS_E_FAILURE;
19431 }
19432
19433 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19434
19435 /*-------------------------------------------------------------------------
19436 Extract response and send it to UMAC
19437 -------------------------------------------------------------------------*/
19438 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19439 pEventData->pEventData,
19440 sizeof(halTxpowerrsp.setTxPwrRspParams));
19441
19442 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19443 {
19444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19445 "Error status returned in Set Tx Power Response ");
19446 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19447 return WDI_STATUS_E_FAILURE;
19448 }
19449
19450 wdiSetTxPowerRspMsg.wdiStatus =
19451 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19452
19453 /*Notify UMAC*/
19454 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19455
19456 return WDI_STATUS_SUCCESS;
19457}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019458
19459/**
19460 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19461 is being received over the bus from HAL)
19462
19463 @param pWDICtx: pointer to the WLAN DAL context
19464 pEventData: pointer to the event information structure
19465
19466 @see
19467 @return Result of the function call
19468*/
19469WDI_Status
19470WDI_ProcessSetMaxTxPowerPerBandRsp
19471(
19472 WDI_ControlBlockType* pWDICtx,
19473 WDI_EventInfoType* pEventData
19474)
19475{
19476 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19477 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19478 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19480
19481 /*-------------------------------------------------------------------------
19482 Sanity check
19483 -------------------------------------------------------------------------*/
19484 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19485 ( NULL == pEventData->pEventData))
19486 {
19487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19488 "%s: Invalid parameters", __func__);
19489 WDI_ASSERT(0);
19490 return WDI_STATUS_E_FAILURE;
19491 }
19492
19493 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19494
19495 /*-------------------------------------------------------------------------
19496 Extract response and send it to UMAC
19497 -------------------------------------------------------------------------*/
19498 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19499 pEventData->pEventData,
19500 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19501
19502 if (eHAL_STATUS_SUCCESS !=
19503 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19504 {
19505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19506 "Error status returned in Set Max Tx Power Per Band Response");
19507 return WDI_STATUS_E_FAILURE;
19508 }
19509
19510 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19511 WDI_HAL_2_WDI_STATUS(
19512 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19513
19514 /* Notify UMAC */
19515 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19516
19517 return WDI_STATUS_SUCCESS;
19518}
19519
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019520#ifdef FEATURE_WLAN_TDLS
19521/**
19522 @brief Process TDLS Link Establish Rsp function (called
19523 when a response is being received over the bus from HAL)
19524
19525 @param pWDICtx: pointer to the WLAN DAL context
19526 pEventData: pointer to the event information structure
19527
19528 @see
19529 @return Result of the function call
19530*/
19531WDI_Status
19532WDI_ProcessLinkEstablishReqRsp
19533(
19534 WDI_ControlBlockType* pWDICtx,
19535 WDI_EventInfoType* pEventData
19536)
19537{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019538 eHalStatus halStatus;
19539 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019540 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19541 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19542
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19544
19545 /*-------------------------------------------------------------------------
19546 Sanity check
19547 -------------------------------------------------------------------------*/
19548 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19549 ( NULL == pEventData->pEventData))
19550 {
19551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19552 "%s: Invalid parameters", __func__);
19553 WDI_ASSERT(0);
19554 return WDI_STATUS_E_FAILURE;
19555 }
19556
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019557 /*-------------------------------------------------------------------------
19558 Extract indication and send it to UMAC
19559 -------------------------------------------------------------------------*/
19560 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19561 pEventData->pEventData,
19562 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19563
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019564 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19565
19566 /*-------------------------------------------------------------------------
19567 Extract response and send it to UMAC
19568 -------------------------------------------------------------------------*/
19569 wpalMemoryCopy( &halStatus,
19570 pEventData->pEventData,
19571 sizeof(halStatus));
19572
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019573 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19574 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019575
19576 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019577 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019578
19579 return WDI_STATUS_SUCCESS;
19580}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019581
19582
19583
19584/**
19585 @brief Process TDLS Chan switch Rsp function (called
19586 when a response is being received over the bus from HAL)
19587
19588 @param pWDICtx: pointer to the WLAN DAL context
19589 pEventData: pointer to the event information structure
19590
19591 @see
19592 @return Result of the function call
19593*/
19594WDI_Status
19595WDI_ProcessChanSwitchReqRsp
19596(
19597 WDI_ControlBlockType* pWDICtx,
19598 WDI_EventInfoType* pEventData
19599)
19600{
19601 eHalStatus halStatus;
19602 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19603 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19604 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19605
19606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19607
19608 /*-------------------------------------------------------------------------
19609 Sanity check
19610 -------------------------------------------------------------------------*/
19611 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19612 ( NULL == pEventData->pEventData))
19613 {
19614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19615 "%s: Invalid parameters", __func__);
19616 WDI_ASSERT(0);
19617 return WDI_STATUS_E_FAILURE;
19618 }
19619
19620 /*-------------------------------------------------------------------------
19621 Extract indication and send it to UMAC
19622 -------------------------------------------------------------------------*/
19623 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19624 pEventData->pEventData,
19625 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19626
19627 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19628
19629 /*-------------------------------------------------------------------------
19630 Extract response and send it to UMAC
19631 -------------------------------------------------------------------------*/
19632 wpalMemoryCopy( &halStatus,
19633 pEventData->pEventData,
19634 sizeof(halStatus));
19635
19636 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19637 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19638
19639 /*Notify UMAC*/
19640 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19641
19642 return WDI_STATUS_SUCCESS;
19643}/*WDI_ProcessChanSwitchReqRsp*/
19644
19645
19646
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019647#endif
schang86c22c42013-03-13 18:41:24 -070019648
Jeff Johnson295189b2012-06-20 16:38:30 -070019649/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019650 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019652
19653 @param pWDICtx: pointer to the WLAN DAL context
19654 pEventData: pointer to the event information structure
19655
Jeff Johnson295189b2012-06-20 16:38:30 -070019656 @see
19657 @return Result of the function call
19658*/
19659WDI_Status
19660WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019661(
Jeff Johnson295189b2012-06-20 16:38:30 -070019662 WDI_ControlBlockType* pWDICtx,
19663 WDI_EventInfoType* pEventData
19664)
19665{
19666 WDI_Status wdiStatus;
19667 eHalStatus halStatus;
19668 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19670
19671 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019672 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019673 -------------------------------------------------------------------------*/
19674 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19675 ( NULL == pEventData->pEventData))
19676 {
19677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019678 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019681 }
19682
19683 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19684
19685 /*-------------------------------------------------------------------------
19686 Extract response and send it to UMAC
19687 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019688 wpalMemoryCopy( &halStatus,
19689 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019690 sizeof(halStatus));
19691
Jeff Johnsone7245742012-09-05 17:12:55 -070019692 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019693
19694 /*Notify UMAC*/
19695 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19696
Jeff Johnsone7245742012-09-05 17:12:55 -070019697 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019698}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019700 @brief Process Enter 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_ProcessEnterImpsRsp
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_EnterImpsRspCb wdiEnterImpsRspCb;
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 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19735
19736 /*-------------------------------------------------------------------------
19737 Extract response and send it to UMAC
19738 -------------------------------------------------------------------------*/
19739 halStatus = *((eHalStatus*)pEventData->pEventData);
19740
Jeff Johnsone7245742012-09-05 17:12:55 -070019741 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019742
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019743 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19744 * Other module states are taken care by PMC.
19745 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19746 */
19747 if (wdiStatus != WDI_STATUS_SUCCESS) {
19748
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19750 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19751 halStatus);
19752 /* Call Back is not required as we are putting the DXE in FULL
19753 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019754 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19755
19756 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019758 "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 -080019759 WDI_ASSERT(0);
19760 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019761 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019762 /*Notify UMAC*/
19763 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19764
Jeff Johnsone7245742012-09-05 17:12:55 -070019765 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019766}/*WDI_ProcessEnterImpsRsp*/
19767
19768/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019769 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019770 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019771
19772 @param pWDICtx: pointer to the WLAN DAL context
19773 pEventData: pointer to the event information structure
19774
Jeff Johnson295189b2012-06-20 16:38:30 -070019775 @see
19776 @return Result of the function call
19777*/
19778WDI_Status
19779WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019780(
Jeff Johnson295189b2012-06-20 16:38:30 -070019781 WDI_ControlBlockType* pWDICtx,
19782 WDI_EventInfoType* pEventData
19783)
19784{
19785 WDI_Status wdiStatus;
19786 eHalStatus halStatus;
19787 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019788 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19790
19791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019793 -------------------------------------------------------------------------*/
19794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19795 ( NULL == pEventData->pEventData))
19796 {
19797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019801 }
19802
19803 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19804
19805 /*-------------------------------------------------------------------------
19806 Extract response and send it to UMAC
19807 -------------------------------------------------------------------------*/
19808 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019809 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019810
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019811 if (halStatus != eHAL_STATUS_SUCCESS)
19812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19813 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19814
Jeff Johnson295189b2012-06-20 16:38:30 -070019815 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019816 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19817 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19818 {
19819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019820 "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 -080019821 WDI_ASSERT(0);
19822 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019823 /*Notify UMAC*/
19824 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19825
Jeff Johnsone7245742012-09-05 17:12:55 -070019826 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019827}/*WDI_ProcessExitImpsRsp*/
19828
19829/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019830 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019831 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019832
19833 @param pWDICtx: pointer to the WLAN DAL context
19834 pEventData: pointer to the event information structure
19835
Jeff Johnson295189b2012-06-20 16:38:30 -070019836 @see
19837 @return Result of the function call
19838*/
19839WDI_Status
19840WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019841(
Jeff Johnson295189b2012-06-20 16:38:30 -070019842 WDI_ControlBlockType* pWDICtx,
19843 WDI_EventInfoType* pEventData
19844)
19845{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019846 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19847 tHalEnterBmpsRspParams halEnterBmpsRsp;
19848 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19849 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019850 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19852
19853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019855 -------------------------------------------------------------------------*/
19856 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19857 ( NULL == pEventData->pEventData))
19858 {
19859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019863 }
19864
Jeff Johnson295189b2012-06-20 16:38:30 -070019865 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019866 Extract response and send it to UMAC
19867 -------------------------------------------------------------------------*/
19868 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19869 {
19870 wpalMemoryCopy( &halEnterBmpsRsp,
19871 pEventData->pEventData,
19872 sizeof(halEnterBmpsRsp));
19873
19874 //Used to print debug message
19875 halStatus = halEnterBmpsRsp.status;
19876 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19877 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19878 }
19879 else
19880 {
19881 halStatus = *((eHalStatus*)pEventData->pEventData);
19882 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19883 }
19884
19885 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019886
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019887 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19888 * Other module states are taken care by PMC.
19889 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19890 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019891 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19892 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019893
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019895 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19896 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019897 /* Call Back is not required as we are putting the DXE in FULL
19898 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019899 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19900 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19901 {
19902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019903 "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 -080019904 WDI_ASSERT(0);
19905 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019906 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019907 }
19908
Jeff Johnson295189b2012-06-20 16:38:30 -070019909 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019910 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019911
Jeff Johnsone7245742012-09-05 17:12:55 -070019912 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019913}/*WDI_ProcessEnterBmpsRsp*/
19914
19915/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019916 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019917 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019918
19919 @param pWDICtx: pointer to the WLAN DAL context
19920 pEventData: pointer to the event information structure
19921
Jeff Johnson295189b2012-06-20 16:38:30 -070019922 @see
19923 @return Result of the function call
19924*/
19925WDI_Status
19926WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019927(
Jeff Johnson295189b2012-06-20 16:38:30 -070019928 WDI_ControlBlockType* pWDICtx,
19929 WDI_EventInfoType* pEventData
19930)
19931{
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 eHalStatus halStatus;
19933 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019934 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019935 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19936 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19938
19939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019941 -------------------------------------------------------------------------*/
19942 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19943 ( NULL == pEventData->pEventData))
19944 {
19945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019946 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019949 }
19950
19951 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19952
19953 /*-------------------------------------------------------------------------
19954 Extract response and send it to UMAC
19955 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019956
19957 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19958 {
19959 wpalMemoryCopy( &halExitBmpsRsp,
19960 pEventData->pEventData,
19961 sizeof(halExitBmpsRsp));
19962
19963 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19964 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19965 }
19966 else
19967 {
19968 halStatus = *((eHalStatus*)pEventData->pEventData);
19969 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19970 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019971
19972 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019973 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19974 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19975 {
19976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019977 "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 -080019978 WDI_ASSERT(0);
19979 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019980 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19981
19982 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019983 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019984
Jeff Johnsone7245742012-09-05 17:12:55 -070019985 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019986}/*WDI_ProcessExitBmpsRsp*/
19987
19988/**
19989 @brief Process Enter UAPSD Rsp function (called when a response
19990 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019991
19992 @param pWDICtx: pointer to the WLAN DAL context
19993 pEventData: pointer to the event information structure
19994
Jeff Johnson295189b2012-06-20 16:38:30 -070019995 @see
19996 @return Result of the function call
19997*/
19998WDI_Status
19999WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020000(
Jeff Johnson295189b2012-06-20 16:38:30 -070020001 WDI_ControlBlockType* pWDICtx,
20002 WDI_EventInfoType* pEventData
20003)
20004{
Jeff Johnson295189b2012-06-20 16:38:30 -070020005 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020006 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020007 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020008 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
20009
Jeff Johnson295189b2012-06-20 16:38:30 -070020010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20011
20012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020013 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020014 -------------------------------------------------------------------------*/
20015 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20016 ( NULL == pEventData->pEventData))
20017 {
20018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020019 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020022 }
20023
20024 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
20025
20026 /*-------------------------------------------------------------------------
20027 Extract response and send it to UMAC
20028 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020029 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20030 {
20031 wpalMemoryCopy( &halEnterUapsdRsp,
20032 pEventData->pEventData,
20033 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020034
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020035 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
20036 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
20037 }
20038 else
20039 {
20040 halStatus = *((eHalStatus*)pEventData->pEventData);
20041 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20042 }
20043
20044 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070020045 {
20046 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
20047 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
20048 // the traffic to decide when to suspend the trigger frames when there is no traffic
20049 // activity on the trigger enabled ACs
20050 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
20051
20052#ifdef WLAN_PERF
20053 // Increment the BD signature to refresh the fast path BD utilization
20054 pWDICtx->uBdSigSerialNum++;
20055#endif
20056 }
20057
20058 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020059 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, 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_ProcessEnterUapsdRsp*/
20063
20064/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020065 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 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_ProcessExitUapsdRsp
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{
Jeff Johnson295189b2012-06-20 16:38:30 -070020081 eHalStatus halStatus;
20082 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020083 tHalExitUapsdRspParams halExitUapsdRsp;
20084 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20086
20087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020088 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020089 -------------------------------------------------------------------------*/
20090 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20091 ( NULL == pEventData->pEventData))
20092 {
20093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020097 }
20098
20099 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20100
20101 /*-------------------------------------------------------------------------
20102 Extract response and send it to UMAC
20103 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020104 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20105 {
20106 wpalMemoryCopy( &halExitUapsdRsp,
20107 pEventData->pEventData,
20108 sizeof(halExitUapsdRsp));
20109
20110 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20111 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20112 }
20113 else
20114 {
20115 halStatus = *((eHalStatus*)pEventData->pEventData);
20116 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20117 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020118 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20119 // directly instead of the FW WQ.
20120 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20121
20122#ifdef WLAN_PERF
20123 // Increment the BD signature to refresh the fast path BD utilization
20124 pWDICtx->uBdSigSerialNum++;
20125#endif
20126
20127 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020128 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020129
Jeff Johnsone7245742012-09-05 17:12:55 -070020130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020131}/*WDI_ProcessExitUapsdRsp*/
20132
20133/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020134 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020135 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020136
20137 @param pWDICtx: pointer to the WLAN DAL context
20138 pEventData: pointer to the event information structure
20139
Jeff Johnson295189b2012-06-20 16:38:30 -070020140 @see
20141 @return Result of the function call
20142*/
20143WDI_Status
20144WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020145(
Jeff Johnson295189b2012-06-20 16:38:30 -070020146 WDI_ControlBlockType* pWDICtx,
20147 WDI_EventInfoType* pEventData
20148)
20149{
20150 WDI_Status wdiStatus;
20151 eHalStatus halStatus;
20152 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20154
20155 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020156 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020157 -------------------------------------------------------------------------*/
20158 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20159 ( NULL == pEventData->pEventData))
20160 {
20161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020162 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020163 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020164 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020165 }
20166
20167 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20168
20169 /*-------------------------------------------------------------------------
20170 Extract response and send it to UMAC
20171 -------------------------------------------------------------------------*/
20172 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020173 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020174
20175 /*Notify UMAC*/
20176 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20177
Jeff Johnsone7245742012-09-05 17:12:55 -070020178 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020179}/*WDI_ProcessSetUapsdAcParamsRsp*/
20180
20181/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020182 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020183 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020184
20185 @param pWDICtx: pointer to the WLAN DAL context
20186 pEventData: pointer to the event information structure
20187
Jeff Johnson295189b2012-06-20 16:38:30 -070020188 @see
20189 @return Result of the function call
20190*/
20191WDI_Status
20192WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020193(
Jeff Johnson295189b2012-06-20 16:38:30 -070020194 WDI_ControlBlockType* pWDICtx,
20195 WDI_EventInfoType* pEventData
20196)
20197{
20198 WDI_Status wdiStatus;
20199 eHalStatus halStatus;
20200 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20202
20203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020204 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020205 -------------------------------------------------------------------------*/
20206 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20207 ( NULL == pEventData->pEventData))
20208 {
20209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020210 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020211 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020213 }
20214
20215 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20216
20217 /*-------------------------------------------------------------------------
20218 Extract response and send it to UMAC
20219 -------------------------------------------------------------------------*/
20220 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020221 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020222
20223 /*Notify UMAC*/
20224 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20225
Jeff Johnsone7245742012-09-05 17:12:55 -070020226 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020227}/*WDI_ProcessUpdateUapsdParamsRsp*/
20228
20229/**
20230 @brief Process Configure RXP filter Rsp function (called when a
20231 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020232
20233 @param pWDICtx: pointer to the WLAN DAL context
20234 pEventData: pointer to the event information structure
20235
Jeff Johnson295189b2012-06-20 16:38:30 -070020236 @see
20237 @return Result of the function call
20238*/
20239WDI_Status
20240WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020241(
Jeff Johnson295189b2012-06-20 16:38:30 -070020242 WDI_ControlBlockType* pWDICtx,
20243 WDI_EventInfoType* pEventData
20244)
20245{
20246 WDI_Status wdiStatus;
20247 eHalStatus halStatus;
20248 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20250
20251 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020252 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020253 -------------------------------------------------------------------------*/
20254 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20255 ( NULL == pEventData->pEventData))
20256 {
20257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020258 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020261 }
20262
20263 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20264
20265 /*-------------------------------------------------------------------------
20266 Extract response and send it to UMAC
20267 -------------------------------------------------------------------------*/
20268 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020269 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020270
20271 /*Notify UMAC*/
20272 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20273
Jeff Johnsone7245742012-09-05 17:12:55 -070020274 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020275}/*WDI_ProcessConfigureRxpFilterRsp*/
20276
20277/**
20278 @brief Process Set beacon filter Rsp function (called when a
20279 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020280
20281 @param pWDICtx: pointer to the WLAN DAL context
20282 pEventData: pointer to the event information structure
20283
Jeff Johnson295189b2012-06-20 16:38:30 -070020284 @see
20285 @return Result of the function call
20286*/
20287WDI_Status
20288WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020289(
Jeff Johnson295189b2012-06-20 16:38:30 -070020290 WDI_ControlBlockType* pWDICtx,
20291 WDI_EventInfoType* pEventData
20292)
20293{
20294 WDI_Status wdiStatus;
20295 eHalStatus halStatus;
20296 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20298
20299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020301 -------------------------------------------------------------------------*/
20302 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20303 ( NULL == pEventData->pEventData))
20304 {
20305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020306 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020309 }
20310
20311 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20312
20313 /*-------------------------------------------------------------------------
20314 Extract response and send it to UMAC
20315 -------------------------------------------------------------------------*/
20316 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020317 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020318
20319 /*Notify UMAC*/
20320 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20321
Jeff Johnsone7245742012-09-05 17:12:55 -070020322 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020323}/*WDI_ProcessSetBeaconFilterRsp*/
20324
20325/**
20326 @brief Process remove beacon filter Rsp function (called when a
20327 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020328
20329 @param pWDICtx: pointer to the WLAN DAL context
20330 pEventData: pointer to the event information structure
20331
Jeff Johnson295189b2012-06-20 16:38:30 -070020332 @see
20333 @return Result of the function call
20334*/
20335WDI_Status
20336WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020337(
Jeff Johnson295189b2012-06-20 16:38:30 -070020338 WDI_ControlBlockType* pWDICtx,
20339 WDI_EventInfoType* pEventData
20340)
20341{
20342 WDI_Status wdiStatus;
20343 eHalStatus halStatus;
20344 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20346
20347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020349 -------------------------------------------------------------------------*/
20350 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20351 ( NULL == pEventData->pEventData))
20352 {
20353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020354 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020355 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020357 }
20358
20359 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20360
20361 /*-------------------------------------------------------------------------
20362 Extract response and send it to UMAC
20363 -------------------------------------------------------------------------*/
20364 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020365 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020366
20367 /*Notify UMAC*/
20368 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20369
Jeff Johnsone7245742012-09-05 17:12:55 -070020370 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020371}/*WDI_ProcessRemBeaconFilterRsp*/
20372
20373/**
20374 @brief Process set RSSI thresholds Rsp function (called when a
20375 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020376
20377 @param pWDICtx: pointer to the WLAN DAL context
20378 pEventData: pointer to the event information structure
20379
Jeff Johnson295189b2012-06-20 16:38:30 -070020380 @see
20381 @return Result of the function call
20382*/
20383WDI_Status
20384WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020385(
Jeff Johnson295189b2012-06-20 16:38:30 -070020386 WDI_ControlBlockType* pWDICtx,
20387 WDI_EventInfoType* pEventData
20388)
20389{
20390 WDI_Status wdiStatus;
20391 eHalStatus halStatus;
20392 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20394
20395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020397 -------------------------------------------------------------------------*/
20398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20399 ( NULL == pEventData->pEventData))
20400 {
20401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020405 }
20406
20407 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20408
20409 /*-------------------------------------------------------------------------
20410 Extract response and send it to UMAC
20411 -------------------------------------------------------------------------*/
20412 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020413 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020414
20415 /*Notify UMAC*/
20416 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20417
Jeff Johnsone7245742012-09-05 17:12:55 -070020418 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020419}/*WDI_ProcessSetRSSIThresoldsRsp*/
20420
20421/**
20422 @brief Process host offload Rsp function (called when a
20423 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020424
20425 @param pWDICtx: pointer to the WLAN DAL context
20426 pEventData: pointer to the event information structure
20427
Jeff Johnson295189b2012-06-20 16:38:30 -070020428 @see
20429 @return Result of the function call
20430*/
20431WDI_Status
20432WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020433(
Jeff Johnson295189b2012-06-20 16:38:30 -070020434 WDI_ControlBlockType* pWDICtx,
20435 WDI_EventInfoType* pEventData
20436)
20437{
20438 WDI_Status wdiStatus;
20439 eHalStatus halStatus;
20440 WDI_HostOffloadCb wdiHostOffloadCb;
20441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20442
20443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020444 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020445 -------------------------------------------------------------------------*/
20446 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20447 ( NULL == pEventData->pEventData))
20448 {
20449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020450 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020453 }
20454
20455 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20456
20457 /*-------------------------------------------------------------------------
20458 Extract response and send it to UMAC
20459 -------------------------------------------------------------------------*/
20460 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020461 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020462
20463 /*Notify UMAC*/
20464 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20465
Jeff Johnsone7245742012-09-05 17:12:55 -070020466 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020467}/*WDI_ProcessHostOffloadRsp*/
20468
20469/**
20470 @brief Process keep alive Rsp function (called when a
20471 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020472
20473 @param pWDICtx: pointer to the WLAN DAL context
20474 pEventData: pointer to the event information structure
20475
Jeff Johnson295189b2012-06-20 16:38:30 -070020476 @see
20477 @return Result of the function call
20478*/
20479WDI_Status
20480WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020481(
Jeff Johnson295189b2012-06-20 16:38:30 -070020482 WDI_ControlBlockType* pWDICtx,
20483 WDI_EventInfoType* pEventData
20484)
20485{
20486 WDI_Status wdiStatus;
20487 eHalStatus halStatus;
20488 WDI_KeepAliveCb wdiKeepAliveCb;
20489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20491 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20492
20493
20494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020495 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020496 -------------------------------------------------------------------------*/
20497 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20498 ( NULL == pEventData->pEventData))
20499 {
20500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020501 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020504 }
20505
Jeff Johnsone7245742012-09-05 17:12:55 -070020506 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20507
Jeff Johnson295189b2012-06-20 16:38:30 -070020508 /*-------------------------------------------------------------------------
20509 Extract response and send it to UMAC
20510 -------------------------------------------------------------------------*/
20511 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020512 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020513
20514 /*Notify UMAC*/
20515 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20516
Jeff Johnsone7245742012-09-05 17:12:55 -070020517 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020518}/*WDI_ProcessKeepAliveRsp*/
20519
20520/**
20521 @brief Process wowl add ptrn Rsp function (called when a
20522 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020523
20524 @param pWDICtx: pointer to the WLAN DAL context
20525 pEventData: pointer to the event information structure
20526
Jeff Johnson295189b2012-06-20 16:38:30 -070020527 @see
20528 @return Result of the function call
20529*/
20530WDI_Status
20531WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020532(
Jeff Johnson295189b2012-06-20 16:38:30 -070020533 WDI_ControlBlockType* pWDICtx,
20534 WDI_EventInfoType* pEventData
20535)
20536{
Jeff Johnson295189b2012-06-20 16:38:30 -070020537 eHalStatus halStatus;
20538 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020539 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20540 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20541
Jeff Johnson295189b2012-06-20 16:38:30 -070020542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20543
20544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 -------------------------------------------------------------------------*/
20547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20548 ( NULL == pEventData->pEventData))
20549 {
20550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020554 }
20555
20556 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20557
20558 /*-------------------------------------------------------------------------
20559 Extract response and send it to UMAC
20560 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020561 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20562 {
20563 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20564 pEventData->pEventData,
20565 sizeof(halAddWowlBcastPtrRsp));
20566
20567 wdiWowlAddBcPtrRsp.wdiStatus =
20568 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20569 }
20570 else
20571 {
20572 halStatus = *((eHalStatus*)pEventData->pEventData);
20573 wdiWowlAddBcPtrRsp.wdiStatus =
20574 WDI_HAL_2_WDI_STATUS(halStatus);
20575 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020576
20577 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020578 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020579
Jeff Johnsone7245742012-09-05 17:12:55 -070020580 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020581}/*WDI_ProcessWowlAddBcPtrnRsp*/
20582
20583/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020584 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020585 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020586
20587 @param pWDICtx: pointer to the WLAN DAL context
20588 pEventData: pointer to the event information structure
20589
Jeff Johnson295189b2012-06-20 16:38:30 -070020590 @see
20591 @return Result of the function call
20592*/
20593WDI_Status
20594WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020595(
Jeff Johnson295189b2012-06-20 16:38:30 -070020596 WDI_ControlBlockType* pWDICtx,
20597 WDI_EventInfoType* pEventData
20598)
20599{
Jeff Johnson295189b2012-06-20 16:38:30 -070020600 eHalStatus halStatus;
20601 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020602 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20603 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20605
20606 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020607 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020608 -------------------------------------------------------------------------*/
20609 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20610 ( NULL == pEventData->pEventData))
20611 {
20612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020613 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020614 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020616 }
20617
20618 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20619
20620 /*-------------------------------------------------------------------------
20621 Extract response and send it to UMAC
20622 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020623 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20624 {
20625 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20626 pEventData->pEventData,
20627 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020628
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020629 wdiWowlDelBcstPtrRsp.wdiStatus =
20630 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20631 }
20632 else
20633 {
20634 halStatus = *((eHalStatus*)pEventData->pEventData);
20635 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20636 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020637 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020638 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020639
Jeff Johnsone7245742012-09-05 17:12:55 -070020640 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020641}/*WDI_ProcessWowlDelBcPtrnRsp*/
20642
20643/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020644 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020645 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020646
20647 @param pWDICtx: pointer to the WLAN DAL context
20648 pEventData: pointer to the event information structure
20649
Jeff Johnson295189b2012-06-20 16:38:30 -070020650 @see
20651 @return Result of the function call
20652*/
20653WDI_Status
20654WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020655(
Jeff Johnson295189b2012-06-20 16:38:30 -070020656 WDI_ControlBlockType* pWDICtx,
20657 WDI_EventInfoType* pEventData
20658)
20659{
Jeff Johnson295189b2012-06-20 16:38:30 -070020660 eHalStatus halStatus;
20661 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020662 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20663 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20665
20666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020668 -------------------------------------------------------------------------*/
20669 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20670 ( NULL == pEventData->pEventData))
20671 {
20672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020673 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020676 }
20677
20678 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20679
20680 /*-------------------------------------------------------------------------
20681 Extract response and send it to UMAC
20682 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020683 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20684 {
20685 wpalMemoryCopy( &halEnterWowlRspParams,
20686 (wpt_uint8*)pEventData->pEventData,
20687 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020688
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020689 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20690 wdiwowlEnterRsp.status =
20691 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20692 }
20693 else
20694 {
20695 halStatus = *((eHalStatus*)pEventData->pEventData);
20696 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20697 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020698 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020699 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020700
Jeff Johnsone7245742012-09-05 17:12:55 -070020701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020702}/*WDI_ProcessWowlEnterRsp*/
20703
20704/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020705 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020706 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020707
20708 @param pWDICtx: pointer to the WLAN DAL context
20709 pEventData: pointer to the event information structure
20710
Jeff Johnson295189b2012-06-20 16:38:30 -070020711 @see
20712 @return Result of the function call
20713*/
20714WDI_Status
20715WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020716(
Jeff Johnson295189b2012-06-20 16:38:30 -070020717 WDI_ControlBlockType* pWDICtx,
20718 WDI_EventInfoType* pEventData
20719)
20720{
Jeff Johnson295189b2012-06-20 16:38:30 -070020721 eHalStatus halStatus;
20722 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020723 tHalExitWowlRspParams halExitWowlRspParams;
20724 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20725
Jeff Johnson295189b2012-06-20 16:38:30 -070020726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20727
20728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020729 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020730 -------------------------------------------------------------------------*/
20731 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20732 ( NULL == pEventData->pEventData))
20733 {
20734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020735 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020738 }
20739
20740 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20741
20742 /*-------------------------------------------------------------------------
20743 Extract response and send it to UMAC
20744 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020745 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20746 {
20747 wpalMemoryCopy( &halExitWowlRspParams,
20748 pEventData->pEventData,
20749 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020750
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020751 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20752 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20753
20754 }
20755 else
20756 {
20757 halStatus = *((eHalStatus*)pEventData->pEventData);
20758 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20759 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020760 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020761 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020762
Jeff Johnsone7245742012-09-05 17:12:55 -070020763 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020764}/*WDI_ProcessWowlExitRsp*/
20765
20766/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020767 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020768 (called when a response is being received over the bus
20769 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020770
20771 @param pWDICtx: pointer to the WLAN DAL context
20772 pEventData: pointer to the event information structure
20773
Jeff Johnson295189b2012-06-20 16:38:30 -070020774 @see
20775 @return Result of the function call
20776*/
20777WDI_Status
20778WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020779(
Jeff Johnson295189b2012-06-20 16:38:30 -070020780 WDI_ControlBlockType* pWDICtx,
20781 WDI_EventInfoType* pEventData
20782)
20783{
20784 WDI_Status wdiStatus;
20785 eHalStatus halStatus;
20786 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20788
20789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020791 -------------------------------------------------------------------------*/
20792 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20793 ( NULL == pEventData->pEventData))
20794 {
20795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020799 }
20800
20801 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20802
20803 /*-------------------------------------------------------------------------
20804 Extract response and send it to UMAC
20805 -------------------------------------------------------------------------*/
20806 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020807 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020808
20809 /*Notify UMAC*/
20810 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20811
Jeff Johnsone7245742012-09-05 17:12:55 -070020812 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020813}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20814
20815
20816/**
20817 @brief Process Nv download(called when a response
20818 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020819
20820 @param pWDICtx: pointer to the WLAN DAL context
20821 pEventData: pointer to the event information structure
20822
Jeff Johnson295189b2012-06-20 16:38:30 -070020823 @see
20824 @return Result of the function call
20825*/
20826WDI_Status
20827WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020828(
Jeff Johnson295189b2012-06-20 16:38:30 -070020829 WDI_ControlBlockType* pWDICtx,
20830 WDI_EventInfoType* pEventData
20831)
20832{
20833
20834 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20835 tHalNvImgDownloadRspParams halNvDownloadRsp;
20836 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20837
20838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020839 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020840 -------------------------------------------------------------------------*/
20841 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20842 ( NULL == pEventData->pEventData))
20843 {
20844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020848 }
20849
20850 /*-------------------------------------------------------------------------
20851 Extract response and send it to UMAC
20852 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020853 wpalMemoryCopy( &halNvDownloadRsp,
20854 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020855 sizeof(halNvDownloadRsp));
20856
20857 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20858
20859 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20861 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020862 {
20863 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020864 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020865 }
20866 else
20867 {
20868 /*Reset the Nv related global information in WDI context information */
20869 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20870 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20871 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20872 /*call WDA callback function for last fragment */
20873 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20874 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20875 }
20876
Jeff Johnsone7245742012-09-05 17:12:55 -070020877 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020878}
20879#ifdef WLAN_FEATURE_VOWIFI_11R
20880/**
20881 @brief Process Add TSpec Rsp function (called when a response
20882 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020883
20884 @param pWDICtx: pointer to the WLAN DAL context
20885 pEventData: pointer to the event information structure
20886
Jeff Johnson295189b2012-06-20 16:38:30 -070020887 @see
20888 @return Result of the function call
20889*/
20890WDI_Status
20891WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020892(
Jeff Johnson295189b2012-06-20 16:38:30 -070020893 WDI_ControlBlockType* pWDICtx,
20894 WDI_EventInfoType* pEventData
20895)
20896{
20897 WDI_Status wdiStatus;
20898 tAggrAddTsRspParams aggrAddTsRsp;
20899 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20901
20902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020903 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 -------------------------------------------------------------------------*/
20905 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20906 ( NULL == pEventData->pEventData))
20907 {
20908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020909 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020911 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020912 }
20913
20914 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20915
20916 /*-------------------------------------------------------------------------
20917 Extract response and send it to UMAC
20918 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020919 wpalMemoryCopy( &aggrAddTsRsp,
20920 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 sizeof(aggrAddTsRsp));
20922
20923 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020924 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020925
20926 /*Notify UMAC*/
20927 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20928
Jeff Johnsone7245742012-09-05 17:12:55 -070020929 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020930}/*WDI_ProcessAddTSpecRsp*/
20931#endif /* WLAN_FEATURE_VOWIFI_11R */
20932
20933/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020934 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020935 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020936
20937 @param pWDICtx: pointer to the WLAN DAL context
20938 pEventData: pointer to the event information structure
20939
Jeff Johnson295189b2012-06-20 16:38:30 -070020940 @see
20941 @return Result of the function call
20942*/
20943WDI_Status
20944WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020945(
Jeff Johnson295189b2012-06-20 16:38:30 -070020946 WDI_ControlBlockType* pWDICtx,
20947 WDI_EventInfoType* pEventData
20948)
20949{
20950 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20951 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20952 tHalHostResumeRspParams hostResumeRspMsg;
20953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20954
20955 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020956 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020957 -------------------------------------------------------------------------*/
20958 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20959 ( NULL == pEventData->pEventData))
20960 {
20961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020962 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020963 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020965 }
20966
20967 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20968
20969 /*-------------------------------------------------------------------------
20970 Extract response and send it to UMAC
20971 -------------------------------------------------------------------------*/
20972
Jeff Johnsone7245742012-09-05 17:12:55 -070020973 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020974 (wpt_uint8*)pEventData->pEventData,
20975 sizeof(hostResumeRspMsg));
20976
Jeff Johnsone7245742012-09-05 17:12:55 -070020977 wdiResumeRspParams.wdiStatus =
20978 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020979
20980 /*Notify UMAC*/
20981 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20982
20983 return WDI_STATUS_SUCCESS;
20984}
20985
20986/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020987 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020988 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020989
20990 @param pWDICtx: pointer to the WLAN DAL context
20991 pEventData: pointer to the event information structure
20992
Jeff Johnson295189b2012-06-20 16:38:30 -070020993 @see
20994 @return Result of the function call
20995*/
20996WDI_Status
20997WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020998(
Jeff Johnson295189b2012-06-20 16:38:30 -070020999 WDI_ControlBlockType* pWDICtx,
21000 WDI_EventInfoType* pEventData
21001)
21002{
21003 WDI_Status wdiStatus;
21004 eHalStatus halStatus;
21005 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
21006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21007
21008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021010 -------------------------------------------------------------------------*/
21011 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21012 ( NULL == pEventData->pEventData))
21013 {
21014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021015 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021018 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021019
21020 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021021
21022 /*-------------------------------------------------------------------------
21023 Extract response and send it to UMAC
21024 -------------------------------------------------------------------------*/
21025 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021026 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021027
21028 /*Notify UMAC*/
21029 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21030
Jeff Johnsone7245742012-09-05 17:12:55 -070021031 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021032}/*WDI_ProcessSetTxPerTrackingRsp*/
21033
21034/*==========================================================================
21035 Indications from HAL
21036 ==========================================================================*/
21037/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021038 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021039 indication of this kind is being received over the bus
21040 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021041
21042 @param pWDICtx: pointer to the WLAN DAL context
21043 pEventData: pointer to the event information structure
21044
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 @see
21046 @return Result of the function call
21047*/
21048WDI_Status
21049WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021050(
Jeff Johnson295189b2012-06-20 16:38:30 -070021051 WDI_ControlBlockType* pWDICtx,
21052 WDI_EventInfoType* pEventData
21053)
21054{
21055 WDI_LowLevelIndType wdiInd;
21056 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
21057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21058
21059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021060 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021061 -------------------------------------------------------------------------*/
21062 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21063 ( NULL == pEventData->pEventData))
21064 {
21065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021066 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021069 }
21070
21071 /*-------------------------------------------------------------------------
21072 Extract indication and send it to UMAC
21073 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021074 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21075 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021076 sizeof(tHalRSSINotification));
21077
21078 /*Fill in the indication parameters*/
21079 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21080 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21081 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21082 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21083 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21084 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21085 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21086 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21087 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21088 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21089 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21090 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21091 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021092 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21093 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021094
ltimariub77f24b2013-01-24 18:54:33 -080021095 if ( pWDICtx->wdiLowLevelIndCB )
21096 {
21097 /*Notify UMAC of indication*/
21098 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21099 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021100
21101 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021102}/*WDI_ProcessLowRSSIInd*/
21103
21104
21105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021106 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021107 an indication of this kind is being received over the
21108 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021109
21110 @param pWDICtx: pointer to the WLAN DAL context
21111 pEventData: pointer to the event information structure
21112
Jeff Johnson295189b2012-06-20 16:38:30 -070021113 @see
21114 @return Result of the function call
21115*/
21116WDI_Status
21117WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021118(
Jeff Johnson295189b2012-06-20 16:38:30 -070021119 WDI_ControlBlockType* pWDICtx,
21120 WDI_EventInfoType* pEventData
21121)
21122{
21123 WDI_Status wdiStatus;
21124 eHalStatus halStatus;
21125 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021126 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21128
21129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021131 -------------------------------------------------------------------------*/
21132 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21133 ( NULL == pEventData->pEventData))
21134 {
21135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021136 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021137 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021138 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021139 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021140 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021141 /*-------------------------------------------------------------------------
21142 Extract indication and send it to UMAC
21143 -------------------------------------------------------------------------*/
21144 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21145 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021146 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021147
21148 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021149 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021150 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21151 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021152 if ( pWDICtx->wdiLowLevelIndCB )
21153 {
21154 /*Notify UMAC*/
21155 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21156 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021157
21158 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021159}/*WDI_ProcessMissedBeaconInd*/
21160
21161
21162/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021163 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 an indication of this kind is being received over the
21165 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021166
21167 @param pWDICtx: pointer to the WLAN DAL context
21168 pEventData: pointer to the event information structure
21169
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 @see
21171 @return Result of the function call
21172*/
21173WDI_Status
21174WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021175(
Jeff Johnson295189b2012-06-20 16:38:30 -070021176 WDI_ControlBlockType* pWDICtx,
21177 WDI_EventInfoType* pEventData
21178)
21179{
21180 WDI_Status wdiStatus;
21181 eHalStatus halStatus;
21182 WDI_LowLevelIndType wdiInd;
21183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21184
21185 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021186 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021187 -------------------------------------------------------------------------*/
21188 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21189 ( NULL == pEventData->pEventData))
21190 {
21191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021192 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021195 }
21196
21197 /*-------------------------------------------------------------------------
21198 Extract indication and send it to UMAC
21199 -------------------------------------------------------------------------*/
21200 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21201 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021202 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021203
21204 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021205 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021206 /* ! TO DO - fill in from HAL struct:
21207 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21208
ltimariub77f24b2013-01-24 18:54:33 -080021209 if ( pWDICtx->wdiLowLevelIndCB )
21210 {
21211 /*Notify UMAC*/
21212 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21213 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021214
21215 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021216}/*WDI_ProcessUnkAddrFrameInd*/
21217
21218
21219/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021220 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021221 indication of this kind is being received over the bus
21222 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021223
21224 @param pWDICtx: pointer to the WLAN DAL context
21225 pEventData: pointer to the event information structure
21226
Jeff Johnson295189b2012-06-20 16:38:30 -070021227 @see
21228 @return Result of the function call
21229*/
21230WDI_Status
21231WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021232(
Jeff Johnson295189b2012-06-20 16:38:30 -070021233 WDI_ControlBlockType* pWDICtx,
21234 WDI_EventInfoType* pEventData
21235)
21236{
21237 WDI_LowLevelIndType wdiInd;
21238 tpSirMicFailureInd pHalMicFailureInd;
21239
21240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21241
21242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021243 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021244 -------------------------------------------------------------------------*/
21245 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21246 ( NULL == pEventData->pEventData))
21247 {
21248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021249 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021253
Jeff Johnson295189b2012-06-20 16:38:30 -070021254 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21255 /*-------------------------------------------------------------------------
21256 Extract indication and send it to UMAC
21257 -------------------------------------------------------------------------*/
21258
21259 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021260 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021261 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21262 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21263 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21264 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21265 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21266 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21267 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21268 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021269 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021270 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021271 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021272 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021273 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021274 pHalMicFailureInd->info.keyId;
21275 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21276 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21277 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21278 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021279
21280 if ( pWDICtx->wdiLowLevelIndCB )
21281 {
21282 /*Notify UMAC*/
21283 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21284 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021285
21286 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021287}/*WDI_ProcessMicFailureInd*/
21288
21289
21290/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021291 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021292 an indication of this kind is being received over the
21293 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021294
21295 @param pWDICtx: pointer to the WLAN DAL context
21296 pEventData: pointer to the event information structure
21297
Jeff Johnson295189b2012-06-20 16:38:30 -070021298 @see
21299 @return Result of the function call
21300*/
21301WDI_Status
21302WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021303(
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 WDI_ControlBlockType* pWDICtx,
21305 WDI_EventInfoType* pEventData
21306)
21307{
21308 WDI_Status wdiStatus;
21309 eHalStatus halStatus;
21310 WDI_LowLevelIndType wdiInd;
21311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21312
21313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021314 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021315 -------------------------------------------------------------------------*/
21316 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21317 ( NULL == pEventData->pEventData))
21318 {
21319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021320 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021323 }
21324
21325 /*-------------------------------------------------------------------------
21326 Extract indication and send it to UMAC
21327 -------------------------------------------------------------------------*/
21328
21329 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21330 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021331 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021332
21333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21334 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021335
Jeff Johnson295189b2012-06-20 16:38:30 -070021336 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021337 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21338 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021339
ltimariub77f24b2013-01-24 18:54:33 -080021340 if ( pWDICtx->wdiLowLevelIndCB )
21341 {
21342 /*Notify UMAC*/
21343 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21344 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021345
21346 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021347}/*WDI_ProcessFatalErrorInd*/
21348
21349/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021351 an indication of this kind is being received over the
21352 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021353
21354 @param pWDICtx: pointer to the WLAN DAL context
21355 pEventData: pointer to the event information structure
21356
Jeff Johnson295189b2012-06-20 16:38:30 -070021357 @see
21358 @return Result of the function call
21359*/
21360WDI_Status
21361WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021362(
Jeff Johnson295189b2012-06-20 16:38:30 -070021363 WDI_ControlBlockType* pWDICtx,
21364 WDI_EventInfoType* pEventData
21365)
21366{
21367 tDeleteStaContextParams halDelSTACtx;
21368 WDI_LowLevelIndType wdiInd;
21369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21370
21371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021373 -------------------------------------------------------------------------*/
21374 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21375 ( NULL == pEventData->pEventData))
21376 {
21377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021378 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021381 }
21382
21383 /*-------------------------------------------------------------------------
21384 Extract indication and send it to UMAC
21385 -------------------------------------------------------------------------*/
21386
21387 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021388 wpalMemoryCopy( &halDelSTACtx,
21389 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021390 sizeof(halDelSTACtx));
21391
21392 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021393 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021394
21395 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21396 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21397 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21398 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21399
Jeff Johnsone7245742012-09-05 17:12:55 -070021400 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021401 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021402 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021403 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021404 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21405 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021406
ltimariub77f24b2013-01-24 18:54:33 -080021407 if ( pWDICtx->wdiLowLevelIndCB )
21408 {
21409 /*Notify UMAC*/
21410 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21411 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021412
21413 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021414}/*WDI_ProcessDelSTAInd*/
21415
21416/**
21417*@brief Process Coex Indication function (called when
21418 an indication of this kind is being received over the
21419 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021420
21421 @param pWDICtx: pointer to the WLAN DAL context
21422 pEventData: pointer to the event information structure
21423
Jeff Johnson295189b2012-06-20 16:38:30 -070021424 @see
21425 @return Result of the function call
21426*/
21427WDI_Status
21428WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021429(
Jeff Johnson295189b2012-06-20 16:38:30 -070021430 WDI_ControlBlockType* pWDICtx,
21431 WDI_EventInfoType* pEventData
21432)
21433{
21434 WDI_LowLevelIndType wdiInd;
21435 tCoexIndMsg halCoexIndMsg;
21436 wpt_uint32 index;
21437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21438
21439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021440 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021441 -------------------------------------------------------------------------*/
21442 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21443 ( NULL == pEventData->pEventData ))
21444 {
21445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021446 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021447 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021449 }
21450
21451 /*-------------------------------------------------------------------------
21452 Extract indication and send it to UMAC
21453 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021454 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21455 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021456 sizeof(halCoexIndMsg.coexIndParams) );
21457
21458 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021459 wdiInd.wdiIndicationType = WDI_COEX_IND;
21460 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021461 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21462 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021463 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021464 }
21465
21466 // DEBUG
21467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21468 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021469 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21470 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21471 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21472 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21473 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021474
ltimariub77f24b2013-01-24 18:54:33 -080021475 if ( pWDICtx->wdiLowLevelIndCB )
21476 {
21477 /*Notify UMAC*/
21478 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21479 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021480
21481 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021482}/*WDI_ProcessCoexInd*/
21483
21484/**
21485*@brief Process Tx Complete Indication function (called when
21486 an indication of this kind is being received over the
21487 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021488
21489 @param pWDICtx: pointer to the WLAN DAL context
21490 pEventData: pointer to the event information structure
21491
Jeff Johnson295189b2012-06-20 16:38:30 -070021492 @see
21493 @return Result of the function call
21494*/
21495WDI_Status
21496WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021497(
Jeff Johnson295189b2012-06-20 16:38:30 -070021498 WDI_ControlBlockType* pWDICtx,
21499 WDI_EventInfoType* pEventData
21500)
21501{
21502 WDI_LowLevelIndType wdiInd;
21503 tTxComplIndMsg halTxComplIndMsg;
21504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21505
21506 /*-------------------------------------------------------------------------
21507 Sanity check
21508 -------------------------------------------------------------------------*/
21509 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21510 ( NULL == pEventData->pEventData ))
21511 {
21512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021513 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021514 WDI_ASSERT( 0 );
21515 return WDI_STATUS_E_FAILURE;
21516 }
21517
21518 /*-------------------------------------------------------------------------
21519 Extract indication and send it to UMAC
21520 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021521 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21522 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021523 sizeof(halTxComplIndMsg.txComplParams) );
21524
21525 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021526 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021527
21528 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21529 &halTxComplIndMsg.txComplParams,
21530 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021531
ltimariub77f24b2013-01-24 18:54:33 -080021532 if ( pWDICtx->wdiLowLevelIndCB )
21533 {
21534 /*Notify UMAC*/
21535 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21536 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021537
21538 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021539}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021540#ifdef FEATURE_WLAN_TDLS
21541/**
21542*@brief Process TDLS Indication function (called when
21543 an indication of this kind is being received over the
21544 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021545
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021546 @param pWDICtx: pointer to the WLAN DAL context
21547 pEventData: pointer to the event information structure
21548
21549 @see
21550 @return Result of the function call
21551*/
21552WDI_Status
21553WDI_ProcessTdlsInd
21554(
21555 WDI_ControlBlockType* pWDICtx,
21556 WDI_EventInfoType* pEventData
21557)
21558{
21559 WDI_LowLevelIndType wdiInd;
21560 tTdlsIndMsg halTdlsIndMsg;
21561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21562
21563 /*-------------------------------------------------------------------------
21564 Sanity check
21565 -------------------------------------------------------------------------*/
21566 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21567 ( NULL == pEventData->pEventData ))
21568 {
21569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21570 "%s: Invalid parameters", __func__);
21571 WDI_ASSERT( 0 );
21572 return WDI_STATUS_E_FAILURE;
21573 }
21574
21575 /*-------------------------------------------------------------------------
21576 Extract indication and send it to UMAC
21577 -------------------------------------------------------------------------*/
21578 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21579 pEventData->pEventData,
21580 sizeof(halTdlsIndMsg.tdlsIndParams) );
21581
21582 /*Fill in the indication parameters*/
21583 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21584
21585 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21586 = halTdlsIndMsg.tdlsIndParams.status;
21587
21588 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21589 = halTdlsIndMsg.tdlsIndParams.staIdx;
21590
21591 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21592 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21593
Atul Mittalbb2aad02014-09-22 19:09:36 +053021594 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21595 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021596 /*Notify UMAC*/
21597 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21598
21599 return WDI_STATUS_SUCCESS;
21600}/*WDI_ProcessTdlsInd*/
21601#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021602/**
Viral Modid86bde22012-12-10 13:09:21 -080021603*@brief Process Noa Start Indication function (called when
21604 an indication of this kind is being received over the
21605 bus from HAL)
21606
21607 @param pWDICtx: pointer to the WLAN DAL context
21608 pEventData: pointer to the event information structure
21609
21610 @see
21611 @return Result of the function call
21612*/
21613WDI_Status
21614WDI_ProcessP2pNoaStartInd
21615(
21616 WDI_ControlBlockType* pWDICtx,
21617 WDI_EventInfoType* pEventData
21618)
21619{
21620 WDI_LowLevelIndType wdiInd;
21621 tNoaStartIndMsg halNoaStartIndMsg;
21622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21623
21624 /*-------------------------------------------------------------------------
21625 Sanity check
21626 -------------------------------------------------------------------------*/
21627 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21628 ( NULL == pEventData->pEventData ))
21629 {
21630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21631 "%s: Invalid parameters", __func__);
21632 WDI_ASSERT( 0 );
21633 return WDI_STATUS_E_FAILURE;
21634 }
21635
21636 /*-------------------------------------------------------------------------
21637 Extract indication and send it to UMAC
21638 -------------------------------------------------------------------------*/
21639 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21640 pEventData->pEventData,
21641 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21642
21643 /*Fill in the indication parameters*/
21644 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21645
21646 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21647 = halNoaStartIndMsg.noaStartIndParams.status;
21648
21649 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21650 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21651
21652 /*Notify UMAC*/
21653 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21654
21655 return WDI_STATUS_SUCCESS;
21656}/*WDI_ProcessNoaAttrInd*/
21657
21658/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021659*@brief Process Noa Attr Indication function (called when
21660 an indication of this kind is being received over the
21661 bus from HAL)
21662
21663 @param pWDICtx: pointer to the WLAN DAL context
21664 pEventData: pointer to the event information structure
21665
21666 @see
21667 @return Result of the function call
21668*/
21669WDI_Status
21670WDI_ProcessP2pNoaAttrInd
21671(
21672 WDI_ControlBlockType* pWDICtx,
21673 WDI_EventInfoType* pEventData
21674)
21675{
21676 WDI_LowLevelIndType wdiInd;
21677 tNoaAttrIndMsg halNoaAttrIndMsg;
21678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21679
21680 /*-------------------------------------------------------------------------
21681 Sanity check
21682 -------------------------------------------------------------------------*/
21683 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21684 ( NULL == pEventData->pEventData ))
21685 {
21686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021687 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021688 WDI_ASSERT( 0 );
21689 return WDI_STATUS_E_FAILURE;
21690 }
21691
21692 /*-------------------------------------------------------------------------
21693 Extract indication and send it to UMAC
21694 -------------------------------------------------------------------------*/
21695 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21696 pEventData->pEventData,
21697 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21698
21699 /*Fill in the indication parameters*/
21700 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021701
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21703 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021704
Jeff Johnson295189b2012-06-20 16:38:30 -070021705 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21706 = halNoaAttrIndMsg.noaAttrIndParams.index;
21707 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21708 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21709 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21710 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021711
Jeff Johnson295189b2012-06-20 16:38:30 -070021712 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21713 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21714 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21715 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21716 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21717 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21718 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21719 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021720
Jeff Johnson295189b2012-06-20 16:38:30 -070021721 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21722 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21723 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21724 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21725 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21726 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21727 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21728 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21729
ltimariub77f24b2013-01-24 18:54:33 -080021730 if ( pWDICtx->wdiLowLevelIndCB )
21731 {
21732 /*Notify UMAC*/
21733 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21734 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021735
21736 return WDI_STATUS_SUCCESS;
21737}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021738
21739/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021740 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021741 an indication of this kind is being received over the
21742 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021743
21744 @param pWDICtx: pointer to the WLAN DAL context
21745 pEventData: pointer to the event information structure
21746
Jeff Johnson295189b2012-06-20 16:38:30 -070021747 @see
21748 @return Result of the function call
21749*/
21750WDI_Status
21751WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021752(
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 WDI_ControlBlockType* pWDICtx,
21754 WDI_EventInfoType* pEventData
21755)
21756{
21757 WDI_LowLevelIndType wdiInd;
21758 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021759
Jeff Johnson295189b2012-06-20 16:38:30 -070021760 /*-------------------------------------------------------------------------
21761 Extract indication and send it to UMAC
21762 -------------------------------------------------------------------------*/
21763 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021764 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21765
ltimariub77f24b2013-01-24 18:54:33 -080021766 if ( pWDICtx->wdiLowLevelIndCB )
21767 {
21768 /*Notify UMAC*/
21769 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21770 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021771
Jeff Johnsone7245742012-09-05 17:12:55 -070021772 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021773}/*WDI_ProcessTxPerHitInd*/
21774
Jeff Johnson295189b2012-06-20 16:38:30 -070021775/**
Yue Mab9c86f42013-08-14 15:59:08 -070021776 @brief Process Periodic Tx Pattern Fw Indication function
21777
21778 @param pWDICtx: pointer to the WLAN DAL context
21779 pEventData: pointer to the event information structure
21780
21781 @see
21782 @return Result of the function call
21783*/
21784WDI_Status
21785WDI_ProcessPeriodicTxPtrnFwInd
21786(
21787 WDI_ControlBlockType* pWDICtx,
21788 WDI_EventInfoType* pEventData
21789)
21790{
21791 WDI_LowLevelIndType wdiInd;
21792
21793 /*-------------------------------------------------------------------------
21794 Sanity check
21795 -------------------------------------------------------------------------*/
21796 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21797 (NULL == pEventData->pEventData))
21798 {
21799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21800 "%s: Invalid parameters", __func__);
21801 WDI_ASSERT(0);
21802 return WDI_STATUS_E_FAILURE;
21803 }
21804
21805 /*-------------------------------------------------------------------------
21806 Extract indication and send it to UMAC
21807 -------------------------------------------------------------------------*/
21808 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21809 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21810 sizeof(tHalPeriodicTxPtrnFwInd));
21811
21812 if (pWDICtx->wdiLowLevelIndCB)
21813 {
21814 /*Notify UMAC*/
21815 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21816 }
21817
21818 return WDI_STATUS_SUCCESS;
21819}
21820
21821/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021822 @brief WDI_ProcessFTMCommandReq
21823 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021824
21825 @param pWDICtx: pointer to the WLAN DAL context
21826 pEventData: pointer to the event information structure
21827
Jeff Johnson295189b2012-06-20 16:38:30 -070021828 @see
21829 @return Result of the function call
21830*/
21831WDI_Status
21832WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021833(
Jeff Johnson295189b2012-06-20 16:38:30 -070021834 WDI_ControlBlockType* pWDICtx,
21835 WDI_EventInfoType* pEventData
21836)
21837{
21838 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21839 wpt_uint8 *ftmCommandBuffer = NULL;
21840 wpt_uint16 dataOffset;
21841 wpt_uint16 bufferSize;
21842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021843 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021844 -------------------------------------------------------------------------*/
21845 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21846 ( NULL == pEventData->pEventData))
21847
21848 {
21849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021850 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021851 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021852 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021853 }
21854
21855 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21856
21857 /* Get MSG Buffer */
21858 WDI_GetMessageBuffer(pWDICtx,
21859 WDI_FTM_CMD_REQ,
21860 ftmCommandReq->bodyLength,
21861 &ftmCommandBuffer,
21862 &dataOffset,
21863 &bufferSize);
21864
21865 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21866 ftmCommandReq->FTMCommandBody,
21867 ftmCommandReq->bodyLength);
21868
21869 /* Send MSG */
21870 return WDI_SendMsg(pWDICtx,
21871 ftmCommandBuffer,
21872 bufferSize,
21873 pEventData->pCBfnc,
21874 pEventData->pUserData,
21875 WDI_FTM_CMD_RESP);
21876}
21877
21878/**
21879 @brief WDI_ProcessFTMCommandRsp
21880 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021881
21882 @param pWDICtx: pointer to the WLAN DAL context
21883 pEventData: pointer to the event information structure
21884
Jeff Johnson295189b2012-06-20 16:38:30 -070021885 @see
21886 @return Result of the function call
21887*/
21888WDI_Status
21889WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021890(
Jeff Johnson295189b2012-06-20 16:38:30 -070021891 WDI_ControlBlockType* pWDICtx,
21892 WDI_EventInfoType* pEventData
21893)
21894{
21895 WDI_FTMCommandRspCb ftmCMDRspCb;
21896 tProcessPttRspParams *ftmCMDRspData = NULL;
21897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21898
21899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021900 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021901 -------------------------------------------------------------------------*/
21902 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21903 ( NULL == pEventData->pEventData))
21904 {
21905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021906 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021907 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021909 }
21910
21911 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21912
21913 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21914
Jeff Johnsone7245742012-09-05 17:12:55 -070021915 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21916 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021917 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21918
21919 /*Notify UMAC*/
21920 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21921
Jeff Johnsone7245742012-09-05 17:12:55 -070021922 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021923}
Jeff Johnson295189b2012-06-20 16:38:30 -070021924/**
21925 @brief WDI_ProcessHalDumpCmdReq
21926 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021927
21928 @param pWDICtx: pointer to the WLAN DAL context
21929 pEventData: pointer to the event information structure
21930
Jeff Johnson295189b2012-06-20 16:38:30 -070021931 @see
21932 @return Result of the function call
21933*/
21934WDI_Status
21935WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021936(
Jeff Johnson295189b2012-06-20 16:38:30 -070021937 WDI_ControlBlockType* pWDICtx,
21938 WDI_EventInfoType* pEventData
21939)
21940{
21941 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21942 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21943 wpt_uint16 usDataOffset = 0;
21944 wpt_uint16 usSendSize = 0;
21945 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021946 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021947
21948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021950 -------------------------------------------------------------------------*/
21951 if (( NULL == pEventData ) ||
21952 ( NULL == pEventData->pEventData) ||
21953 ( NULL == pEventData->pCBfnc ))
21954 {
21955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 }
21960
21961 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21962 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21963
21964 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021965 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021966 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021967 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021968 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021969 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021970 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021971 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021972 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021973 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021974 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021975
Jeff Johnson295189b2012-06-20 16:38:30 -070021976 /*-----------------------------------------------------------------------
21977 Get message buffer
21978 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021979 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021980 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21981 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021982 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021983 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21984 {
21985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021986 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021987 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021990 }
21991
Jeff Johnsone7245742012-09-05 17:12:55 -070021992 wpalMemoryCopy( pSendBuffer+usDataOffset,
21993 &halDumpCmdReqMsg.dumpCmdReqParams,
21994 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021995
21996 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021997 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021998
21999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022000 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022001 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022002 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22003 wdiHALDumpCmdRspCb, pEventData->pUserData,
22004 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022005}
22006
22007/**
22008 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022009 Process hal Dump Command Response from HAL, simply route to HDD
22010
22011 @param pWDICtx: pointer to the WLAN DAL context
22012 pEventData: pointer to the event information structure
22013
Jeff Johnson295189b2012-06-20 16:38:30 -070022014 @see
22015 @return Result of the function call
22016*/
22017WDI_Status
22018WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022019(
Jeff Johnson295189b2012-06-20 16:38:30 -070022020 WDI_ControlBlockType* pWDICtx,
22021 WDI_EventInfoType* pEventData
22022)
22023{
22024 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022025 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022026 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
22027
22028 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022029 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022030 -------------------------------------------------------------------------*/
22031 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22032 ( NULL == pEventData->pEventData))
22033 {
22034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022035 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 }
22039
Jeff Johnsone7245742012-09-05 17:12:55 -070022040 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022041
22042 /*Initialize the WDI Response structure */
22043 wdiHALDumpCmdRsp.usBufferLen = 0;
22044 wdiHALDumpCmdRsp.pBuffer = NULL;
22045
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022046 wpalMemoryCopy( &halDumpCmdRspParams,
22047 pEventData->pEventData,
22048 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070022049
22050 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022051 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070022052
22053 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022054 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070022055 {
22056 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022057 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
22058 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
22059
22060 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
22061 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053022062 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070022063 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022064
Jeff Johnson295189b2012-06-20 16:38:30 -070022065 /*Notify UMAC*/
22066 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
22067
22068 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22069 {
22070 /* Free the allocated buffer */
22071 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22072 }
22073 return WDI_STATUS_SUCCESS;
22074}
22075
22076/*==========================================================================
22077 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022078
Jeff Johnson295189b2012-06-20 16:38:30 -070022079 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022080 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022081==========================================================================*/
22082/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022083 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022084 when it wishes to send up a notification like the ones
22085 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022086
Jeff Johnson295189b2012-06-20 16:38:30 -070022087 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022088
22089 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022091 wctsNotifyCBData: the callback data of the user
22092
Jeff Johnson295189b2012-06-20 16:38:30 -070022093 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022094
22095 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022096*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022097void
Jeff Johnson295189b2012-06-20 16:38:30 -070022098WDI_NotifyMsgCTSCB
22099(
Jeff Johnsone7245742012-09-05 17:12:55 -070022100 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022101 WCTS_NotifyEventType wctsEvent,
22102 void* wctsNotifyCBData
22103)
22104{
Jeff Johnsone7245742012-09-05 17:12:55 -070022105 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022106 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22107
22108 if (NULL == pWDICtx )
22109 {
22110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022113 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022114 }
22115
22116 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22117 {
22118 /* callback presumably occurred after close */
22119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022120 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022121 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022122 }
22123
22124 if ( WCTS_EVENT_OPEN == wctsEvent )
22125 {
22126 /*Flag must be set atomically as it is checked from incoming request
22127 functions*/
22128 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022129 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022130
22131 /*Nothing to do - so try to dequeue any pending request that may have
22132 occurred while we were trying to establish this*/
22133 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022136 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022137 {
22138 /*Flag must be set atomically as it is checked from incoming request
22139 functions*/
22140 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022141 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022142
22143 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022144 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022145 wpalMutexRelease(&pWDICtx->wptMutex);
22146
22147 /*Notify that the Control Channel is closed */
22148 wpalEventSet(&pWDICtx->wctsActionEvent);
22149 }
22150
22151}/*WDI_NotifyMsgCTSCB*/
22152
22153
22154/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022155 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022156 when it wishes to send up a packet received over the
22157 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022158
Jeff Johnson295189b2012-06-20 16:38:30 -070022159 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022160
22161 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022162 pMsg: the packet
22163 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022164 wctsRxMsgCBData: the callback data of the user
22165
Jeff Johnson295189b2012-06-20 16:38:30 -070022166 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022167
22168 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022169*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022170void
22171WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022172(
Jeff Johnsone7245742012-09-05 17:12:55 -070022173 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022174 void* pMsg,
22175 wpt_uint32 uLen,
22176 void* wctsRxMsgCBData
22177)
22178{
Jeff Johnsone7245742012-09-05 17:12:55 -070022179 tHalMsgHeader *pHalMsgHeader;
22180 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022181 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22182 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22183
22184 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022185 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022186 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022187 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022188 ( uLen < sizeof(tHalMsgHeader)))
22189 {
22190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022191 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022193 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022194 }
22195
22196 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22197 {
22198 /* callback presumably occurred after close */
22199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022200 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022201 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022202 }
22203
Jeff Johnsone7245742012-09-05 17:12:55 -070022204 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 context - so no serialization is necessary here
22206 ! - revisit this assumption */
22207
22208 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22209
22210 if ( uLen != pHalMsgHeader->msgLen )
22211 {
22212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22213 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022214 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022215 wpalWlanReload();
22216
Jeff Johnsone7245742012-09-05 17:12:55 -070022217 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022218 }
22219
22220 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22221
22222 /*The message itself starts after the header*/
22223 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22224 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22225 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22226 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22227
22228
22229 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22230 {
22231 /*Stop the timer as the response was received */
22232 /*!UT - check for potential race conditions between stop and response */
22233 wpalTimerStop(&pWDICtx->wptResponseTimer);
22234 }
22235 /* Check if we receive a response message which is not expected */
22236 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22237 {
22238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22239 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22240 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022241 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022242 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22243 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022244
22245 if (gWDICb.bEnableSSR == false)
22246 {
22247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22248 "SSR is not enabled on WDI timeout");
22249 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22250 return;
22251 }
22252 wpalWcnssResetIntr();
22253 /* if this timer fires, it means Riva did not receive the FIQ */
22254 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22255
Jeff Johnson295189b2012-06-20 16:38:30 -070022256 return;
22257 }
22258
22259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22260 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22261
22262 /*Post response event to the state machine*/
22263 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22264
22265}/*WDI_RXMsgCTSCB*/
22266
22267
22268/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022269 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022270========================================================================*/
22271
22272/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022273 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022275
Jeff Johnson295189b2012-06-20 16:38:30 -070022276 @param pWDICtx - pointer to the control block
22277
22278 @return Result of the function call
22279*/
22280WPT_INLINE WDI_Status
22281WDI_CleanCB
22282(
22283 WDI_ControlBlockType* pWDICtx
22284)
22285{
22286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22287
22288 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022289 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022290
Jeff Johnsone7245742012-09-05 17:12:55 -070022291 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022292 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22293 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22294
22295 WDI_ResetAssocSessions( pWDICtx );
22296
22297 return WDI_STATUS_SUCCESS;
22298}/*WDI_CleanCB*/
22299
22300
22301/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022302 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022303
Jeff Johnsone7245742012-09-05 17:12:55 -070022304
22305 @param pWDICtx: pointer to the WLAN DAL context
22306 pEventData: pointer to the event information structure
22307
Jeff Johnson295189b2012-06-20 16:38:30 -070022308 @see
22309 @return Result of the function call
22310*/
22311WPT_INLINE WDI_Status
22312WDI_ProcessRequest
22313(
22314 WDI_ControlBlockType* pWDICtx,
22315 WDI_EventInfoType* pEventData
22316)
22317{
22318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22319
Jeff Johnsone7245742012-09-05 17:12:55 -070022320 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022321 already checked these pointers*/
22322
22323 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22324 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022325 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022327 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022328 WDI_getReqMsgString(pEventData->wdiRequest),
22329 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22330 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22331 }
22332 else
22333 {
22334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022335 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022336 pEventData->wdiRequest);
22337 return WDI_STATUS_E_NOT_IMPLEMENT;
22338 }
22339}/*WDI_ProcessRequest*/
22340
22341
22342/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022343 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022344 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022345 prefixes it with a send message header
22346
22347 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022348 wdiReqType: type of the request being sent
22349 uBufferLen: message buffer len
22350 pMsgBuffer: resulting allocated buffer
22351 pusDataOffset: offset in the buffer where the caller
22352 can start copying its message data
22353 puBufferSize: the resulting buffer size (offset+buff
22354 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022355
Jeff Johnson295189b2012-06-20 16:38:30 -070022356 @see
22357 @return Result of the function call
22358*/
22359WDI_Status
22360WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022361(
22362 WDI_ControlBlockType* pWDICtx,
22363 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022364 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022365 wpt_uint8** pMsgBuffer,
22366 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022367 wpt_uint16* pusBufferSize
22368)
22369{
22370 tHalMsgHeader halMsgHeader;
22371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22372
Jeff Johnsone7245742012-09-05 17:12:55 -070022373 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022374 again*/
22375
22376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022377 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022378 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022379 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022380 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22381 if ( NULL == *pMsgBuffer )
22382 {
22383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22384 "Unable to allocate message buffer for req %s (%d)",
22385 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022386 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022388 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022389 }
22390
22391 /*-------------------------------------------------------------------------
22392 Fill in the message header
22393 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022394 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22395 /* Fill msgVersion */
22396#ifdef WLAN_FEATURE_11AC
22397 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022398 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022399 else
22400#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022401 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022402
Jeff Johnsone7245742012-09-05 17:12:55 -070022403 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22404 *pusDataOffset = sizeof(halMsgHeader);
22405 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22406
22407 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022408}/*WDI_GetMessageBuffer*/
22409
22410
22411/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022412 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022413 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022414 the CB
22415
22416 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022418
Jeff Johnson295189b2012-06-20 16:38:30 -070022419 usSendSize size of the buffer to be sent
22420 pRspCb: response callback - save in the WDI
22421 CB
22422 pUserData: user data associated with the
22423 callback
22424 wdiExpectedResponse: the code of the response that is
22425 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022426
Jeff Johnson295189b2012-06-20 16:38:30 -070022427 @see
22428 @return Result of the function call
22429*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022430WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022431WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022432(
22433 WDI_ControlBlockType* pWDICtx,
22434 wpt_uint8* pSendBuffer,
22435 wpt_uint32 usSendSize,
22436 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 void* pUserData,
22438 WDI_ResponseEnumType wdiExpectedResponse
22439)
22440{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022441 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022442 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22444
22445 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022447 ------------------------------------------------------------------------*/
22448 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022449 pWDICtx->pfncRspCB = pRspCb;
22450 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022451
22452 /*-----------------------------------------------------------------------
22453 Call the CTS to send this message over - free message afterwards
22454 - notify transport failure
22455 Note: CTS is reponsible for freeing the message buffer.
22456 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022457 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22458 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22459 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022460 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022462 "Failed to send message with expected response %s (%d)"
22463 " over the bus - catastrophic failure",
22464 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22465 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022466
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022467 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22468 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022469 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022470 else
22471 {
22472 /* even when message was placed in CTS deferred Q, we will treat it
22473 success but log this info
22474 */
22475 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22476 {
22477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22478 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22479 "response %s (%d)",
22480 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22481 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022482 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022483 }
22484 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022485
Jeff Johnsond13512a2012-07-17 11:42:19 -070022486 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022487 if ( NULL != pWDICtx->wdiReqStatusCB )
22488 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022489 /*Inform originator whether request went through or not*/
22490 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22491 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022492 pWDICtx->wdiReqStatusCB = NULL;
22493 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022494 callback(wdiStatus, callbackContext);
22495
22496 /*For WDI requests which have registered a request callback,
22497 inform the WDA caller of the same via setting the return value
22498 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22499 end up repeating the functonality in the req callback for the
22500 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022501 if (wdiStatus != WDI_STATUS_SUCCESS)
22502 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022503 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022504 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022505 }
22506
Jeff Johnsond13512a2012-07-17 11:42:19 -070022507 if ( wdiStatus == WDI_STATUS_SUCCESS )
22508 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022509 /*Start timer for the expected response */
22510 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022511
22512 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022513 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022514 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022515 }
22516 else
22517 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022518 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022519 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22520 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022521
Jeff Johnsond13512a2012-07-17 11:42:19 -070022522 return wdiStatus;
22523
Jeff Johnson295189b2012-06-20 16:38:30 -070022524}/*WDI_SendMsg*/
22525
22526
22527
22528/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022529 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022530 the bus using the control transport and saves some info
22531 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022532
22533 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022534 pSendBuffer: buffer to be sent
22535 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022536
Jeff Johnson295189b2012-06-20 16:38:30 -070022537 @see
22538 @return Result of the function call
22539*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022540WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022541WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022542(
22543 WDI_ControlBlockType* pWDICtx,
22544 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022545 wpt_uint32 usSendSize
22546)
22547{
22548 wpt_uint32 uStatus ;
22549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22550
22551 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022552 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022553 Note: CTS is reponsible for freeing the message buffer.
22554 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022555 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022556 (void*)pSendBuffer, usSendSize );
22557
22558 /*Inform Upper MAC about the outcome of the request*/
22559 if ( NULL != pWDICtx->wdiReqStatusCB )
22560 {
22561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22562 "Send indication status : %d", uStatus);
22563
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022564 /* even if CTS placed indication into its deferred Q, we treat it
22565 * as success and let CTS drain its queue as per smd interrupt to CTS
22566 */
22567 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 -070022568 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022569 }
22570
22571 /*If sending of the message failed - it is considered catastrophic and
22572 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022573 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22574 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22575
Jeff Johnson295189b2012-06-20 16:38:30 -070022576 {
22577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022578 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022579
22580 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22581 return WDI_STATUS_E_FAILURE;
22582 }
22583
Jeff Johnsone7245742012-09-05 17:12:55 -070022584 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022585}/*WDI_SendIndication*/
22586
22587
22588/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022589 @brief WDI_DetectedDeviceError - called internally by DAL when
22590 it has detected a failure in the device
22591
22592 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022593 usErrorCode: error code detected by WDI or received
22594 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022595
Jeff Johnson295189b2012-06-20 16:38:30 -070022596 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022597 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022598*/
22599void
22600WDI_DetectedDeviceError
22601(
22602 WDI_ControlBlockType* pWDICtx,
22603 wpt_uint16 usErrorCode
22604)
22605{
22606 WDI_LowLevelIndType wdiInd;
22607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22608
22609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22610 "Device Error detected code: %d - transitioning to stopped state",
22611 usErrorCode);
22612
Katya Nigamf02ad012014-05-05 16:12:49 +053022613 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22614
Jeff Johnson295189b2012-06-20 16:38:30 -070022615 wpalMutexAcquire(&pWDICtx->wptMutex);
22616
22617 WDI_STATableStop(pWDICtx);
22618
22619 WDI_ResetAssocSessions(pWDICtx);
22620
22621 /*Set the expected state transition to stopped - because the device
22622 experienced a failure*/
22623 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22624
22625 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022626 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022627
Jeff Johnsone7245742012-09-05 17:12:55 -070022628 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022629
22630 /*TO DO: - there should be an attempt to reset the device here*/
22631
22632 wpalMutexRelease(&pWDICtx->wptMutex);
22633
22634 /*------------------------------------------------------------------------
22635 Notify UMAC if a handler is registered
22636 ------------------------------------------------------------------------*/
22637 if (pWDICtx->wdiLowLevelIndCB)
22638 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022639 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22640 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022641
22642 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22643 }
22644}/*WDI_DetectedDeviceError*/
22645
22646/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022647 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022648 we started on send message has expire - this should
22649 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022650 reply - trigger catastrophic failure
22651 @param
22652
Jeff Johnson295189b2012-06-20 16:38:30 -070022653 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022654
22655 @see
22656 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022657*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022658void
Jeff Johnson295189b2012-06-20 16:38:30 -070022659WDI_ResponseTimerCB
22660(
22661 void *pUserData
22662)
22663{
22664 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22666
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022667 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022668 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022670 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022671 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022672 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022673 }
22674
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022675 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022676 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022677 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022678
22679 /* If response timer is running at this time that means this timer
22680 * event is not for the last request but rather last-to-last request and
22681 * this timer event has come after we recevied respone for last-to-last
22682 * message
22683 */
22684 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22685 {
22686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22687 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022688 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022689 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22691 "uArchTimeStampTmrStart: %llu seconds, "
22692 "uArchTimeStampTmrExp: %llu seconds",
22693 pWDICtx->uArchTimeStampRspTmrStart,
22694 pWDICtx->uArchTimeStampRspTmrExp);
22695
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022696 return;
22697 }
22698
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022699 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022700 {
22701
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022703 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022704 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022705 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022706 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22707 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22709 "uArchTimeStampTmrStart: %llu seconds, "
22710 "uArchTimeStampTmrExp: %llu seconds",
22711 pWDICtx->uArchTimeStampRspTmrStart,
22712 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022713
22714 /* WDI timeout means Riva is not responding or SMD communication to Riva
22715 * is not happening. The only possible way to recover from this error
22716 * is to initiate SSR from APPS.
22717 * There is also an option to re-enable wifi, which will eventually
22718 * trigger SSR
22719 */
22720 if (gWDICb.bEnableSSR == false)
22721 {
22722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22723 "SSR is not enabled on WDI timeout");
22724 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22725 return;
22726 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022727#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022728 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053022729 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053022730 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022731 if(wpalIsSsrPanicOnFailure())
22732 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022733 } else {
22734 /* if this timer fires, it means Riva did not receive the FIQ */
22735 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022736 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022737#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022738 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22739 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022740#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022741 }
22742 else
22743 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022745 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022746 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022747 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22748 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22750 "uArchTimeStampTmrStart: %llu seconds, "
22751 "uArchTimeStampTmrExp: %llu seconds",
22752 pWDICtx->uArchTimeStampRspTmrStart,
22753 pWDICtx->uArchTimeStampRspTmrExp);
22754
Jeff Johnson295189b2012-06-20 16:38:30 -070022755 }
22756
22757 return;
22758
22759}/*WDI_ResponseTimerCB*/
22760
22761
22762/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022763 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022764
Jeff Johnsone7245742012-09-05 17:12:55 -070022765
22766 @param pWDICtx: pointer to the WLAN DAL context
22767 pEventData: pointer to the event information structure
22768
Jeff Johnson295189b2012-06-20 16:38:30 -070022769 @see
22770 @return Result of the function call
22771*/
22772WPT_INLINE WDI_Status
22773WDI_ProcessResponse
22774(
22775 WDI_ControlBlockType* pWDICtx,
22776 WDI_EventInfoType* pEventData
22777)
22778{
22779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22780
Jeff Johnsone7245742012-09-05 17:12:55 -070022781 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022782 already checked these pointers
22783 ! - revisit this assumption */
22784 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22785 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022786 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022788 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022789 WDI_getRespMsgString(pEventData->wdiResponse),
22790 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22791 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22792 }
22793 else
22794 {
22795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022796 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022797 pEventData->wdiResponse);
22798 return WDI_STATUS_E_NOT_IMPLEMENT;
22799 }
22800}/*WDI_ProcessResponse*/
22801
22802
22803/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022804 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022805=========================================================================*/
22806
22807/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022808 @brief Utility function used by the DAL Core to help queue a
22809 request that cannot be processed right away.
22810 @param
22811
Jeff Johnson295189b2012-06-20 16:38:30 -070022812 pWDICtx: - pointer to the WDI control block
22813 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022814 queued
22815
22816 @see
22817 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022818*/
22819WDI_Status
22820WDI_QueuePendingReq
22821(
22822 WDI_ControlBlockType* pWDICtx,
22823 WDI_EventInfoType* pEventData
22824)
22825{
Jeff Johnsone7245742012-09-05 17:12:55 -070022826 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022827 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022828 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022829 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22830
22831 if ( NULL == pEventDataQueue )
22832 {
22833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022834 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022835 WDI_ASSERT(0);
22836 return WDI_STATUS_MEM_FAILURE;
22837 }
22838
22839 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22840 pEventDataQueue->pUserData = pEventData->pUserData;
22841 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22842 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022843 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022844
22845 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22846 {
22847 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022848
Jeff Johnson295189b2012-06-20 16:38:30 -070022849 if ( NULL == pEventInfo )
22850 {
22851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022852 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022853 WDI_ASSERT(0);
22854 wpalMemoryFree(pEventDataQueue);
22855 return WDI_STATUS_MEM_FAILURE;
22856 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022857
Jeff Johnson295189b2012-06-20 16:38:30 -070022858 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22859
22860 }
22861 pEventDataQueue->pEventData = pEventInfo;
22862
22863 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022864 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022865
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022866 if (eWLAN_PAL_STATUS_E_FAILURE ==
22867 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22868 {
22869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22870 "pEventDataQueue wpal_list_insert_back failed");
22871 WDI_ASSERT(0);
22872 wpalMemoryFree(pEventDataQueue);
22873 wpalMemoryFree(pEventInfo);
22874 return WDI_STATUS_MEM_FAILURE;
22875 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022876
22877 return WDI_STATUS_SUCCESS;
22878}/*WDI_QueuePendingReq*/
22879
22880/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022881 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022882 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022883 @param
22884
22885 pMsg - pointer to the message
22886
22887 @see
22888 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022889*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022890void
Jeff Johnson295189b2012-06-20 16:38:30 -070022891WDI_PALCtrlMsgCB
22892(
22893 wpt_msg *pMsg
22894)
22895{
22896 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022897 WDI_ControlBlockType* pWDICtx = NULL;
22898 WDI_Status wdiStatus;
22899 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022900 void* pUserData;
22901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22902
22903 if (( NULL == pMsg )||
22904 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22905 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22906 {
22907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022908 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022909 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022910 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022911 }
22912
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022913 /*Access to the global state must be locked */
22914 wpalMutexAcquire(&pWDICtx->wptMutex);
22915
Jeff Johnson295189b2012-06-20 16:38:30 -070022916 /*Transition back to the state that we had before serialization
22917 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022918 */
Jeff Johnsone7245742012-09-05 17:12:55 -070022919 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022920 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022921
22922 /*-----------------------------------------------------------------------
22923 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022924 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022925 -----------------------------------------------------------------------*/
22926 switch ( pEventData->wdiRequest )
22927 {
22928
Jeff Johnsone7245742012-09-05 17:12:55 -070022929 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022930 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22931 break;
22932
Jeff Johnson295189b2012-06-20 16:38:30 -070022933 case WDI_NV_DOWNLOAD_REQ:
22934 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22935 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22936 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22937 {
22938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022939 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022940 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22941 }
22942 else
22943 {
22944 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22945 }
22946
22947 break;
22948
22949 default:
22950 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22951 break;
22952 }/*switch ( pEventData->wdiRequest )*/
22953
22954 if ( WDI_STATUS_SUCCESS != wdiStatus )
22955 {
22956 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22957
22958 if ( NULL != pfnReqStatusCB )
22959 {
22960 /*Fail the request*/
22961 pfnReqStatusCB( wdiStatus, pUserData);
22962 }
22963 }
22964
22965 /* Free data - that was allocated when queueing*/
22966 if( pEventData != NULL )
22967 {
22968 if( pEventData->pEventData != NULL )
22969 {
22970 wpalMemoryFree(pEventData->pEventData);
22971 }
22972 wpalMemoryFree(pEventData);
22973 }
22974
22975 if( pMsg != NULL )
22976 {
22977 wpalMemoryFree(pMsg);
22978 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022979
Jeff Johnson295189b2012-06-20 16:38:30 -070022980}/*WDI_PALCtrlMsgCB*/
22981
22982/**
22983 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022984 and schedule for execution a pending request
22985 @param
22986
Jeff Johnson295189b2012-06-20 16:38:30 -070022987 pWDICtx: - pointer to the WDI control block
22988 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022989 queued
22990
22991 @see
22992 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022993*/
22994WDI_Status
22995WDI_DequeuePendingReq
22996(
22997 WDI_ControlBlockType* pWDICtx
22998)
22999{
Jeff Johnsone7245742012-09-05 17:12:55 -070023000 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023001 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023002 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070023003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23004
Jeff Johnsone7245742012-09-05 17:12:55 -070023005 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023006
23007 if ( NULL == pNode )
23008 {
23009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023010 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023011 return WDI_STATUS_SUCCESS;
23012 }
23013
23014 /*The node actually points to the 1st element inside the Event Data struct -
23015 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023016 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023017
23018 /*Serialize processing in the control thread
23019 !TO DO: - check to see if these are all the messages params that need
23020 to be filled in*/
23021 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
23022
23023 if ( NULL == palMsg )
23024 {
23025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023026 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070023027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023028 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023029 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023030 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023031 palMsg->callback = WDI_PALCtrlMsgCB;
23032 palMsg->ptr = pEventData;
23033
23034 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023035 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080023036 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023037
Jeff Johnson295189b2012-06-20 16:38:30 -070023038 /*Transition back to BUSY as we need to handle a queued request*/
23039 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070023040
Jeff Johnson295189b2012-06-20 16:38:30 -070023041 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
23042
23043 return WDI_STATUS_PENDING;
23044}/*WDI_DequeuePendingReq*/
23045
23046
23047/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023048 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023049 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023050 away.- The assoc requests will be queued by BSSID
23051 @param
23052
Jeff Johnson295189b2012-06-20 16:38:30 -070023053 pWDICtx: - pointer to the WDI control block
23054 pEventData: pointer to the evnt info that needs to be queued
23055 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070023056
23057 @see
23058 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023059*/
23060WDI_Status
23061WDI_QueueNewAssocRequest
23062(
23063 WDI_ControlBlockType* pWDICtx,
23064 WDI_EventInfoType* pEventData,
23065 wpt_macAddr macBSSID
23066)
23067{
Jeff Johnsone7245742012-09-05 17:12:55 -070023068 wpt_uint8 i;
23069 WDI_BSSSessionType* pSession = NULL;
23070 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023071 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023072 void* pEventInfo;
23073 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023075
Jeff Johnsone7245742012-09-05 17:12:55 -070023076
23077 /*------------------------------------------------------------------------
23078 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023079 ------------------------------------------------------------------------*/
23080 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23081 {
23082 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23083 {
23084 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023085 pSession = &pWDICtx->aBSSSessions[i];
23086 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 }
23088 }
23089
23090 if ( i >= WDI_MAX_BSS_SESSIONS )
23091 {
23092 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023094 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023095
Jeff Johnson295189b2012-06-20 16:38:30 -070023096 /*------------------------------------------------------------------------
23097 Fill in the BSSID for this session and set the usage flag
23098 ------------------------------------------------------------------------*/
23099 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023100 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023101
23102 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023103 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023104 ------------------------------------------------------------------------*/
23105 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23106 if ( NULL == pEventDataQueue )
23107 {
23108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023109 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023110 WDI_ASSERT(0);
23111 return WDI_STATUS_MEM_FAILURE;
23112 }
23113
23114 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23115 if ( NULL == pSessionIdElement )
23116 {
23117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023118 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023119 WDI_ASSERT(0);
23120 wpalMemoryFree(pEventDataQueue);
23121 return WDI_STATUS_MEM_FAILURE;
23122 }
23123
23124 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23125 if ( NULL == pEventInfo )
23126 {
23127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023128 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023129 WDI_ASSERT(0);
23130 wpalMemoryFree(pSessionIdElement);
23131 wpalMemoryFree(pEventDataQueue);
23132 return WDI_STATUS_MEM_FAILURE;
23133 }
23134
23135 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23136 pEventDataQueue->pUserData = pEventData->pUserData;
23137 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23138 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023139 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023140
23141 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23142 pEventDataQueue->pEventData = pEventInfo;
23143
23144 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023145 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023146
23147 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023148 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023149
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023150 if (eWLAN_PAL_STATUS_E_FAILURE ==
23151 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23152 {
23153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23154 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23155 WDI_ASSERT(0);
23156 wpalMemoryFree(pSessionIdElement);
23157 wpalMemoryFree(pEventDataQueue);
23158 wpalMemoryFree(pEventInfo);
23159 return WDI_STATUS_MEM_FAILURE;
23160 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023161
23162 /*We need to maintain a separate list that keeps track of the order in which
23163 the new assoc requests are being queued such that we can start processing
23164 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023165 pSessionIdElement->ucIndex = i;
23166 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023167
23168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23169 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023170 if (eWLAN_PAL_STATUS_E_FAILURE ==
23171 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23172 {
23173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23174 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23175 WDI_ASSERT(0);
23176 wpalMemoryFree(pSessionIdElement);
23177 wpalMemoryFree(pEventDataQueue);
23178 wpalMemoryFree(pEventInfo);
23179 return WDI_STATUS_MEM_FAILURE;
23180 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023181
23182 /*Return pending as this is what the status of the request is since it has
23183 been queued*/
23184 return WDI_STATUS_PENDING;
23185}/*WDI_QueueNewAssocRequest*/
23186
23187/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023188 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023189 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023190 away.- The assoc requests will be queued by BSSID
23191 @param
23192
Jeff Johnson295189b2012-06-20 16:38:30 -070023193 pWDICtx: - pointer to the WDI control block
23194 pSession: - session in which to queue
23195 pEventData: pointer to the event info that needs to be
23196 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023197
23198 @see
23199 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023200*/
23201WDI_Status
23202WDI_QueueAssocRequest
23203(
23204 WDI_ControlBlockType* pWDICtx,
23205 WDI_BSSSessionType* pSession,
23206 WDI_EventInfoType* pEventData
23207)
23208{
Jeff Johnsone7245742012-09-05 17:12:55 -070023209 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023210 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023211 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023213
23214 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 Sanity check
23216 ------------------------------------------------------------------------*/
23217 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23218 {
23219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023220 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023221
Jeff Johnsone7245742012-09-05 17:12:55 -070023222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023223 }
23224
23225 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023226 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023227 ------------------------------------------------------------------------*/
23228 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23229 if ( NULL == pEventDataQueue )
23230 {
23231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023232 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023233 WDI_ASSERT(0);
23234 return WDI_STATUS_MEM_FAILURE;
23235 }
23236
23237 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23238 if ( NULL == pEventInfo )
23239 {
23240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23241 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023242 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023243 WDI_ASSERT(0);
23244 wpalMemoryFree(pEventDataQueue);
23245 return WDI_STATUS_MEM_FAILURE;
23246 }
23247
23248 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23249 pEventDataQueue->pUserData = pEventData->pUserData;
23250 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23251 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023252 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023253 pEventDataQueue->pEventData = pEventInfo;
23254
23255 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23256
23257 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023258 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023259
23260 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023261 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023262
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023263 if (eWLAN_PAL_STATUS_E_FAILURE ==
23264 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23265 {
23266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23267 "%s: Cannot allocate memory for queueing event data info",
23268 __func__);
23269 WDI_ASSERT(0);
23270 wpalMemoryFree(pEventDataQueue);
23271 wpalMemoryFree(pEventInfo);
23272 return WDI_STATUS_MEM_FAILURE;
23273 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023274
23275 /*The result of this operation is pending because the request has been
23276 queued and it will be processed at a later moment in time */
23277 return WDI_STATUS_PENDING;
23278}/*WDI_QueueAssocRequest*/
23279
23280/**
23281 @brief Utility function used by the DAL Core to help dequeue
23282 an association request that was pending
23283 The request will be queued up in front of the main
23284 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023285 @param
23286
Jeff Johnson295189b2012-06-20 16:38:30 -070023287 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023288
23289
23290 @see
23291 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023292*/
23293WDI_Status
23294WDI_DequeueAssocRequest
23295(
23296 WDI_ControlBlockType* pWDICtx
23297)
23298{
Jeff Johnsone7245742012-09-05 17:12:55 -070023299 wpt_list_node* pNode = NULL;
23300 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023301 WDI_BSSSessionType* pSession;
23302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023303
23304 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023305 Sanity check
23306 ------------------------------------------------------------------------*/
23307 if ( NULL == pWDICtx )
23308 {
23309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023311
Jeff Johnsone7245742012-09-05 17:12:55 -070023312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023313 }
23314
23315 /*------------------------------------------------------------------------
23316 An association has been completed => a new association can occur
23317 Check to see if there are any pending associations ->
23318 If so , transfer all the pending requests into the busy queue for
23319 processing
23320 These requests have arrived prior to the requests in the busy queue
23321 (bc they needed to be processed in order to be placed in this queue)
23322 => they will be placed at the front of the busy queue
23323 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023324 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023325
23326 if ( NULL == pNode )
23327 {
23328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023329 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023330 return WDI_STATUS_SUCCESS;
23331 }
23332
23333 /*The node actually points to the 1st element inside the Session Id struct -
23334 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023335 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023336
23337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23338 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23339
23340 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23341 {
23342 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023343
Jeff Johnson295189b2012-06-20 16:38:30 -070023344 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023345 the front of the main waiting queue for subsequent execution*/
23346 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023347 while ( NULL != pNode )
23348 {
23349 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023350 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23351 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023352 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023353 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023354 }
23355 else
23356 {
23357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023358 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023359 WPAL_ASSERT(0);
23360 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023362 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023363
Jeff Johnson295189b2012-06-20 16:38:30 -070023364 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23365 wpalMemoryFree(pSessionIdElement);
23366 return WDI_STATUS_SUCCESS;
23367}/*WDI_DequeueAssocRequest*/
23368
23369/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023370 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023371 pending requests - all req cb will be called with
23372 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023373 @param
23374
Jeff Johnson295189b2012-06-20 16:38:30 -070023375 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023376
23377 @see
23378 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023379*/
23380WDI_Status
23381WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023382(
Jeff Johnson295189b2012-06-20 16:38:30 -070023383 WDI_ControlBlockType* pWDICtx
23384)
23385{
Jeff Johnsone7245742012-09-05 17:12:55 -070023386 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023387 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023388 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023389 void* pUserData;
23390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23391
Jeff Johnsone7245742012-09-05 17:12:55 -070023392 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023393
23394 /*------------------------------------------------------------------------
23395 Go through all the requests and fail them - this will only be called
23396 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023397 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023398 ------------------------------------------------------------------------*/
23399 while( pNode )
23400 {
23401 /*The node actually points to the 1st element inside the Event Data struct -
23402 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023403 pEventDataQueue = (WDI_EventInfoType*)pNode;
23404
Jeff Johnson295189b2012-06-20 16:38:30 -070023405 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23406 if ( NULL != pfnReqStatusCB )
23407 {
23408 /*Fail the request*/
23409 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23410 }
23411 /* Free data - that was allocated when queueing */
23412 if ( pEventDataQueue->pEventData != NULL )
23413 {
23414 wpalMemoryFree(pEventDataQueue->pEventData);
23415 }
23416 wpalMemoryFree(pEventDataQueue);
23417
23418 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23419 {
23420 break;
23421 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023422 }
23423
Jeff Johnson295189b2012-06-20 16:38:30 -070023424 return WDI_STATUS_SUCCESS;
23425}/*WDI_ClearPendingRequests*/
23426
23427/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023428 @brief Helper routine used to init the BSS Sessions in the WDI control block
23429
23430
23431 @param pWDICtx: pointer to the WLAN DAL context
23432
Jeff Johnson295189b2012-06-20 16:38:30 -070023433 @see
23434*/
23435void
23436WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023437(
Jeff Johnson295189b2012-06-20 16:38:30 -070023438 WDI_ControlBlockType* pWDICtx
23439)
23440{
Jeff Johnsone7245742012-09-05 17:12:55 -070023441 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23443
23444 /*-------------------------------------------------------------------------
23445 No Sanity check
23446 -------------------------------------------------------------------------*/
23447 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23448 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023449 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023450 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23451 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23452 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23453 }
23454}/*WDI_ResetAssocSessions*/
23455
23456/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023457 @brief Helper routine used to find a session based on the BSSID
23458
23459
23460 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023461 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023462 pSession: pointer to the session (if found)
23463
Jeff Johnson295189b2012-06-20 16:38:30 -070023464 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023465 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023466*/
23467wpt_uint8
23468WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023469(
Jeff Johnson295189b2012-06-20 16:38:30 -070023470 WDI_ControlBlockType* pWDICtx,
23471 wpt_macAddr macBSSID,
23472 WDI_BSSSessionType** ppSession
23473)
23474{
Jeff Johnsone7245742012-09-05 17:12:55 -070023475 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23477
23478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023479 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023480 -------------------------------------------------------------------------*/
23481 if ( NULL == ppSession )
23482 {
23483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023484 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023485 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023486 }
23487
Jeff Johnsone7245742012-09-05 17:12:55 -070023488 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023489
Jeff Johnsone7245742012-09-05 17:12:55 -070023490 /*------------------------------------------------------------------------
23491 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023492 ------------------------------------------------------------------------*/
23493 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23494 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023495 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23496 (eWLAN_PAL_TRUE ==
23497 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23498 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023499 {
23500 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023501 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023502 return i;
23503 }
23504 }
23505
Jeff Johnsone7245742012-09-05 17:12:55 -070023506 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023507}/*WDI_FindAssocSession*/
23508
23509/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023510 @brief Helper routine used to find a session based on the BSSID
23511
23512
23513 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023514 ucBSSIdx: BSS Index of the session
23515 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023516
Jeff Johnson295189b2012-06-20 16:38:30 -070023517 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023518 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023519*/
23520wpt_uint8
23521WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023522(
Jeff Johnson295189b2012-06-20 16:38:30 -070023523 WDI_ControlBlockType* pWDICtx,
23524 wpt_uint16 ucBSSIdx,
23525 WDI_BSSSessionType** ppSession
23526)
23527{
Jeff Johnsone7245742012-09-05 17:12:55 -070023528 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23530
23531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023532 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023533 -------------------------------------------------------------------------*/
23534 if ( NULL == ppSession )
23535 {
23536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023537 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023538 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023539 }
23540
Jeff Johnsone7245742012-09-05 17:12:55 -070023541 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023542
Jeff Johnsone7245742012-09-05 17:12:55 -070023543 /*------------------------------------------------------------------------
23544 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023545 ------------------------------------------------------------------------*/
23546 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23547 {
23548 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23549 {
23550 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023551 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023552 return i;
23553 }
23554 }
23555
Jeff Johnsone7245742012-09-05 17:12:55 -070023556 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023557}/*WDI_FindAssocSessionByBSSIdx*/
23558
23559/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023560 @brief Helper routine used to find a session based on the BSSID
23561
23562
23563 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023564 ucBSSIdx: BSS Index of the session
23565 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023566
Jeff Johnson295189b2012-06-20 16:38:30 -070023567 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023568 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023569*/
23570wpt_uint8
23571WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023572(
Jeff Johnson295189b2012-06-20 16:38:30 -070023573 WDI_ControlBlockType* pWDICtx,
23574 wpt_uint16 usIdx,
23575 WDI_BSSSessionType** ppSession
23576)
23577{
23578 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23579
23580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023581 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023582 -------------------------------------------------------------------------*/
23583 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23584 {
23585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023586 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023587 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023588 }
23589
23590 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023591 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023592
23593 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023594
Jeff Johnson295189b2012-06-20 16:38:30 -070023595}/*WDI_FindAssocSessionByBSSIdx*/
23596
23597/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023598 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023599 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023600
23601
23602 @param pWDICtx: pointer to the WLAN DAL context
23603 pSession: pointer to the session (if found)
23604
Jeff Johnson295189b2012-06-20 16:38:30 -070023605 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023606 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023607*/
23608wpt_uint8
23609WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023610(
Jeff Johnson295189b2012-06-20 16:38:30 -070023611 WDI_ControlBlockType* pWDICtx,
23612 WDI_BSSSessionType** ppSession
23613)
23614{
Jeff Johnsone7245742012-09-05 17:12:55 -070023615 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023618 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023619 -------------------------------------------------------------------------*/
23620 if ( NULL == ppSession )
23621 {
23622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023623 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023624 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023625 }
23626
Jeff Johnsone7245742012-09-05 17:12:55 -070023627 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023628
Jeff Johnsone7245742012-09-05 17:12:55 -070023629 /*------------------------------------------------------------------------
23630 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023631 ------------------------------------------------------------------------*/
23632 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23633 {
23634 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23635 {
23636 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023637 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023638 return i;
23639 }
23640 }
23641
Jeff Johnsone7245742012-09-05 17:12:55 -070023642 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023643}/*WDI_FindEmptySession*/
23644
23645
23646/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023647 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023648 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023649
23650
23651 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023652 macBSSID: pointer to BSSID. If NULL, get all the session.
23653 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23654 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23655 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023656 @see
23657 @return Number of sessions in use
23658*/
23659wpt_uint8
23660WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023661(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023662 WDI_ControlBlockType* pWDICtx,
23663 wpt_macAddr macBSSID,
23664 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023665)
23666{
Jeff Johnsone7245742012-09-05 17:12:55 -070023667 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023669
23670 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023671 Count all sessions in use
23672 ------------------------------------------------------------------------*/
23673 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23674 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023675 if ( macBSSID && skipBSSID &&
23676 (eWLAN_PAL_TRUE ==
23677 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23678 WDI_MAC_ADDR_LEN)))
23679 {
23680 continue;
23681 }
23682 else if ( pWDICtx->aBSSSessions[i].bInUse )
23683 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023684 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023685 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023686 }
23687
Jeff Johnsone7245742012-09-05 17:12:55 -070023688 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023689}/*WDI_GetActiveSessionsCount*/
23690
23691/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023692 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023693 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023694
23695
23696 @param pWDICtx: pointer to the WLAN DAL context
23697 pSession: pointer to the session (if found)
23698
Jeff Johnson295189b2012-06-20 16:38:30 -070023699 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023700 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023701*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023702void
Jeff Johnson295189b2012-06-20 16:38:30 -070023703WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023704(
Jeff Johnson295189b2012-06-20 16:38:30 -070023705 WDI_ControlBlockType* pWDICtx,
23706 WDI_BSSSessionType* ppSession
23707)
23708{
23709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023710 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023711 -------------------------------------------------------------------------*/
23712 if ( NULL == ppSession )
23713 {
23714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023715 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023716 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023717 }
23718
Jeff Johnsone7245742012-09-05 17:12:55 -070023719 /*------------------------------------------------------------------------
23720 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023721 ------------------------------------------------------------------------*/
23722 wpal_list_destroy(&ppSession->wptPendingQueue);
23723 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023724 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23725 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023726 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23727 wpal_list_init(&ppSession->wptPendingQueue);
23728
23729}/*WDI_DeleteSession*/
23730
23731/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023732 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023734 @param
23735
Jeff Johnson295189b2012-06-20 16:38:30 -070023736 WDI_AddStaParams: - pointer to the WDI Add STA params
23737 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023738
23739 @see
23740 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023741*/
23742void
23743WDI_AddBcastSTAtoSTATable
23744(
23745 WDI_ControlBlockType* pWDICtx,
23746 WDI_AddStaParams * staParams,
23747 wpt_uint16 usBcastStaIdx
23748)
23749{
23750 WDI_AddStaParams wdiAddSTAParam = {0};
23751 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23753
23754 /*---------------------------------------------------------------------
23755 Sanity check
23756 ---------------------------------------------------------------------*/
23757 if ( NULL == staParams )
23758 {
23759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023760 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023761
Jeff Johnsone7245742012-09-05 17:12:55 -070023762 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023763 }
23764
23765 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23766 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23767 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23768 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23769 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23770 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23771 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23772 WDI_MAC_ADDR_LEN );
23773 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23774 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23775 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23776 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23777 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23778 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23779 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023780
Jeff Johnson295189b2012-06-20 16:38:30 -070023781 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23782}
23783
23784/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023785 @brief NV blob will be divided into fragments of size 4kb and
23786 Sent to HAL
23787
23788 @param pWDICtx: pointer to the WLAN DAL context
23789 pEventData: pointer to the event information structure
23790
Jeff Johnson295189b2012-06-20 16:38:30 -070023791 @see
23792 @return Result of the function call
23793 */
23794
23795WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023796(
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 WDI_ControlBlockType* pWDICtx,
23798 WDI_EventInfoType* pEventData
23799)
23800{
23801
23802 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23803 wpt_uint8* pSendBuffer = NULL;
23804 wpt_uint16 usDataOffset = 0;
23805 wpt_uint16 usSendSize = 0;
23806 wpt_uint16 usCurrentFragmentSize =0;
23807 wpt_uint8* pSrcBuffer = NULL;
23808 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23809 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23810
23811 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23812 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23813 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23814
Jeff Johnsone7245742012-09-05 17:12:55 -070023815 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023816 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23817
23818 /* Update the current Fragment Number */
23819 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23820
23821 /*Update the HAL REQ structure */
23822 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23823 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23824 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23825
23826 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023827 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023828 image will be sent to HAL*/
23829
Jeff Johnsone7245742012-09-05 17:12:55 -070023830 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023831 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023832 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023833 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023834 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023835 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23836 usCurrentFragmentSize = FRAGMENT_SIZE;
23837
23838 /*Update the HAL REQ structure */
23839 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23840 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23841
23842 }
23843 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023844 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023845 usCurrentFragmentSize = FRAGMENT_SIZE;
23846
23847 /*Update the HAL REQ structure */
23848 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23849 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23850 }
23851
23852 /*-----------------------------------------------------------------------
23853 Get message buffer
23854 -----------------------------------------------------------------------*/
23855 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23856 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23857 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023858 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023859 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23860 {
23861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023862 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023863 pEventData, pwdiNvDownloadReqParams);
23864 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023866 }
23867
23868 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023869 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023870 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23871
23872 /* Appending the NV image fragment */
23873 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23874 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23875 usCurrentFragmentSize);
23876
23877 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023878 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023879
Jeff Johnsone7245742012-09-05 17:12:55 -070023880 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23881 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023882 WDI_NV_DOWNLOAD_RESP);
23883
23884}
Jeff Johnsone7245742012-09-05 17:12:55 -070023885/*============================================================================
23886 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023887 ============================================================================*/
23888/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023889 @brief Helper routine used to find a session based on the BSSID
23890 @param pContext: pointer to the WLAN DAL context
23891 @param pDPContext: pointer to the Datapath context
23892
Jeff Johnson295189b2012-06-20 16:38:30 -070023893 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023894 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023895*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023896WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023897WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23898{
23899 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23900
23901 pCB->pDPContext = pDPContext;
23902 return;
23903}
23904
23905/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023906 @brief Helper routine used to find a session based on the BSSID
23907
23908
23909 @param pContext: pointer to the WLAN DAL context
23910
Jeff Johnson295189b2012-06-20 16:38:30 -070023911 @see
23912 @return pointer to Datapath context
23913*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023914WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023915WDI_DS_GetDatapathContext (void *pContext)
23916{
23917 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23918 return pCB->pDPContext;
23919}
23920/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023921 @brief Helper routine used to find a session based on the BSSID
23922
23923
23924 @param pContext: pointer to the WLAN DAL context
23925 @param pDTDriverContext: pointer to the Transport Driver context
23926
Jeff Johnson295189b2012-06-20 16:38:30 -070023927 @see
23928 @return void
23929*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023930WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023931WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23932{
23933 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23934
23935 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023936 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023937}
23938
23939/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023940 @brief Helper routine used to find a session based on the BSSID
23941
23942
23943 @param pWDICtx: pointer to the WLAN DAL context
23944
Jeff Johnson295189b2012-06-20 16:38:30 -070023945 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023946 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023947*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023948WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023949WDT_GetTransportDriverContext (void *pContext)
23950{
23951 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023952 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023953}
23954
Jeff Johnsone7245742012-09-05 17:12:55 -070023955/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023956 Helper inline converters
23957 ============================================================================*/
23958/*Convert WDI driver type into HAL driver type*/
23959WPT_STATIC WPT_INLINE WDI_Status
23960WDI_HAL_2_WDI_STATUS
23961(
23962 eHalStatus halStatus
23963)
23964{
Jeff Johnsone7245742012-09-05 17:12:55 -070023965 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023966 the chances of getting inlined*/
23967 switch( halStatus )
23968 {
23969 case eHAL_STATUS_SUCCESS:
23970 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23971 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23972 return WDI_STATUS_SUCCESS;
23973 case eHAL_STATUS_FAILURE:
23974 return WDI_STATUS_E_FAILURE;
23975 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023976 return WDI_STATUS_MEM_FAILURE;
23977 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023978 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023979 default:
23980 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23981 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023982
Jeff Johnsone7245742012-09-05 17:12:55 -070023983 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023984}/*WDI_HAL_2_WDI_STATUS*/
23985
23986/*Convert WDI request type into HAL request type*/
23987WPT_STATIC WPT_INLINE tHalHostMsgType
23988WDI_2_HAL_REQ_TYPE
23989(
23990 WDI_RequestEnumType wdiReqType
23991)
23992{
Jeff Johnsone7245742012-09-05 17:12:55 -070023993 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023994 the chances of getting inlined*/
23995 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023996 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023997 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023998 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023999 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024000 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024001 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024002 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024003 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024004 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024005 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024006 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024007 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024008 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024009 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024010 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024011 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024012 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024013 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024014 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024015 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024016 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024017 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024018 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024019 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024020 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024021 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024022 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024023 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024024 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024025 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024026 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024027 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024028 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024029 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024030 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024031 return WLAN_HAL_RMV_STAKEY_REQ;
24032 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024033 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024034 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024035 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024036 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024037 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024038 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024039 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024040 case WDI_DEL_BA_REQ:
24041 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024042#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024043 case WDI_TSM_STATS_REQ:
24044 return WLAN_HAL_TSM_STATS_REQ;
24045#endif
24046 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024047 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024048 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024049 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024050 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024051 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024052 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024053 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024054 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024055 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024056 case WDI_ADD_BA_SESSION_REQ:
24057 return WLAN_HAL_ADD_BA_SESSION_REQ;
24058 case WDI_TRIGGER_BA_REQ:
24059 return WLAN_HAL_TRIGGER_BA_REQ;
24060 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024061 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024062 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024063 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024064 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
24065 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
24066 case WDI_SET_MAX_TX_POWER_REQ:
24067 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024068 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
24069 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070024070 case WDI_SET_TX_POWER_REQ:
24071 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024072 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24073 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024074#ifdef FEATURE_WLAN_TDLS
24075 case WDI_TDLS_LINK_ESTABLISH_REQ:
24076 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024077 case WDI_TDLS_CHAN_SWITCH_REQ:
24078 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024079#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024080 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024081 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024082 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024083 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024084 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024085 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024086 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024087 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024088 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024089 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024090 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024091 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024092 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024093 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024094 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024095 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024096 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024097 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024098 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024099 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024100 case WDI_REM_BEACON_FILTER_REQ:
24101 return WLAN_HAL_REM_BCN_FILTER_REQ;
24102 case WDI_SET_RSSI_THRESHOLDS_REQ:
24103 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24104 case WDI_HOST_OFFLOAD_REQ:
24105 return WLAN_HAL_HOST_OFFLOAD_REQ;
24106 case WDI_WOWL_ADD_BC_PTRN_REQ:
24107 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24108 case WDI_WOWL_DEL_BC_PTRN_REQ:
24109 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24110 case WDI_WOWL_ENTER_REQ:
24111 return WLAN_HAL_ENTER_WOWL_REQ;
24112 case WDI_WOWL_EXIT_REQ:
24113 return WLAN_HAL_EXIT_WOWL_REQ;
24114 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24115 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24116 case WDI_NV_DOWNLOAD_REQ:
24117 return WLAN_HAL_DOWNLOAD_NV_REQ;
24118 case WDI_FLUSH_AC_REQ:
24119 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24120 case WDI_BTAMP_EVENT_REQ:
24121 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24122#ifdef WLAN_FEATURE_VOWIFI_11R
24123 case WDI_AGGR_ADD_TS_REQ:
24124 return WLAN_HAL_AGGR_ADD_TS_REQ;
24125#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024126 case WDI_FTM_CMD_REQ:
24127 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024128 case WDI_ADD_STA_SELF_REQ:
24129 return WLAN_HAL_ADD_STA_SELF_REQ;
24130 case WDI_DEL_STA_SELF_REQ:
24131 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024132#ifdef FEATURE_OEM_DATA_SUPPORT
24133 case WDI_START_OEM_DATA_REQ:
24134 return WLAN_HAL_START_OEM_DATA_REQ;
24135#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024136 case WDI_HOST_RESUME_REQ:
24137 return WLAN_HAL_HOST_RESUME_REQ;
24138 case WDI_HOST_SUSPEND_IND:
24139 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024140 case WDI_TRAFFIC_STATS_IND:
24141 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024142#ifdef WLAN_FEATURE_11W
24143 case WDI_EXCLUDE_UNENCRYPTED_IND:
24144 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24145#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024146 case WDI_KEEP_ALIVE_REQ:
24147 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024148#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024149 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24150 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024151#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024152#ifdef FEATURE_WLAN_SCAN_PNO
24153 case WDI_SET_PREF_NETWORK_REQ:
24154 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24155 case WDI_SET_RSSI_FILTER_REQ:
24156 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24157 case WDI_UPDATE_SCAN_PARAMS_REQ:
24158 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24159#endif // FEATURE_WLAN_SCAN_PNO
24160 case WDI_SET_TX_PER_TRACKING_REQ:
24161 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24162#ifdef WLAN_FEATURE_PACKET_FILTERING
24163 case WDI_8023_MULTICAST_LIST_REQ:
24164 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24165 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024166 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024167 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24168 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24169 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24170 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24171#endif // WLAN_FEATURE_PACKET_FILTERING
24172 case WDI_HAL_DUMP_CMD_REQ:
24173 return WLAN_HAL_DUMP_COMMAND_REQ;
24174#ifdef WLAN_FEATURE_GTK_OFFLOAD
24175 case WDI_GTK_OFFLOAD_REQ:
24176 return WLAN_HAL_GTK_OFFLOAD_REQ;
24177 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24178 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24179#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24180
24181 case WDI_INIT_SCAN_CON_REQ:
24182 return WLAN_HAL_INIT_SCAN_CON_REQ;
24183 case WDI_SET_POWER_PARAMS_REQ:
24184 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24185 case WDI_SET_TM_LEVEL_REQ:
24186 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24187 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24188 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024189#ifdef WLAN_FEATURE_11AC
24190 case WDI_UPDATE_VHT_OP_MODE_REQ:
24191 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24192#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024193 case WDI_GET_ROAM_RSSI_REQ:
24194 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024195 case WDI_DHCP_START_IND:
24196 return WLAN_HAL_DHCP_START_IND;
24197 case WDI_DHCP_STOP_IND:
24198 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024199#ifdef FEATURE_WLAN_LPHB
24200 case WDI_LPHB_CFG_REQ:
24201 return WLAN_HAL_LPHB_CFG_REQ;
24202#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024203 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24204 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24205 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24206 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24207
Rajeev79dbe4c2013-10-05 11:03:42 +053024208#ifdef FEATURE_WLAN_BATCH_SCAN
24209 case WDI_SET_BATCH_SCAN_REQ:
24210 return WLAN_HAL_BATCHSCAN_SET_REQ;
24211 case WDI_STOP_BATCH_SCAN_IND:
24212 return WLAN_HAL_BATCHSCAN_STOP_IND;
24213 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24214 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24215#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024216 case WDI_RATE_UPDATE_IND:
24217 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024218 case WDI_START_HT40_OBSS_SCAN_IND:
24219 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24220 case WDI_STOP_HT40_OBSS_SCAN_IND:
24221 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024222 case WDI_UPDATE_CHAN_REQ:
24223 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024224 case WDI_CH_SWITCH_REQ_V1:
24225 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024226 case WDI_GET_BCN_MISS_RATE_REQ:
24227 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024228
24229#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24230 case WDI_LL_STATS_SET_REQ:
24231 return WLAN_HAL_LL_SET_STATS_REQ;
24232 case WDI_LL_STATS_GET_REQ:
24233 return WLAN_HAL_LL_GET_STATS_REQ;
24234 case WDI_LL_STATS_CLEAR_REQ:
24235 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24236#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024237#ifdef WLAN_FEATURE_EXTSCAN
24238 case WDI_EXTSCAN_START_REQ:
24239 return WLAN_HAL_EXT_SCAN_START_REQ;
24240 case WDI_EXTSCAN_STOP_REQ:
24241 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24242 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24243 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24244 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24245 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24246 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24247 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24248 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24249 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024250 case WDI_EXTSCAN_SET_SSID_HOTLIST_REQ:
24251 return WLAN_HAL_SSID_HOTLIST_SET_REQ;
24252 case WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ:
24253 return WLAN_HAL_SSID_HOTLIST_RESET_REQ;
24254
Dino Mycle41bdc942014-06-10 11:30:24 +053024255#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024256 case WDI_SPOOF_MAC_ADDR_REQ:
24257 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024258 case WDI_GET_FW_STATS_REQ:
24259 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024260 case WDI_ENCRYPT_MSG_REQ:
24261 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024262 case WDI_FW_LOGGING_INIT_REQ:
24263 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024264 case WDI_GET_FRAME_LOG_REQ:
24265 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024266 case WDI_NAN_REQUEST:
24267 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024268 case WDI_SET_RTS_CTS_HTVHT_IND:
24269 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024270 case WDI_MON_START_REQ:
24271 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24272 case WDI_MON_STOP_REQ:
24273 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024274 case WDI_FW_LOGGING_DXE_DONE_IND:
24275 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024276 case WDI_FATAL_EVENT_LOGGING_REQ:
24277 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053024278 case WDI_SEND_FREQ_RANGE_CONTROL_IND:
24279 return WLAN_HAL_SEND_FREQ_RANGE_CONTROL_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024280 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024281 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024282 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024283
Jeff Johnson295189b2012-06-20 16:38:30 -070024284}/*WDI_2_HAL_REQ_TYPE*/
24285
24286/*Convert WDI response type into HAL response type*/
24287WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24288HAL_2_WDI_RSP_TYPE
24289(
24290 tHalHostMsgType halMsg
24291)
24292{
Jeff Johnsone7245742012-09-05 17:12:55 -070024293 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024294 the chances of getting inlined*/
24295 switch( halMsg )
24296 {
24297 case WLAN_HAL_START_RSP:
24298 return WDI_START_RESP;
24299 case WLAN_HAL_STOP_RSP:
24300 return WDI_STOP_RESP;
24301 case WLAN_HAL_INIT_SCAN_RSP:
24302 return WDI_INIT_SCAN_RESP;
24303 case WLAN_HAL_START_SCAN_RSP:
24304 return WDI_START_SCAN_RESP;
24305 case WLAN_HAL_END_SCAN_RSP:
24306 return WDI_END_SCAN_RESP;
24307 case WLAN_HAL_FINISH_SCAN_RSP:
24308 return WDI_FINISH_SCAN_RESP;
24309 case WLAN_HAL_CONFIG_STA_RSP:
24310 return WDI_CONFIG_STA_RESP;
24311 case WLAN_HAL_DELETE_STA_RSP:
24312 return WDI_DEL_STA_RESP;
24313 case WLAN_HAL_CONFIG_BSS_RSP:
24314 return WDI_CONFIG_BSS_RESP;
24315 case WLAN_HAL_DELETE_BSS_RSP:
24316 return WDI_DEL_BSS_RESP;
24317 case WLAN_HAL_JOIN_RSP:
24318 return WDI_JOIN_RESP;
24319 case WLAN_HAL_POST_ASSOC_RSP:
24320 return WDI_POST_ASSOC_RESP;
24321 case WLAN_HAL_SET_BSSKEY_RSP:
24322 return WDI_SET_BSS_KEY_RESP;
24323 case WLAN_HAL_SET_STAKEY_RSP:
24324 return WDI_SET_STA_KEY_RESP;
24325 case WLAN_HAL_RMV_BSSKEY_RSP:
24326 return WDI_RMV_BSS_KEY_RESP;
24327 case WLAN_HAL_RMV_STAKEY_RSP:
24328 return WDI_RMV_STA_KEY_RESP;
24329 case WLAN_HAL_SET_BCASTKEY_RSP:
24330 return WDI_SET_STA_BCAST_KEY_RESP;
24331 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24332 // return WDI_RMV_STA_BCAST_KEY_RESP;
24333 case WLAN_HAL_ADD_TS_RSP:
24334 return WDI_ADD_TS_RESP;
24335 case WLAN_HAL_DEL_TS_RSP:
24336 return WDI_DEL_TS_RESP;
24337 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24338 return WDI_UPD_EDCA_PRMS_RESP;
24339 case WLAN_HAL_ADD_BA_RSP:
24340 return WDI_ADD_BA_RESP;
24341 case WLAN_HAL_DEL_BA_RSP:
24342 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024343#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024344 case WLAN_HAL_TSM_STATS_RSP:
24345 return WDI_TSM_STATS_RESP;
24346#endif
24347 case WLAN_HAL_CH_SWITCH_RSP:
24348 return WDI_CH_SWITCH_RESP;
24349 case WLAN_HAL_SET_LINK_ST_RSP:
24350 return WDI_SET_LINK_ST_RESP;
24351 case WLAN_HAL_GET_STATS_RSP:
24352 return WDI_GET_STATS_RESP;
24353 case WLAN_HAL_UPDATE_CFG_RSP:
24354 return WDI_UPDATE_CFG_RESP;
24355 case WLAN_HAL_ADD_BA_SESSION_RSP:
24356 return WDI_ADD_BA_SESSION_RESP;
24357 case WLAN_HAL_TRIGGER_BA_RSP:
24358 return WDI_TRIGGER_BA_RESP;
24359 case WLAN_HAL_UPDATE_BEACON_RSP:
24360 return WDI_UPD_BCON_PRMS_RESP;
24361 case WLAN_HAL_SEND_BEACON_RSP:
24362 return WDI_SND_BCON_RESP;
24363 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24364 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24365 /*Indications*/
24366 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24367 return WDI_HAL_RSSI_NOTIFICATION_IND;
24368 case WLAN_HAL_MISSED_BEACON_IND:
24369 return WDI_HAL_MISSED_BEACON_IND;
24370 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24371 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24372 case WLAN_HAL_MIC_FAILURE_IND:
24373 return WDI_HAL_MIC_FAILURE_IND;
24374 case WLAN_HAL_FATAL_ERROR_IND:
24375 return WDI_HAL_FATAL_ERROR_IND;
24376 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24377 return WDI_HAL_DEL_STA_IND;
24378 case WLAN_HAL_COEX_IND:
24379 return WDI_HAL_COEX_IND;
24380 case WLAN_HAL_OTA_TX_COMPL_IND:
24381 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024382 case WLAN_HAL_P2P_NOA_ATTR_IND:
24383 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024384 case WLAN_HAL_P2P_NOA_START_IND:
24385 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024386 case WLAN_HAL_DEL_BA_IND:
24387 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024388 case WLAN_HAL_TX_PER_HIT_IND:
24389 return WDI_HAL_TX_PER_HIT_IND;
24390 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24391 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024392 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24393 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024394 case WLAN_HAL_SET_TX_POWER_RSP:
24395 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024396 case WLAN_HAL_SET_P2P_GONOA_RSP:
24397 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024398#ifdef FEATURE_WLAN_TDLS
24399 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24400 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024401 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24402 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024403 case WLAN_HAL_TDLS_IND:
24404 return WDI_HAL_TDLS_IND;
24405#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024406 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024407 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024408 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024409 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024410 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024411 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024413 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024414 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024415 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024416 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024417 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024418 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024419 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024420 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024421 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024422 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024423 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024424 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24425 return WDI_SET_BEACON_FILTER_RESP;
24426 case WLAN_HAL_REM_BCN_FILTER_RSP:
24427 return WDI_REM_BEACON_FILTER_RESP;
24428 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24429 return WDI_SET_RSSI_THRESHOLDS_RESP;
24430 case WLAN_HAL_HOST_OFFLOAD_RSP:
24431 return WDI_HOST_OFFLOAD_RESP;
24432 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24433 return WDI_WOWL_ADD_BC_PTRN_RESP;
24434 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24435 return WDI_WOWL_DEL_BC_PTRN_RESP;
24436 case WLAN_HAL_ENTER_WOWL_RSP:
24437 return WDI_WOWL_ENTER_RESP;
24438 case WLAN_HAL_EXIT_WOWL_RSP:
24439 return WDI_WOWL_EXIT_RESP;
24440 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24441 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24442 case WLAN_HAL_DOWNLOAD_NV_RSP:
24443 return WDI_NV_DOWNLOAD_RESP;
24444 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24445 return WDI_FLUSH_AC_RESP;
24446 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24447 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024448 case WLAN_HAL_PROCESS_PTT_RSP:
24449 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024450 case WLAN_HAL_ADD_STA_SELF_RSP:
24451 return WDI_ADD_STA_SELF_RESP;
24452case WLAN_HAL_DEL_STA_SELF_RSP:
24453 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024454#ifdef FEATURE_OEM_DATA_SUPPORT
24455 case WLAN_HAL_START_OEM_DATA_RSP:
24456 return WDI_START_OEM_DATA_RESP;
24457#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024458 case WLAN_HAL_HOST_RESUME_RSP:
24459 return WDI_HOST_RESUME_RESP;
24460 case WLAN_HAL_KEEP_ALIVE_RSP:
24461 return WDI_KEEP_ALIVE_RESP;
24462#ifdef FEATURE_WLAN_SCAN_PNO
24463 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24464 return WDI_SET_PREF_NETWORK_RESP;
24465 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024466 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024467 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24468 return WDI_UPDATE_SCAN_PARAMS_RESP;
24469 case WLAN_HAL_PREF_NETW_FOUND_IND:
24470 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24471#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024472#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024473 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24474 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024475#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024476 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24477 return WDI_SET_TX_PER_TRACKING_RESP;
24478#ifdef WLAN_FEATURE_PACKET_FILTERING
24479 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24480 return WDI_8023_MULTICAST_LIST_RESP;
24481 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24482 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24483 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24484 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24485 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24486 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24487#endif // WLAN_FEATURE_PACKET_FILTERING
24488
24489 case WLAN_HAL_DUMP_COMMAND_RSP:
24490 return WDI_HAL_DUMP_CMD_RESP;
24491 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24492 return WDI_SET_POWER_PARAMS_RESP;
24493#ifdef WLAN_FEATURE_VOWIFI_11R
24494 case WLAN_HAL_AGGR_ADD_TS_RSP:
24495 return WDI_AGGR_ADD_TS_RESP;
24496#endif
24497
24498#ifdef WLAN_FEATURE_GTK_OFFLOAD
24499 case WLAN_HAL_GTK_OFFLOAD_RSP:
24500 return WDI_GTK_OFFLOAD_RESP;
24501 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24502 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24503#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24504#ifdef WLAN_WAKEUP_EVENTS
24505 case WLAN_HAL_WAKE_REASON_IND:
24506 return WDI_HAL_WAKE_REASON_IND;
24507#endif // WLAN_WAKEUP_EVENTS
24508
24509 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24510 return WDI_SET_TM_LEVEL_RESP;
24511 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24512 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024513#ifdef WLAN_FEATURE_11AC
24514 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24515 return WDI_UPDATE_VHT_OP_MODE_RESP;
24516#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024517#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024518 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24519 return WDI_GET_ROAM_RSSI_RESP;
24520#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024521
Leo Chang9056f462013-08-01 19:21:11 -070024522#ifdef FEATURE_WLAN_LPHB
24523 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024524 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024525 case WLAN_HAL_LPHB_CFG_RSP:
24526 return WDI_LPHB_CFG_RESP;
24527#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024528
24529 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24530 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024531 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24532 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024533
Rajeev79dbe4c2013-10-05 11:03:42 +053024534#ifdef FEATURE_WLAN_BATCH_SCAN
24535 case WLAN_HAL_BATCHSCAN_SET_RSP:
24536 return WDI_SET_BATCH_SCAN_RESP;
24537 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24538 return WDI_BATCHSCAN_RESULT_IND;
24539#endif // FEATURE_WLAN_BATCH_SCAN
24540
Leo Chang0b0e45a2013-12-15 15:18:55 -080024541#ifdef FEATURE_WLAN_CH_AVOID
24542 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24543 return WDI_HAL_CH_AVOID_IND;
24544#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024545 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24546 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024547 case WLAN_HAL_PRINT_REG_INFO_IND:
24548 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024549 case WLAN_HAL_CH_SWITCH_V1_RSP:
24550 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024551 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24552 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024553#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24554 case WLAN_HAL_LL_SET_STATS_RSP:
24555 return WDI_LL_STATS_SET_RSP;
24556 case WLAN_HAL_LL_GET_STATS_RSP:
24557 return WDI_LL_STATS_GET_RSP;
24558 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24559 return WDI_LL_STATS_CLEAR_RSP;
24560 case WLAN_HAL_LL_NOTIFY_STATS:
24561 return WDI_HAL_LL_STATS_RESULTS_IND;
24562#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024563#ifdef WLAN_FEATURE_EXTSCAN
24564 case WLAN_HAL_EXT_SCAN_START_RSP:
24565 return WDI_EXTSCAN_START_RSP;
24566 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24567 return WDI_EXTSCAN_STOP_RSP;
24568 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24569 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24570 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24571 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24572 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24573 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24574 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24575 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024576 case WLAN_HAL_SSID_HOTLIST_SET_RSP:
24577 return WDI_EXTSCAN_SET_HOTLIST_SSID_RSP;
24578 case WLAN_HAL_SSID_HOTLIST_RESET_RSP:
24579 return WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP;
Dino Mycle41bdc942014-06-10 11:30:24 +053024580 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24581 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24582 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24583 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24584 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24585 return WDI_HAL_EXTSCAN_RESULT_IND;
24586 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24587 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024588 case WLAN_HAL_SSID_HOTLIST_RESULT_IND:
24589 return WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND;
24590
Dino Mycle41bdc942014-06-10 11:30:24 +053024591#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024592 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24593 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024594 case WLAN_HAL_FW_STATS_RSP:
24595 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024596 case WLAN_HAL_ENCRYPT_DATA_RSP:
24597 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024598 case WLAN_HAL_FW_LOGGING_INIT_RSP:
24599 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024600 case WLAN_HAL_GET_FRAME_LOG_RSP:
24601 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024602 case WLAN_HAL_NAN_RSP:
24603 return WDI_NAN_RESPONSE;
24604 case WLAN_HAL_NAN_EVT:
24605 return WDI_HAL_NAN_EVENT;
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053024606 case WLAN_HAL_LOST_LINK_PARAMETERS_IND:
24607 return WDI_HAL_LOST_LINK_PARAMS_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024608 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
24609 return WDI_MON_START_RSP;
24610 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
24611 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024612 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
24613 return WDI_FATAL_EVENT_LOGGING_RSP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024614 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024615 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024616 }
24617
24618}/*HAL_2_WDI_RSP_TYPE*/
24619
24620
24621/*Convert WDI driver type into HAL driver type*/
24622WPT_STATIC WPT_INLINE tDriverType
24623WDI_2_HAL_DRV_TYPE
24624(
24625 WDI_DriverType wdiDriverType
24626)
24627{
Jeff Johnsone7245742012-09-05 17:12:55 -070024628 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024629 the chances of getting inlined*/
24630 switch( wdiDriverType )
24631 {
24632 case WDI_DRIVER_TYPE_PRODUCTION:
24633 return eDRIVER_TYPE_PRODUCTION;
24634 case WDI_DRIVER_TYPE_MFG:
24635 return eDRIVER_TYPE_MFG;
24636 case WDI_DRIVER_TYPE_DVT:
24637 return eDRIVER_TYPE_DVT;
24638 }
24639
Jeff Johnsone7245742012-09-05 17:12:55 -070024640 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024641}/*WDI_2_HAL_DRV_TYPE*/
24642
24643
24644/*Convert WDI stop reason into HAL stop reason*/
24645WPT_STATIC WPT_INLINE tHalStopType
24646WDI_2_HAL_STOP_REASON
24647(
24648 WDI_StopType wdiDriverType
24649)
24650{
Jeff Johnsone7245742012-09-05 17:12:55 -070024651 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024652 the chances of getting inlined*/
24653 switch( wdiDriverType )
24654 {
24655 case WDI_STOP_TYPE_SYS_RESET:
24656 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024657 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24658 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024659 case WDI_STOP_TYPE_RF_KILL:
24660 return HAL_STOP_TYPE_RF_KILL;
24661 }
24662
Jeff Johnsone7245742012-09-05 17:12:55 -070024663 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024664}/*WDI_2_HAL_STOP_REASON*/
24665
24666
24667/*Convert WDI scan mode type into HAL scan mode type*/
24668WPT_STATIC WPT_INLINE eHalSysMode
24669WDI_2_HAL_SCAN_MODE
24670(
24671 WDI_ScanMode wdiScanMode
24672)
24673{
Jeff Johnsone7245742012-09-05 17:12:55 -070024674 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024675 the chances of getting inlined*/
24676 switch( wdiScanMode )
24677 {
24678 case WDI_SCAN_MODE_NORMAL:
24679 return eHAL_SYS_MODE_NORMAL;
24680 case WDI_SCAN_MODE_LEARN:
24681 return eHAL_SYS_MODE_LEARN;
24682 case WDI_SCAN_MODE_SCAN:
24683 return eHAL_SYS_MODE_SCAN;
24684 case WDI_SCAN_MODE_PROMISC:
24685 return eHAL_SYS_MODE_PROMISC;
24686 case WDI_SCAN_MODE_SUSPEND_LINK:
24687 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024688 case WDI_SCAN_MODE_ROAM_SCAN:
24689 return eHAL_SYS_MODE_ROAM_SCAN;
24690 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24691 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024692 }
24693
Jeff Johnsone7245742012-09-05 17:12:55 -070024694 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024695}/*WDI_2_HAL_SCAN_MODE*/
24696
24697/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024698WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024699WDI_2_HAL_SEC_CH_OFFSET
24700(
24701 WDI_HTSecondaryChannelOffset wdiSecChOffset
24702)
24703{
Jeff Johnsone7245742012-09-05 17:12:55 -070024704 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024705 the chances of getting inlined*/
24706 switch( wdiSecChOffset )
24707 {
24708 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024709 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024710 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024711 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024712 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024713 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24714#ifdef WLAN_FEATURE_11AC
24715 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24716 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24717 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24718 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24719 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24720 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24721 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24722 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24723 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24724 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24725 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24726 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24727 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24728 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24729#endif
24730 default:
24731 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024732 }
24733
Jeff Johnsone7245742012-09-05 17:12:55 -070024734 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024735}/*WDI_2_HAL_SEC_CH_OFFSET*/
24736
24737/*Convert WDI BSS type into HAL BSS type*/
24738WPT_STATIC WPT_INLINE tSirBssType
24739WDI_2_HAL_BSS_TYPE
24740(
24741 WDI_BssType wdiBSSType
24742)
24743{
Jeff Johnsone7245742012-09-05 17:12:55 -070024744 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024745 the chances of getting inlined*/
24746 switch( wdiBSSType )
24747 {
24748 case WDI_INFRASTRUCTURE_MODE:
24749 return eSIR_INFRASTRUCTURE_MODE;
24750 case WDI_INFRA_AP_MODE:
24751 return eSIR_INFRA_AP_MODE;
24752 case WDI_IBSS_MODE:
24753 return eSIR_IBSS_MODE;
24754 case WDI_BTAMP_STA_MODE:
24755 return eSIR_BTAMP_STA_MODE;
24756 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024757 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024758 case WDI_BSS_AUTO_MODE:
24759 return eSIR_AUTO_MODE;
24760 }
24761
Jeff Johnsone7245742012-09-05 17:12:55 -070024762 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024763}/*WDI_2_HAL_BSS_TYPE*/
24764
24765/*Convert WDI NW type into HAL NW type*/
24766WPT_STATIC WPT_INLINE tSirNwType
24767WDI_2_HAL_NW_TYPE
24768(
24769 WDI_NwType wdiNWType
24770)
24771{
Jeff Johnsone7245742012-09-05 17:12:55 -070024772 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024773 the chances of getting inlined*/
24774 switch( wdiNWType )
24775 {
24776 case WDI_11A_NW_TYPE:
24777 return eSIR_11A_NW_TYPE;
24778 case WDI_11B_NW_TYPE:
24779 return eSIR_11B_NW_TYPE;
24780 case WDI_11G_NW_TYPE:
24781 return eSIR_11G_NW_TYPE;
24782 case WDI_11N_NW_TYPE:
24783 return eSIR_11N_NW_TYPE;
24784 }
24785
Jeff Johnsone7245742012-09-05 17:12:55 -070024786 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024787}/*WDI_2_HAL_NW_TYPE*/
24788
24789/*Convert WDI chanel bonding type into HAL cb type*/
24790WPT_STATIC WPT_INLINE ePhyChanBondState
24791WDI_2_HAL_CB_STATE
24792(
24793 WDI_PhyChanBondState wdiCbState
24794)
24795{
Jeff Johnsone7245742012-09-05 17:12:55 -070024796 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024797 the chances of getting inlined*/
24798 switch ( wdiCbState )
24799 {
24800 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24801 return PHY_SINGLE_CHANNEL_CENTERED;
24802 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24803 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24804 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24805 return PHY_DOUBLE_CHANNEL_CENTERED;
24806 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24807 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024808#ifdef WLAN_FEATURE_11AC
24809 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24810 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24811 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24812 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24813 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24814 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24815 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24816 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24817 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24818 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24819 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24820 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24821 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24822 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24823#endif
24824 case WDI_MAX_CB_STATE:
24825 default:
24826 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024827 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024828
Jeff Johnson295189b2012-06-20 16:38:30 -070024829 return PHY_CHANNEL_BONDING_STATE_MAX;
24830}/*WDI_2_HAL_CB_STATE*/
24831
24832/*Convert WDI chanel bonding type into HAL cb type*/
24833WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24834WDI_2_HAL_HT_OPER_MODE
24835(
24836 WDI_HTOperatingMode wdiHTOperMode
24837)
24838{
Jeff Johnsone7245742012-09-05 17:12:55 -070024839 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024840 the chances of getting inlined*/
24841 switch ( wdiHTOperMode )
24842 {
24843 case WDI_HT_OP_MODE_PURE:
24844 return eSIR_HT_OP_MODE_PURE;
24845 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24846 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24847 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24848 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24849 case WDI_HT_OP_MODE_MIXED:
24850 return eSIR_HT_OP_MODE_MIXED;
24851 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024852
Jeff Johnson295189b2012-06-20 16:38:30 -070024853 return eSIR_HT_OP_MODE_MAX;
24854}/*WDI_2_HAL_HT_OPER_MODE*/
24855
24856/*Convert WDI mimo PS type into HAL mimo PS type*/
24857WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24858WDI_2_HAL_MIMO_PS
24859(
24860 WDI_HTMIMOPowerSaveState wdiHTOperMode
24861)
24862{
Jeff Johnsone7245742012-09-05 17:12:55 -070024863 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024864 the chances of getting inlined*/
24865 switch ( wdiHTOperMode )
24866 {
24867 case WDI_HT_MIMO_PS_STATIC:
24868 return eSIR_HT_MIMO_PS_STATIC;
24869 case WDI_HT_MIMO_PS_DYNAMIC:
24870 return eSIR_HT_MIMO_PS_DYNAMIC;
24871 case WDI_HT_MIMO_PS_NA:
24872 return eSIR_HT_MIMO_PS_NA;
24873 case WDI_HT_MIMO_PS_NO_LIMIT:
24874 return eSIR_HT_MIMO_PS_NO_LIMIT;
24875 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024876
Jeff Johnson295189b2012-06-20 16:38:30 -070024877 return eSIR_HT_MIMO_PS_MAX;
24878}/*WDI_2_HAL_MIMO_PS*/
24879
24880/*Convert WDI ENC type into HAL ENC type*/
24881WPT_STATIC WPT_INLINE tAniEdType
24882WDI_2_HAL_ENC_TYPE
24883(
24884 WDI_EncryptType wdiEncType
24885)
24886{
Jeff Johnsone7245742012-09-05 17:12:55 -070024887 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024888 the chances of getting inlined*/
24889 switch ( wdiEncType )
24890 {
24891 case WDI_ENCR_NONE:
24892 return eSIR_ED_NONE;
24893
24894 case WDI_ENCR_WEP40:
24895 return eSIR_ED_WEP40;
24896
24897 case WDI_ENCR_WEP104:
24898 return eSIR_ED_WEP104;
24899
24900 case WDI_ENCR_TKIP:
24901 return eSIR_ED_TKIP;
24902
24903 case WDI_ENCR_CCMP:
24904 return eSIR_ED_CCMP;
24905
24906 case WDI_ENCR_AES_128_CMAC:
24907 return eSIR_ED_AES_128_CMAC;
24908#if defined(FEATURE_WLAN_WAPI)
24909 case WDI_ENCR_WPI:
24910 return eSIR_ED_WPI;
24911#endif
24912 default:
24913 return eSIR_ED_NOT_IMPLEMENTED;
24914 }
24915
24916}/*WDI_2_HAL_ENC_TYPE*/
24917
24918/*Convert WDI WEP type into HAL WEP type*/
24919WPT_STATIC WPT_INLINE tAniWepType
24920WDI_2_HAL_WEP_TYPE
24921(
24922 WDI_WepType wdiWEPType
24923)
24924{
Jeff Johnsone7245742012-09-05 17:12:55 -070024925 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024926 the chances of getting inlined*/
24927 switch ( wdiWEPType )
24928 {
24929 case WDI_WEP_STATIC:
24930 return eSIR_WEP_STATIC;
24931
24932 case WDI_WEP_DYNAMIC:
24933 return eSIR_WEP_DYNAMIC;
24934 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024935
Jeff Johnson295189b2012-06-20 16:38:30 -070024936 return eSIR_WEP_MAX;
24937}/*WDI_2_HAL_WEP_TYPE*/
24938
24939WPT_STATIC WPT_INLINE tSirLinkState
24940WDI_2_HAL_LINK_STATE
24941(
24942 WDI_LinkStateType wdiLinkState
24943)
24944{
Jeff Johnsone7245742012-09-05 17:12:55 -070024945 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024946 the chances of getting inlined*/
24947 switch ( wdiLinkState )
24948 {
24949 case WDI_LINK_IDLE_STATE:
24950 return eSIR_LINK_IDLE_STATE;
24951
24952 case WDI_LINK_PREASSOC_STATE:
24953 return eSIR_LINK_PREASSOC_STATE;
24954
24955 case WDI_LINK_POSTASSOC_STATE:
24956 return eSIR_LINK_POSTASSOC_STATE;
24957
24958 case WDI_LINK_AP_STATE:
24959 return eSIR_LINK_AP_STATE;
24960
24961 case WDI_LINK_IBSS_STATE:
24962 return eSIR_LINK_IBSS_STATE;
24963
24964 case WDI_LINK_BTAMP_PREASSOC_STATE:
24965 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24966
24967 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24968 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24969
24970 case WDI_LINK_BTAMP_AP_STATE:
24971 return eSIR_LINK_BTAMP_AP_STATE;
24972
24973 case WDI_LINK_BTAMP_STA_STATE:
24974 return eSIR_LINK_BTAMP_STA_STATE;
24975
24976 case WDI_LINK_LEARN_STATE:
24977 return eSIR_LINK_LEARN_STATE;
24978
24979 case WDI_LINK_SCAN_STATE:
24980 return eSIR_LINK_SCAN_STATE;
24981
24982 case WDI_LINK_FINISH_SCAN_STATE:
24983 return eSIR_LINK_FINISH_SCAN_STATE;
24984
24985 case WDI_LINK_INIT_CAL_STATE:
24986 return eSIR_LINK_INIT_CAL_STATE;
24987
24988 case WDI_LINK_FINISH_CAL_STATE:
24989 return eSIR_LINK_FINISH_CAL_STATE;
24990
Jeff Johnson295189b2012-06-20 16:38:30 -070024991 case WDI_LINK_LISTEN_STATE:
24992 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024993
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024994 case WDI_LINK_SEND_ACTION_STATE:
24995 return eSIR_LINK_SEND_ACTION_STATE;
24996
Jeff Johnson295189b2012-06-20 16:38:30 -070024997 default:
24998 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024999 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025000}
25001
Jeff Johnsone7245742012-09-05 17:12:55 -070025002/*Translate a STA Context from WDI into HAL*/
25003WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070025004void
25005WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070025006(
Jeff Johnson295189b2012-06-20 16:38:30 -070025007 tConfigStaParams* phalConfigSta,
25008 WDI_ConfigStaReqInfoType* pwdiConfigSta
25009)
25010{
25011 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025012#ifdef WLAN_FEATURE_11AC
25013 /* Get the Version 1 Handler */
25014 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
25015 if (WDI_getFwWlanFeatCaps(DOT11AC))
25016 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025017 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070025018 }
25019#endif
25020 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025021 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025022
Jeff Johnsone7245742012-09-05 17:12:55 -070025023 wpalMemoryCopy(phalConfigSta->bssId,
25024 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
25025
25026 wpalMemoryCopy(phalConfigSta->staMac,
25027 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070025028
25029 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
25030 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
25031 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
25032 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
25033 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
25034 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
25035 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
25036 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
25037 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
25038 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
25039 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
25040 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
25041 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
25042 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
25043 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
25044 phalConfigSta->action = pwdiConfigSta->wdiAction;
25045 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
25046 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
25047 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
25048 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
25049 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
25050 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
25051 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025052
Jeff Johnson295189b2012-06-20 16:38:30 -070025053 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
25054
Jeff Johnsone7245742012-09-05 17:12:55 -070025055 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070025056 pwdiConfigSta->wdiSupportedRates.opRateMode;
25057 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
25058 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025059 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025060 pwdiConfigSta->wdiSupportedRates.llbRates[i];
25061 }
25062 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
25063 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025064 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025065 pwdiConfigSta->wdiSupportedRates.llaRates[i];
25066 }
25067 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
25068 {
25069 phalConfigSta->supportedRates.aniLegacyRates[i] =
25070 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
25071 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025072 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070025073 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
25074 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
25075 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025076 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025077 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
25078 }
25079 phalConfigSta->supportedRates.rxHighestDataRate =
25080 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25081
Jeff Johnsone7245742012-09-05 17:12:55 -070025082#ifdef WLAN_FEATURE_11AC
25083 if(phalConfigSta_V1 != NULL)
25084 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025085 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25086 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25087 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25088 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025089 }
25090#endif
25091
Jeff Johnson295189b2012-06-20 16:38:30 -070025092 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025093
Jeff Johnsone7245742012-09-05 17:12:55 -070025094#ifdef WLAN_FEATURE_11AC
25095 if(phalConfigSta_V1 != NULL)
25096 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025097 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25098 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025099 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025100 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025101 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25102 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25103
Jeff Johnsone7245742012-09-05 17:12:55 -070025104 }
25105#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025106}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025107
25108/*Translate a Rate set info from WDI into HAL*/
25109WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025110WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025111(
Jeff Johnson295189b2012-06-20 16:38:30 -070025112 tSirMacRateSet* pHalRateSet,
25113 WDI_RateSet* pwdiRateSet
25114)
25115{
Jeff Johnsone7245742012-09-05 17:12:55 -070025116 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25118
25119 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25120 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25121
25122 for ( i = 0; i < pHalRateSet->numRates; i++ )
25123 {
25124 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25125 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025126
Jeff Johnson295189b2012-06-20 16:38:30 -070025127}/*WDI_CopyWDIRateSetToHALRateSet*/
25128
25129
25130/*Translate an EDCA Parameter Record from WDI into HAL*/
25131WPT_STATIC WPT_INLINE void
25132WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025133(
Jeff Johnson295189b2012-06-20 16:38:30 -070025134 tSirMacEdcaParamRecord* phalEdcaParam,
25135 WDI_EdcaParamRecord* pWDIEdcaParam
25136)
25137{
Jeff Johnsone7245742012-09-05 17:12:55 -070025138 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025139 the chances of getting inlined*/
25140
25141 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25142 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25143 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25144 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25145
25146 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25147 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25148 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25149}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25150
25151
25152/*Copy a management frame header from WDI fmt into HAL fmt*/
25153WPT_STATIC WPT_INLINE void
25154WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25155(
25156 tSirMacMgmtHdr* pmacMgmtHdr,
25157 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25158)
25159{
25160 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25161 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25162 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25163 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25164 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25165 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25166 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25167 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25168 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25169 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25170 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25171
25172 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25173 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25174
Jeff Johnsone7245742012-09-05 17:12:55 -070025175 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025176 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025177 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025178 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025179 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025180 pwdiMacMgmtHdr->bssId, 6);
25181
25182 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25183 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25184 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25185
25186}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25187
25188
25189/*Copy config bss parameters from WDI fmt into HAL fmt*/
25190WPT_STATIC WPT_INLINE void
25191WDI_CopyWDIConfigBSSToHALConfigBSS
25192(
25193 tConfigBssParams* phalConfigBSS,
25194 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25195)
25196{
25197
25198 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025199#ifdef WLAN_FEATURE_11AC
25200 /* Get the Version 1 Handler */
25201 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25202 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025203 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025204#endif
25205
Jeff Johnson295189b2012-06-20 16:38:30 -070025206 wpalMemoryCopy( phalConfigBSS->bssId,
25207 pwdiConfigBSS->macBSSID,
25208 WDI_MAC_ADDR_LEN);
25209
25210#ifdef HAL_SELF_STA_PER_BSS
25211 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25212 pwdiConfigBSS->macSelfAddr,
25213 WDI_MAC_ADDR_LEN);
25214#endif
25215
25216 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25217
25218 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25219 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25220
Jeff Johnsone7245742012-09-05 17:12:55 -070025221 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025222 pwdiConfigBSS->ucShortSlotTimeSupported;
25223 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25224 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25225 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25226 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25227 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025228 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025229 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25230 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25231 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25232 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25233 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25234 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25235 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25236 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25237 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25238 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25239 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25240
Jeff Johnsone7245742012-09-05 17:12:55 -070025241 phalConfigBSS->htOperMode =
25242 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025243
25244 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25245 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25246 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25247 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25248
25249#ifdef WLAN_FEATURE_VOWIFI
25250 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25251#endif
25252
25253 /*! Used 32 as magic number because that is how the ssid is declared inside the
25254 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025255 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025256 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25257 pwdiConfigBSS->wdiSSID.ucLength : 32;
25258 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025259 pwdiConfigBSS->wdiSSID.sSSID,
25260 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025261
25262 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25263 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025264
Jeff Johnson295189b2012-06-20 16:38:30 -070025265 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25266 &pwdiConfigBSS->wdiRateSet);
25267
25268 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25269
25270 if(phalConfigBSS->edcaParamsValid)
25271 {
25272 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25273 &pwdiConfigBSS->wdiBEEDCAParams);
25274 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25275 &pwdiConfigBSS->wdiBKEDCAParams);
25276 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25277 &pwdiConfigBSS->wdiVIEDCAParams);
25278 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25279 &pwdiConfigBSS->wdiVOEDCAParams);
25280 }
25281
Jeff Johnsone7245742012-09-05 17:12:55 -070025282 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025283
25284 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25285
25286#ifdef WLAN_FEATURE_VOWIFI_11R
25287
Jeff Johnsone7245742012-09-05 17:12:55 -070025288 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025289 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025290
Jeff Johnson295189b2012-06-20 16:38:30 -070025291 if( phalConfigBSS->extSetStaKeyParamValid )
25292 {
25293 /*-----------------------------------------------------------------------
25294 Copy the STA Key parameters into the HAL message
25295 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025296 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025297 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25298
Jeff Johnsone7245742012-09-05 17:12:55 -070025299 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025300 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25301
25302 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25303
25304 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25305
25306 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25307
Jeff Johnson295189b2012-06-20 16:38:30 -070025308 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25309 keyIndex++)
25310 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025311 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025312 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25313 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25314 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25315 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25316 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25317 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025318 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025319 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025320 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025321 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025322 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025323 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25324 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025325 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025326 WDI_MAX_KEY_LENGTH);
25327 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025328 }
25329 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25330 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025331 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025332 sizeof(phalConfigBSS->extSetStaKeyParam) );
25333 }
25334
25335#endif /*WLAN_FEATURE_VOWIFI_11R*/
25336
Jeff Johnsone7245742012-09-05 17:12:55 -070025337#ifdef WLAN_FEATURE_11AC
25338 if(phalConfigBSS_V1 != NULL)
25339 {
25340 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25341 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25342 }
25343#endif
25344
Jeff Johnson295189b2012-06-20 16:38:30 -070025345}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25346
25347
Jeff Johnsone7245742012-09-05 17:12:55 -070025348/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025349 pointed to by user data */
25350WPT_STATIC WPT_INLINE void
25351WDI_ExtractRequestCBFromEvent
25352(
25353 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025354 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025355 void** ppUserData
25356)
25357{
25358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25359 switch ( pEvent->wdiRequest )
25360 {
25361 case WDI_START_REQ:
25362 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25363 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25364 break;
25365 case WDI_STOP_REQ:
25366 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25367 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25368 break;
25369 case WDI_INIT_SCAN_REQ:
25370 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25371 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25372 break;
25373 case WDI_START_SCAN_REQ:
25374 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25375 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25376 break;
25377 case WDI_END_SCAN_REQ:
25378 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25379 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25380 break;
25381 case WDI_FINISH_SCAN_REQ:
25382 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25383 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25384 break;
25385 case WDI_JOIN_REQ:
25386 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25387 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25388 break;
25389 case WDI_CONFIG_BSS_REQ:
25390 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25391 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25392 break;
25393 case WDI_DEL_BSS_REQ:
25394 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25395 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25396 break;
25397 case WDI_POST_ASSOC_REQ:
25398 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25399 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25400 break;
25401 case WDI_DEL_STA_REQ:
25402 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25403 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25404 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053025405
25406 case WDI_ADD_STA_SELF_REQ:
25407 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25408 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25409 break;
25410
Jeff Johnson295189b2012-06-20 16:38:30 -070025411 case WDI_DEL_STA_SELF_REQ:
25412 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25413 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25414 break;
25415
25416 case WDI_SET_BSS_KEY_REQ:
25417 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25418 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25419 break;
25420 case WDI_RMV_BSS_KEY_REQ:
25421 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25422 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25423 break;
25424 case WDI_SET_STA_KEY_REQ:
25425 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25426 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25427 break;
25428 case WDI_RMV_STA_KEY_REQ:
25429 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25430 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25431 break;
25432 case WDI_ADD_TS_REQ:
25433 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25434 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25435 break;
25436 case WDI_DEL_TS_REQ:
25437 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25438 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25439 break;
25440 case WDI_UPD_EDCA_PRMS_REQ:
25441 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25442 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25443 break;
25444 case WDI_ADD_BA_SESSION_REQ:
25445 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25446 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25447 break;
25448 case WDI_DEL_BA_REQ:
25449 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25450 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25451 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025452#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025453 case WDI_TSM_STATS_REQ:
25454 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25455 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25456 break;
25457#endif
25458 case WDI_CH_SWITCH_REQ:
25459 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25460 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25461 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025462 case WDI_CH_SWITCH_REQ_V1:
25463 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25464 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25465 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025466 case WDI_CONFIG_STA_REQ:
25467 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25468 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25469 break;
25470 case WDI_SET_LINK_ST_REQ:
25471 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25472 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25473 break;
25474 case WDI_GET_STATS_REQ:
25475 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25476 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25477 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025478#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025479 case WDI_GET_ROAM_RSSI_REQ:
25480 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25481 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25482 break;
25483#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025484 case WDI_UPDATE_CFG_REQ:
25485 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25486 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25487 break;
25488 case WDI_ADD_BA_REQ:
25489 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25490 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25491 break;
25492 case WDI_TRIGGER_BA_REQ:
25493 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25494 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25495 break;
25496 case WDI_UPD_BCON_PRMS_REQ:
25497 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25498 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25499 break;
25500 case WDI_SND_BCON_REQ:
25501 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25502 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25503 break;
25504 case WDI_ENTER_BMPS_REQ:
25505 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25506 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25507 break;
25508 case WDI_EXIT_BMPS_REQ:
25509 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25510 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25511 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025512 case WDI_ENTER_IMPS_REQ:
25513 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25514 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25515 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025516 case WDI_ENTER_UAPSD_REQ:
25517 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25518 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25519 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025520 case WDI_EXIT_UAPSD_REQ:
25521 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25522 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25523 break;
25524 case WDI_SET_UAPSD_PARAM_REQ:
25525 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25526 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25527 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025528 case WDI_UPDATE_UAPSD_PARAM_REQ:
25529 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25530 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25531 break;
25532 case WDI_CONFIGURE_RXP_FILTER_REQ:
25533 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25534 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25535 break;
25536 case WDI_SET_BEACON_FILTER_REQ:
25537 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25538 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25539 break;
25540 case WDI_REM_BEACON_FILTER_REQ:
25541 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25542 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025543 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025544 case WDI_SET_RSSI_THRESHOLDS_REQ:
25545 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25546 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25547 break;
25548 case WDI_HOST_OFFLOAD_REQ:
25549 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25550 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25551 break;
25552 case WDI_WOWL_ADD_BC_PTRN_REQ:
25553 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25554 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25555 break;
25556 case WDI_WOWL_DEL_BC_PTRN_REQ:
25557 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25558 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25559 break;
25560 case WDI_WOWL_ENTER_REQ:
25561 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25562 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25563 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025564 case WDI_WOWL_EXIT_REQ:
25565 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25566 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25567 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025568 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25569 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25570 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25571 break;
25572 case WDI_FLUSH_AC_REQ:
25573 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25574 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25575 break;
25576 case WDI_BTAMP_EVENT_REQ:
25577 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25578 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25579 break;
25580 case WDI_KEEP_ALIVE_REQ:
25581 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25582 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25583 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025584#if defined FEATURE_WLAN_SCAN_PNO
25585 case WDI_SET_PREF_NETWORK_REQ:
25586 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25587 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25588 break;
25589 case WDI_SET_RSSI_FILTER_REQ:
25590 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25591 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25592 break;
25593 case WDI_UPDATE_SCAN_PARAMS_REQ:
25594 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25595 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25596 break;
25597#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025598 case WDI_SET_TX_PER_TRACKING_REQ:
25599 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25600 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025601 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025602#if defined WLAN_FEATURE_PACKET_FILTERING
25603 case WDI_8023_MULTICAST_LIST_REQ:
25604 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25605 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25606 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025607 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25608 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25609 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25610 break;
25611 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25612 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25613 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25614 break;
25615 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25616 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25617 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25618 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025619#endif
25620 case WDI_SET_POWER_PARAMS_REQ:
25621 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25622 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25623 break;
25624#if defined WLAN_FEATURE_GTK_OFFLOAD
25625 case WDI_GTK_OFFLOAD_REQ:
25626 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25627 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25628 break;
25629 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25630 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25631 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25632 break;
25633#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025634
Jeff Johnson295189b2012-06-20 16:38:30 -070025635 default:
25636 *ppfnReqCB = NULL;
25637 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025638 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025639 }
25640}/*WDI_ExtractRequestCBFromEvent*/
25641
25642
25643/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025644 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025645 frame xtl is enabled for a particular STA.
25646
25647 WDI_PostAssocReq must have been called.
25648
Jeff Johnsone7245742012-09-05 17:12:55 -070025649 @param uSTAIdx: STA index
25650
Jeff Johnson295189b2012-06-20 16:38:30 -070025651 @see WDI_PostAssocReq
25652 @return Result of the function call
25653*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025654wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025655WDI_IsHwFrameTxTranslationCapable
25656(
25657 wpt_uint8 uSTAIdx
25658)
25659{
Jeff Johnsone7245742012-09-05 17:12:55 -070025660 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025661 uma value*/
25662 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025663 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025664 ------------------------------------------------------------------------*/
25665 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25666 {
25667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25668 "WDI API call before module is initialized - Fail request");
25669
Jeff Johnsone7245742012-09-05 17:12:55 -070025670 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025671 }
25672
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025673#ifdef WLAN_SOFTAP_VSTA_FEATURE
25674 if (IS_VSTA_IDX(uSTAIdx))
25675 {
25676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25677 "STA %d is a Virtual STA, "
25678 "HW frame translation disabled", uSTAIdx);
25679 return eWLAN_PAL_FALSE;
25680 }
25681#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025682
Jeff Johnson295189b2012-06-20 16:38:30 -070025683 return gWDICb.bFrameTransEnabled;
25684}/*WDI_IsHwFrameTxTranslationCapable*/
25685
Katya Nigam6201c3e2014-05-27 17:51:42 +053025686
25687/**
25688 @brief WDI_IsSelfSTA - check if staid is self sta index
25689
25690
25691 @param pWDICtx: pointer to the WLAN DAL context
25692 ucSTAIdx: station index
25693
25694 @return Result of the function call
25695*/
25696wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25697{
25698 wpt_uint8 ucSTAType;
25699
25700 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25701 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25702 {
25703 if( ucSTAType == WDI_STA_ENTRY_SELF )
25704 return eWLAN_PAL_TRUE;
25705 }
25706
25707 return eWLAN_PAL_FALSE;
25708}
25709
25710
25711
Jeff Johnson295189b2012-06-20 16:38:30 -070025712#ifdef FEATURE_WLAN_SCAN_PNO
25713/**
25714 @brief WDI_SetPreferredNetworkList
25715
Jeff Johnsone7245742012-09-05 17:12:55 -070025716 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025717 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025718
Jeff Johnson295189b2012-06-20 16:38:30 -070025719 wdiPNOScanCb: callback for passing back the response
25720 of the Set PNO operation received from the
25721 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025722
Jeff Johnson295189b2012-06-20 16:38:30 -070025723 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025724 callback
25725
Jeff Johnson295189b2012-06-20 16:38:30 -070025726 @return Result of the function call
25727*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025728WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025729WDI_SetPreferredNetworkReq
25730(
25731 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25732 WDI_PNOScanCb wdiPNOScanCb,
25733 void* pUserData
25734)
25735{
25736 WDI_EventInfoType wdiEventData = {{0}};
25737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25738
25739 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025740 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025741 ------------------------------------------------------------------------*/
25742 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25743 {
25744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25745 "WDI API call before module is initialized - Fail request");
25746
Jeff Johnsone7245742012-09-05 17:12:55 -070025747 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025748 }
25749
25750 /*------------------------------------------------------------------------
25751 Fill in Event data and post to the Main FSM
25752 ------------------------------------------------------------------------*/
25753 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025754 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025755 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025756 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025757 wdiEventData.pUserData = pUserData;
25758
25759 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25760}
25761
25762
25763/**
25764 @brief WDI_SetRssiFilterReq
25765
Jeff Johnsone7245742012-09-05 17:12:55 -070025766 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025767 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025768
Jeff Johnson295189b2012-06-20 16:38:30 -070025769 wdiRssiFilterCb: callback for passing back the response
25770 of the Set RSSI Filter operation received from the
25771 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025772
Jeff Johnson295189b2012-06-20 16:38:30 -070025773 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025774 callback
25775
Jeff Johnson295189b2012-06-20 16:38:30 -070025776 @return Result of the function call
25777*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025778WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025779WDI_SetRssiFilterReq
25780(
25781 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25782 WDI_RssiFilterCb wdiRssiFilterCb,
25783 void* pUserData
25784)
25785{
25786 WDI_EventInfoType wdiEventData = {{0}};
25787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25788
25789 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025790 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025791 ------------------------------------------------------------------------*/
25792 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25793 {
25794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25795 "WDI API call before module is initialized - Fail request");
25796
Jeff Johnsone7245742012-09-05 17:12:55 -070025797 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025798 }
25799
25800 /*------------------------------------------------------------------------
25801 Fill in Event data and post to the Main FSM
25802 ------------------------------------------------------------------------*/
25803 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025804 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025805 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025806 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025807 wdiEventData.pUserData = pUserData;
25808
25809 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25810}/*WDI_SetRssiFilterReq*/
25811
25812/**
25813 @brief WDI_UpdateScanParamsReq
25814
Jeff Johnsone7245742012-09-05 17:12:55 -070025815 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025816 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025817
Jeff Johnson295189b2012-06-20 16:38:30 -070025818 wdiUpdateScanParamsCb: callback for passing back the response
25819 of the Set PNO operation received from the
25820 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025821
Jeff Johnson295189b2012-06-20 16:38:30 -070025822 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025823 callback
25824
Jeff Johnson295189b2012-06-20 16:38:30 -070025825 @return Result of the function call
25826*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025827WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025828WDI_UpdateScanParamsReq
25829(
25830 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25831 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25832 void* pUserData
25833)
25834{
25835 WDI_EventInfoType wdiEventData = {{0}};
25836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25837
25838 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025839 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025840 ------------------------------------------------------------------------*/
25841 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25842 {
25843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25844 "WDI API call before module is initialized - Fail request");
25845
Jeff Johnsone7245742012-09-05 17:12:55 -070025846 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025847 }
25848
25849 /*------------------------------------------------------------------------
25850 Fill in Event data and post to the Main FSM
25851 ------------------------------------------------------------------------*/
25852 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025853 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025854 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025855 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025856 wdiEventData.pUserData = pUserData;
25857
25858 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25859}
25860
25861/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025862 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025863 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025864
25865 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025866 pwdiPNOScanReqParams: pointer to the info received
25867 from upper layers
25868 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025869 and its size
25870
Jeff Johnson295189b2012-06-20 16:38:30 -070025871 @return Result of the function call
25872*/
25873
25874WDI_Status
25875WDI_PackPreferredNetworkList
25876(
25877 WDI_ControlBlockType* pWDICtx,
25878 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25879 wpt_uint8** ppSendBuffer,
25880 wpt_uint16* pSize
25881)
25882{
Jeff Johnsone7245742012-09-05 17:12:55 -070025883 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025884 wpt_uint16 usDataOffset = 0;
25885 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025886 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025887 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025888 /*-----------------------------------------------------------------------
25889 Get message buffer
25890 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025891 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025892 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025893 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025894 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025895 {
25896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025897 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025898 pwdiPNOScanReqParams);
25899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025901 }
25902
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025903 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25904
Jeff Johnson295189b2012-06-20 16:38:30 -070025905 /*-------------------------------------------------------------------------
25906 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25907 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025908 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025909 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025910 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025911 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25912
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025913 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025914 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025915 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025916 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025917 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25918
25919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025920 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025921 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25922 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25923 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25924
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025925 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025926 {
25927 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025928 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025929 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25930
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025931 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025932 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025933 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025934
25935 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025936 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025937 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025938
25939 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025940 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025941 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025942
Jeff Johnsone7245742012-09-05 17:12:55 -070025943 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025944 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025945 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025946 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25947 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25948 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25949 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025950
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025951 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025952 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025953 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025954
25955 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025956 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025957 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25958
25959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025960 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025961 pPrefNetwListParams->aNetworks[i].ssId.length,
25962 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025963 }
25964
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025965 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025966 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025967 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25968 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25969 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25970
25971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025972 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025973 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025974 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25975 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25976
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025977 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025978 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025979 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025980 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025981 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025982 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25983 }
25984
25985 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025986 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025987 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25988 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25989 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025990 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025991
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025992 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025993 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025994 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025995
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025996 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025997 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25998 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25999 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026000 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026001
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026002 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026003 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026004 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026005
26006 /*Set the output values*/
26007 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026008 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026009
26010 return WDI_STATUS_SUCCESS;
26011}/*WDI_PackPreferredNetworkList*/
26012
26013/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026014 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026015 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026016
26017 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026018 pwdiPNOScanReqParams: pointer to the info received
26019 from upper layers
26020 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026021 and its size
26022
Jeff Johnson295189b2012-06-20 16:38:30 -070026023 @return Result of the function call
26024*/
26025
26026WDI_Status
26027WDI_PackPreferredNetworkListNew
26028(
26029 WDI_ControlBlockType* pWDICtx,
26030 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26031 wpt_uint8** ppSendBuffer,
26032 wpt_uint16* pSize
26033)
26034{
Jeff Johnsone7245742012-09-05 17:12:55 -070026035 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026036 wpt_uint16 usDataOffset = 0;
26037 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026038 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026039 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026040
26041 /*-----------------------------------------------------------------------
26042 Get message buffer
26043 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026044 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026045 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070026046 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026047 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026048 {
26049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026050 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026051 pwdiPNOScanReqParams);
26052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026054 }
26055
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026056 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
26057
Jeff Johnson295189b2012-06-20 16:38:30 -070026058 /*-------------------------------------------------------------------------
26059 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26060 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026061 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026062 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026063 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026064 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26065
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026066 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026067 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026068 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026069 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026070 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26071
26072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026073 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026074 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26075 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26076 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26077
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026078 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026079 {
26080 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026081 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026082 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26083
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026084 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026085 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026086 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026087
26088 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026089 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026090 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026091
26092 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026093 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026094 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026095
26096 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026097 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026098 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026099
Jeff Johnsone7245742012-09-05 17:12:55 -070026100 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026101 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026102 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026103 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26104
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026105 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026106 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026107 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026108
26109 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026110 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026111 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26112
26113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026114 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026115 pPrefNetwListParams->aNetworks[i].ssId.length,
26116 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026117 }
26118
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026119 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026120 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026121 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26122 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26123 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26124
26125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026126 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026127 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026128 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26129 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26130
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026131 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026132 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026133 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026134 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026135 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026136 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26137 }
26138
26139 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026140 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026141 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26142 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26143 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026144 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026145
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026146 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026147 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026148 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026149
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026150 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026151 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26152 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26153 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026154 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026155
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026156 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026157 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026158 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026159
Jeff Johnson295189b2012-06-20 16:38:30 -070026160
26161 /*Set the output values*/
26162 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026163 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026164
26165 return WDI_STATUS_SUCCESS;
26166}/*WDI_PackPreferredNetworkListNew*/
26167
26168/**
26169 @brief Process Set Preferred Network List 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 @return Result of the function call
26175*/
26176WDI_Status
26177WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026178(
Jeff Johnson295189b2012-06-20 16:38:30 -070026179 WDI_ControlBlockType* pWDICtx,
26180 WDI_EventInfoType* pEventData
26181)
26182{
26183 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26184 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026185 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026186 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026187 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026188
26189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026190 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026191 -------------------------------------------------------------------------*/
26192 if (( NULL == pEventData ) ||
26193 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26194 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26195 {
26196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026197 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026198 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026200 }
26201
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026202 /*----------------------------------------------------------------------
26203 Avoid Enable PNO during any active session or an ongoing session
26204 ----------------------------------------------------------------------*/
26205 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26206 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26207 {
26208 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26209 "%s:(Active/Ongoing Session) - Fail request", __func__);
26210
26211 return WDI_STATUS_E_FAILURE;
26212 }
26213
Jeff Johnson295189b2012-06-20 16:38:30 -070026214 /*-------------------------------------------------------------------------
26215 Pack the PNO request structure based on version
26216 -------------------------------------------------------------------------*/
26217 if ( pWDICtx->wdiPNOVersion > 0 )
26218 {
26219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026220 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026221 pWDICtx->wdiPNOVersion);
26222
26223 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26224 &pSendBuffer, &usSendSize);
26225 }
26226 else
26227 {
26228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026229 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026230 pWDICtx->wdiPNOVersion);
26231
26232 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26233 &pSendBuffer, &usSendSize);
26234 }
26235
26236 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26237 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26238 {
26239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026240 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026242 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026243 }
26244
26245 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026246 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026247
26248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026249 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026250 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026251 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26252 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026253}
26254
26255/**
26256 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026257
26258 @param pWDICtx: pointer to the WLAN DAL context
26259 pEventData: pointer to the event information structure
26260
Jeff Johnson295189b2012-06-20 16:38:30 -070026261 @see
26262 @return Result of the function call
26263*/
26264WDI_Status
26265WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026266(
Jeff Johnson295189b2012-06-20 16:38:30 -070026267 WDI_ControlBlockType* pWDICtx,
26268 WDI_EventInfoType* pEventData
26269)
26270{
26271 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26272 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026273 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026274 wpt_uint16 usDataOffset = 0;
26275 wpt_uint16 usSendSize = 0;
26276 wpt_uint8 ucRssiThreshold;
26277
26278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026280 -------------------------------------------------------------------------*/
26281 if (( NULL == pEventData ) ||
26282 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26283 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26284 {
26285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026286 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026287 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026289 }
26290
26291 /*-----------------------------------------------------------------------
26292 Get message buffer
26293 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026294 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026295 sizeof(ucRssiThreshold),
26296 &pSendBuffer, &usDataOffset, &usSendSize))||
26297 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26298 {
26299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026300 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026301 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026304 }
26305
26306 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26307
Jeff Johnsone7245742012-09-05 17:12:55 -070026308 wpalMemoryCopy( pSendBuffer+usDataOffset,
26309 &ucRssiThreshold,
26310 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026311
26312 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026313 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026314
26315 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026316 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026317 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026318 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26319 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026320}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026321#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26322/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026323 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026324
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026325 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026326 by the Device Interface
26327
26328 wdiRoamOffloadScancb: callback for passing back the response
26329 of the Roam Candidate Lookup Req operation received from the
26330 device
26331
26332 pUserData: user data will be passed back with the
26333 callback
26334 @return Result of the function call
26335*/
26336WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026337WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026338(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026339 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026340 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26341 void* pUserData
26342)
26343{
26344 WDI_EventInfoType wdiEventData = {{0}};
26345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26346
26347 /*------------------------------------------------------------------------
26348 Sanity Check
26349 ------------------------------------------------------------------------*/
26350 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26351 {
26352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26353 "WDI API call before module is initialized - Fail request");
26354
26355 return WDI_STATUS_E_NOT_ALLOWED;
26356 }
26357
26358 /*------------------------------------------------------------------------
26359 Fill in Event data and post to the Main FSM
26360 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026361 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26362 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26363 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026364 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26365 wdiEventData.pUserData = pUserData;
26366
26367 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26368}
26369
26370void
26371WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26372{
26373 switch (wdiEdType)
26374 {
26375 case WDI_ED_NONE:
26376 *EdType = eED_NONE;
26377 break;
26378 case WDI_ED_WEP40:
26379 case WDI_ED_WEP104:
26380 *EdType = eED_WEP;
26381 break;
26382 case WDI_ED_TKIP:
26383 *EdType = eED_TKIP;
26384 break;
26385 case WDI_ED_CCMP:
26386#ifdef WLAN_FEATURE_11W
26387 case WDI_ED_AES_128_CMAC:
26388#endif
26389 *EdType = eED_CCMP;
26390 break;
26391#ifdef FEATURE_WLAN_WAPI
26392 case WDI_ED_WPI:
26393 *EdType = eED_WPI;
26394 break;
26395#endif
26396 case WDI_ED_ANY:
26397 *EdType = eED_ANY;
26398 break;
26399
26400 default:
26401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26402 "%s: Unknown Encryption Type", __func__);
26403 break;
26404 }
26405}
26406
26407/**
26408 @brief Helper function to pack Start Roam Candidate Lookup
26409 Request parameters
26410
26411 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026412 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026413 from upper layers
26414 ppSendBuffer, pSize - out pointers of the packed buffer
26415 and its size
26416
26417 @return Result of the function call
26418*/
26419
26420WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026421WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026422(
26423 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026424 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026425 wpt_uint8** ppSendBuffer,
26426 wpt_uint16* pSize
26427)
26428{
26429 wpt_uint8* pSendBuffer = NULL;
26430 wpt_uint16 usDataOffset = 0;
26431 wpt_uint16 usSendSize = 0;
26432 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26433 wpt_uint8 i;
26434 /*-----------------------------------------------------------------------
26435 Get message buffer
26436 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026437 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026438 sizeof(tRoamCandidateListParams),
26439 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026440 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026441 {
26442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026443 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026444 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026445 WDI_ASSERT(0);
26446 return WDI_STATUS_E_FAILURE;
26447 }
26448 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026449 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026450 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026451 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026452 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026453 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026454 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026455 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026456 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026457 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026458 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026459
26460 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026461 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026462 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026463 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026464 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26465 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026466 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26467 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26468 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26469 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26470 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026471 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026472 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026473 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026474 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26475 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26476 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26477 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26478 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26479 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26480 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026481 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026482 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026483 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26484 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26485 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026486
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26488 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26489 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26490 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26491 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26492 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026493 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026494 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26495 pRoamCandidateListParams->RoamScanOffloadEnabled,
26496 pRoamCandidateListParams->Command,
26497 pRoamCandidateListParams->StartScanReason,
26498 pRoamCandidateListParams->NeighborScanTimerPeriod,
26499 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26500 pRoamCandidateListParams->NeighborScanChannelMinTime,
26501 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26502 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26503 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26504 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26505 pRoamCandidateListParams->ConnectedNetwork.authentication,
26506 pRoamCandidateListParams->ConnectedNetwork.encryption,
26507 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26508 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26509 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026510 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026511 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026512 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026513 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026514 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26515 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026516 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026517 pRoamCandidateListParams->us24GProbeSize);
26518 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026519 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026520 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026521 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026522 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26523 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026524 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026525 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026526 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26527 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26528 pRoamCandidateListParams->nProbes =
26529 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26530 pRoamCandidateListParams->HomeAwayTime =
26531 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026533 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26534 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026536 }
26537
26538
26539 /*Set the output values*/
26540 *ppSendBuffer = pSendBuffer;
26541 *pSize = usSendSize;
26542 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026543}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026544
26545/**
26546 @brief Process Start Roam Candidate Lookup Request function
26547
26548 @param pWDICtx: pointer to the WLAN DAL context
26549 pEventData: pointer to the event information structure
26550
26551 @return Result of the function call
26552*/
26553WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026554WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026555(
26556 WDI_ControlBlockType* pWDICtx,
26557 WDI_EventInfoType* pEventData
26558)
26559{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026560 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026561 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26562 wpt_uint8* pSendBuffer = NULL;
26563 wpt_uint16 usSendSize = 0;
26564 WDI_Status wdiStatus;
26565 /*-------------------------------------------------------------------------
26566 Sanity check
26567 -------------------------------------------------------------------------*/
26568 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026569 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026570 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26571 {
26572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26573 "%s: Invalid parameters", __func__);
26574 WDI_ASSERT(0);
26575 return WDI_STATUS_E_FAILURE;
26576 }
26577
26578 /*-------------------------------------------------------------------------
26579 Pack the Start Roam Candidate Lookup request structure based on version
26580 -------------------------------------------------------------------------*/
26581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26582 "%s: Packing Roam Candidate Lookup request ", __func__);
26583
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026584 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026585 &pSendBuffer, &usSendSize);
26586
26587 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26588 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26589 {
26590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26591 "%s: failed to pack request parameters", __func__);
26592 WDI_ASSERT(0);
26593 return wdiStatus;
26594 }
26595
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026596 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26597 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026598
26599 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026600 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026601 -------------------------------------------------------------------------*/
26602 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026603 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026604}
26605
26606/**
26607 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26608 response is being received over the bus from HAL)
26609
26610 @param pWDICtx: pointer to the WLAN DAL context
26611 pEventData: pointer to the event information structure
26612
26613 @see
26614 @return Result of the function call
26615*/
26616WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026617WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026618(
26619 WDI_ControlBlockType* pWDICtx,
26620 WDI_EventInfoType* pEventData
26621)
26622{
26623 WDI_Status wdiStatus;
26624 eHalStatus halStatus;
26625 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26626
26627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26628
26629 /*-------------------------------------------------------------------------
26630 Sanity check
26631 -------------------------------------------------------------------------*/
26632 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26633 ( NULL == pEventData->pEventData ))
26634 {
26635 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26636 "%s: Invalid parameters", __func__);
26637 WDI_ASSERT(0);
26638 return WDI_STATUS_E_FAILURE;
26639 }
26640
26641 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26642
26643 /*-------------------------------------------------------------------------
26644 Extract response and send it to UMAC
26645 -------------------------------------------------------------------------*/
26646 halStatus = *((eHalStatus*)pEventData->pEventData);
26647 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26648
26649 /*Notify UMAC*/
26650 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26651
26652 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026653}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026654#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026655
26656/**
26657 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026658
26659 @param pWDICtx: pointer to the WLAN DAL context
26660 pEventData: pointer to the event information structure
26661
Jeff Johnson295189b2012-06-20 16:38:30 -070026662 @see
26663 @return Result of the function call
26664*/
26665WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026666WDI_PackUpdateScanParamsReq
26667(
26668 WDI_ControlBlockType* pWDICtx,
26669 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26670 wpt_uint8** ppSendBuffer,
26671 wpt_uint16* pSize
26672)
26673{
26674 wpt_uint8* pSendBuffer = NULL;
26675 wpt_uint16 usDataOffset = 0;
26676 wpt_uint16 usSendSize = 0;
26677 tUpdateScanParams updateScanParams = {0};
26678
26679
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026681 "Begin WDI Update Scan Parameters Old Style Params");
26682 /*-----------------------------------------------------------------------
26683 Get message buffer
26684 -----------------------------------------------------------------------*/
26685 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26686 sizeof(updateScanParams),
26687 &pSendBuffer, &usDataOffset, &usSendSize))||
26688 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26689 {
26690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026691 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026692 pwdiUpdateScanParams);
26693 WDI_ASSERT(0);
26694 return WDI_STATUS_E_FAILURE;
26695 }
26696
26697 //
26698 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26699 //
26700
26701 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26702 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26703
26704 updateScanParams.ucChannelCount =
26705 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26706 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26707 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26708 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26709
26710 wpalMemoryCopy( updateScanParams.aChannels,
26711 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26712 updateScanParams.ucChannelCount);
26713
26714
26715 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26716 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26717 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26718 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26719 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26720
26721 wpalMemoryCopy( pSendBuffer+usDataOffset,
26722 &updateScanParams,
26723 sizeof(updateScanParams));
26724
26725 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26726 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26727
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026729 "End Update Scan Parameters Old Style");
26730
26731 /*Set the output values*/
26732 *ppSendBuffer = pSendBuffer;
26733 *pSize = usSendSize;
26734
26735 return WDI_STATUS_SUCCESS;
26736}
26737
26738/**
26739 @brief Process Update Scan Params function
26740
26741 @param pWDICtx: pointer to the WLAN DAL context
26742 pEventData: pointer to the event information structure
26743
26744 @see
26745 @return Result of the function call
26746*/
26747WDI_Status
26748WDI_PackUpdateScanParamsReqEx
26749(
26750 WDI_ControlBlockType* pWDICtx,
26751 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26752 wpt_uint8** ppSendBuffer,
26753 wpt_uint16* pSize
26754)
26755{
26756 wpt_uint8* pSendBuffer = NULL;
26757 wpt_uint16 usDataOffset = 0;
26758 wpt_uint16 usSendSize = 0;
26759 tUpdateScanParamsEx updateScanParams = {0};
26760
26761
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026762 /*-----------------------------------------------------------------------
26763 Get message buffer
26764 -----------------------------------------------------------------------*/
26765 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26766 sizeof(updateScanParams),
26767 &pSendBuffer, &usDataOffset, &usSendSize))||
26768 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26769 {
26770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026771 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026772 pwdiUpdateScanParams);
26773 WDI_ASSERT(0);
26774 return WDI_STATUS_E_FAILURE;
26775 }
26776
26777 //
26778 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26779 //
26780
26781 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26782 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26783
26784 updateScanParams.ucChannelCount =
26785 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26786 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26787 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26788 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26789
26790 wpalMemoryCopy( updateScanParams.aChannels,
26791 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26792 updateScanParams.ucChannelCount);
26793
26794
26795 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26796 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26797 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26798 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26799 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26800
26801 wpalMemoryCopy( pSendBuffer+usDataOffset,
26802 &updateScanParams,
26803 sizeof(updateScanParams));
26804
26805 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26806 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26807
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026808 /*Set the output values*/
26809 *ppSendBuffer = pSendBuffer;
26810 *pSize = usSendSize;
26811
26812 return WDI_STATUS_SUCCESS;
26813}
26814
26815/**
26816 @brief Process Update Scan Params function
26817
26818 @param pWDICtx: pointer to the WLAN DAL context
26819 pEventData: pointer to the event information structure
26820
26821 @see
26822 @return Result of the function call
26823*/
26824WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026825WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026826(
Jeff Johnson295189b2012-06-20 16:38:30 -070026827 WDI_ControlBlockType* pWDICtx,
26828 WDI_EventInfoType* pEventData
26829)
26830{
26831 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26832 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026833 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026834 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026835 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026836
26837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026838 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026839 -------------------------------------------------------------------------*/
26840 if (( NULL == pEventData ) ||
26841 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26842 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26843 {
26844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026848 }
26849
26850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26851 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026852
26853 //
26854 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26855 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026856 if ( pWDICtx->wlanVersion.revision < 1 )
26857 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026858 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026859 &pSendBuffer, &usSendSize);
26860 }
26861 else
26862 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026863 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26864 &pSendBuffer, &usSendSize);
26865 }
26866
26867 if(WDI_STATUS_SUCCESS != wdiStatus)
26868 {
26869 //memory allocation failed
26870 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026871 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026872
Jeff Johnson295189b2012-06-20 16:38:30 -070026873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026874 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026875 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026876 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026877 wdiUpdateScanParamsCb, pEventData->pUserData,
26878 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026879}
26880
26881/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026882 @brief Process Update Channel Params function
26883
26884 @param pWDICtx: pointer to the WLAN DAL context
26885 pEventData: pointer to the event information structure
26886
26887 @see
26888 @return Result of the function call
26889*/
26890WDI_Status
26891WDI_ProcessUpdateChannelParamsReq
26892(
26893 WDI_ControlBlockType* pWDICtx,
26894 WDI_EventInfoType* pEventData
26895)
26896{
26897 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26898 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26899 wpt_uint8* pSendBuffer = NULL;
26900 wpt_uint16 usDataOffset = 0;
26901 wpt_uint16 usSendSize = 0;
26902 tUpdateChannelReqType *updateChannelParams;
26903 wpt_uint32 usUpdateChanParamSize;
26904 wpt_uint8 num_channels = 0;
26905
26906 /*-------------------------------------------------------------------------
26907 Sanity check
26908 -------------------------------------------------------------------------*/
26909 if (( NULL == pEventData ) ||
26910 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26911 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26912 {
26913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26914 "%s: Invalid parameters", __func__);
26915 WDI_ASSERT(0);
26916 return WDI_STATUS_E_FAILURE;
26917 }
26918 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026919 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026920
26921 /*-----------------------------------------------------------------------
26922 Get message buffer
26923 -----------------------------------------------------------------------*/
26924 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26925 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26926 &pSendBuffer, &usDataOffset, &usSendSize))||
26927 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26928 {
26929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26930 "Unable to get send buffer in Update Channel Params req %p",
26931 pwdiUpdateChanListParams);
26932 WDI_ASSERT(0);
26933 return WDI_STATUS_E_FAILURE;
26934 }
26935 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26936
26937 updateChannelParams->numChan = num_channels;
26938 wpalMemoryCopy(&updateChannelParams->chanParam,
26939 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26940 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26941
26942 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26943 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26944
26945 /*-------------------------------------------------------------------------
26946 Send Update channel request to fw
26947 -------------------------------------------------------------------------*/
26948 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26949 wdiUpdateChanParamsCb, pEventData->pUserData,
26950 WDI_UPDATE_CHAN_RESP);
26951}
26952
26953/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026954 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026955
26956 @param pWDICtx: pointer to the WLAN DAL context
26957 pEventData: pointer to the event information structure
26958
Jeff Johnson295189b2012-06-20 16:38:30 -070026959 @see
26960 @return Result of the function call
26961*/
26962WDI_Status
26963WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026964(
Jeff Johnson295189b2012-06-20 16:38:30 -070026965 WDI_ControlBlockType* pWDICtx,
26966 WDI_EventInfoType* pEventData
26967)
26968{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026969 WDI_LowLevelIndType wdiInd;
26970 tpPrefNetwFoundParams pNetwFoundParams;
26971 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026972
26973
26974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026975 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026976 -------------------------------------------------------------------------*/
26977 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26978 ( NULL == pEventData->pEventData ))
26979 {
26980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026981 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026982 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026983 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026984 }
26985
26986 /*-------------------------------------------------------------------------
26987 Extract indication and send it to UMAC
26988 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026989 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26990
26991 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26992 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26993 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26994
26995 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26996 {
26997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26998 "%s: fail to allocate memory", __func__);
26999 return WDI_STATUS_MEM_FAILURE;
27000 }
27001
27002 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
27003 (pNetwFoundParams->ssId.length < 32 )?
27004 pNetwFoundParams->ssId.length : 32;
27005 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
27006 pNetwFoundParams->ssId.ssId,
27007 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
27008 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
27009 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
27010 pNetwFoundParams->frameLength;
27011 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
27012 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
27013 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027014
27015 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027016 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070027017
Jeff Johnson295189b2012-06-20 16:38:30 -070027018 // DEBUG
27019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053027020 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070027021 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070027022 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027023 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070027024 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027025 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
27026
ltimariub77f24b2013-01-24 18:54:33 -080027027 if ( pWDICtx->wdiLowLevelIndCB )
27028 {
27029 /*Notify UMAC*/
27030 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
27031 }
Jeff Johnsone7245742012-09-05 17:12:55 -070027032
27033 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027034}
27035
27036/**
27037 @brief Process PNO Rsp function (called when a
27038 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027039
27040 @param pWDICtx: pointer to the WLAN DAL context
27041 pEventData: pointer to the event information structure
27042
Jeff Johnson295189b2012-06-20 16:38:30 -070027043 @see
27044 @return Result of the function call
27045*/
27046WDI_Status
27047WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027048(
Jeff Johnson295189b2012-06-20 16:38:30 -070027049 WDI_ControlBlockType* pWDICtx,
27050 WDI_EventInfoType* pEventData
27051)
27052{
27053 WDI_Status wdiStatus;
27054 eHalStatus halStatus;
27055 WDI_PNOScanCb wdiPNOScanCb = NULL;
27056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27057
27058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027059 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027060 -------------------------------------------------------------------------*/
27061 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27062 ( NULL == pEventData->pEventData ))
27063 {
27064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027065 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027066 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027068 }
27069
27070
Jeff Johnsone7245742012-09-05 17:12:55 -070027071 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027072
27073 /*-------------------------------------------------------------------------
27074 Extract response and send it to UMAC
27075 -------------------------------------------------------------------------*/
27076 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027077 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027078
27079 /*Notify UMAC*/
27080 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
27081
Jeff Johnsone7245742012-09-05 17:12:55 -070027082 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027083}/*WDI_ProcessSetPreferredNetworkRsp*/
27084
27085/**
27086 @brief Process RSSI Filter Rsp function (called when a
27087 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027088
27089 @param pWDICtx: pointer to the WLAN DAL context
27090 pEventData: pointer to the event information structure
27091
Jeff Johnson295189b2012-06-20 16:38:30 -070027092 @see
27093 @return Result of the function call
27094*/
27095WDI_Status
27096WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027097(
Jeff Johnson295189b2012-06-20 16:38:30 -070027098 WDI_ControlBlockType* pWDICtx,
27099 WDI_EventInfoType* pEventData
27100)
27101{
27102 WDI_Status wdiStatus;
27103 eHalStatus halStatus;
27104 WDI_RssiFilterCb wdiRssiFilterCb;
27105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27106
27107 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027108 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027109 -------------------------------------------------------------------------*/
27110 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27111 ( NULL == pEventData->pEventData ))
27112 {
27113 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027114 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027117 }
27118
Jeff Johnsone7245742012-09-05 17:12:55 -070027119 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027120
27121 /*-------------------------------------------------------------------------
27122 Extract response and send it to UMAC
27123 -------------------------------------------------------------------------*/
27124 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027125 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027126
27127 /*Notify UMAC*/
27128 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27129
Jeff Johnsone7245742012-09-05 17:12:55 -070027130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027131}/*WDI_ProcessSetRssiFilterRsp*/
27132
27133/**
27134 @brief Process Update Scan Params Rsp function (called when a
27135 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027136
27137 @param pWDICtx: pointer to the WLAN DAL context
27138 pEventData: pointer to the event information structure
27139
Jeff Johnson295189b2012-06-20 16:38:30 -070027140 @see
27141 @return Result of the function call
27142*/
27143WDI_Status
27144WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027145(
Jeff Johnson295189b2012-06-20 16:38:30 -070027146 WDI_ControlBlockType* pWDICtx,
27147 WDI_EventInfoType* pEventData
27148)
27149{
27150 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027151 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027152 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027153 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27155
27156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027158 -------------------------------------------------------------------------*/
27159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27160 ( NULL == pEventData->pEventData ))
27161 {
27162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027166 }
27167
27168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027169 "%s: Process UPD scan params ptr : %p",
27170 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027171
Jeff Johnsone7245742012-09-05 17:12:55 -070027172 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027173
27174 /*-------------------------------------------------------------------------
27175 Extract response and send it to UMAC
27176 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027177 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27178 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027179 sizeof(halUpdScanParams.status));
27180
27181 uStatus = halUpdScanParams.status;
27182
27183 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027184 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027185
27186 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027187 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027188
Jeff Johnsone7245742012-09-05 17:12:55 -070027189 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027190
27191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027192 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027193 halUpdScanParams.status);
27194
27195 /*Notify UMAC*/
27196 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27197
Jeff Johnsone7245742012-09-05 17:12:55 -070027198 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027199}
27200#endif // FEATURE_WLAN_SCAN_PNO
27201
27202#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027203WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027204WDI_8023MulticastListReq
27205(
27206 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27207 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27208 void* pUserData
27209)
27210{
27211 WDI_EventInfoType wdiEventData;
27212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27213
27214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027215 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027216
27217 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027218 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027219 ------------------------------------------------------------------------*/
27220 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27221 {
27222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27223 "WDI API call before module is initialized - Fail request");
27224
Jeff Johnsone7245742012-09-05 17:12:55 -070027225 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027226 }
27227
27228 /*------------------------------------------------------------------------
27229 Fill in Event data and post to the Main FSM
27230 ------------------------------------------------------------------------*/
27231 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027232 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027233 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027234 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027235 wdiEventData.pUserData = pUserData;
27236
27237 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27238}
27239
Jeff Johnsone7245742012-09-05 17:12:55 -070027240WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027241WDI_ReceiveFilterSetFilterReq
27242(
27243 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27244 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27245 void* pUserData
27246)
27247{
27248 WDI_EventInfoType wdiEventData;
27249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27250
27251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027252 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027253
27254 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027255 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027256 ------------------------------------------------------------------------*/
27257 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27258 {
27259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27260 "WDI API call before module is initialized - Fail request");
27261
Jeff Johnsone7245742012-09-05 17:12:55 -070027262 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027263 }
27264
27265 /*------------------------------------------------------------------------
27266 Fill in Event data and post to the Main FSM
27267 ------------------------------------------------------------------------*/
27268 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027269 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27270 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027271 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27272 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027273 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027274 wdiEventData.pUserData = pUserData;
27275
27276
27277 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27278}
27279
Jeff Johnsone7245742012-09-05 17:12:55 -070027280WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027281WDI_FilterMatchCountReq
27282(
27283 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27284 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27285 void* pUserData
27286)
27287{
27288 WDI_EventInfoType wdiEventData;
27289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27290
27291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027292 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027293
27294 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027295 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027296 ------------------------------------------------------------------------*/
27297 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27298 {
27299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27300 "WDI API call before module is initialized - Fail request");
27301
Jeff Johnsone7245742012-09-05 17:12:55 -070027302 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027303 }
27304
27305 /*------------------------------------------------------------------------
27306 Fill in Event data and post to the Main FSM
27307 ------------------------------------------------------------------------*/
27308 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027309 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027310 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027311 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027312 wdiEventData.pUserData = pUserData;
27313
27314
27315 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27316}
27317
Jeff Johnsone7245742012-09-05 17:12:55 -070027318WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027319WDI_ReceiveFilterClearFilterReq
27320(
27321 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27322 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27323 void* pUserData
27324)
27325{
27326 WDI_EventInfoType wdiEventData;
27327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27328
27329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027330 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027331
27332 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027333 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027334 ------------------------------------------------------------------------*/
27335 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27336 {
27337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27338 "WDI API call before module is initialized - Fail request");
27339
Jeff Johnsone7245742012-09-05 17:12:55 -070027340 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027341 }
27342
27343 /*------------------------------------------------------------------------
27344 Fill in Event data and post to the Main FSM
27345 ------------------------------------------------------------------------*/
27346 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027347 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027348 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027349 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027350 wdiEventData.pUserData = pUserData;
27351
27352
27353 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27354}
27355
27356/**
27357 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027358
27359 @param pWDICtx: pointer to the WLAN DAL context
27360 pEventData: pointer to the event information structure
27361
Jeff Johnson295189b2012-06-20 16:38:30 -070027362 @see
27363 @return Result of the function call
27364*/
27365WDI_Status
27366WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027367(
Jeff Johnson295189b2012-06-20 16:38:30 -070027368 WDI_ControlBlockType* pWDICtx,
27369 WDI_EventInfoType* pEventData
27370)
27371{
27372 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27373 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027374 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027375 wpt_uint16 usDataOffset = 0;
27376 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027377 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027378 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027379 wpt_uint8 ucCurrentBSSSesIdx = 0;
27380 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027381
27382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027383 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027384
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027385 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27386 if( NULL == pRcvFltMcAddrListType )
27387 {
27388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27389 "Failed to alloc in WDI_Process8023MulticastListReq");
27390 return WDI_STATUS_E_FAILURE;
27391 }
27392
Jeff Johnson295189b2012-06-20 16:38:30 -070027393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027394 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027395 -------------------------------------------------------------------------*/
27396 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027397 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027398 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027399 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027400 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27401 {
27402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027403 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027404 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027406 return WDI_STATUS_E_FAILURE;
27407 }
27408
27409 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27410 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27411 &pBSSSes);
27412 if ( NULL == pBSSSes )
27413 {
27414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027415 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027416 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027418 }
27419
27420 /*-----------------------------------------------------------------------
27421 Get message buffer
27422 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027423 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27424 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027425 sizeof(tHalRcvFltMcAddrListType),
27426 &pSendBuffer, &usDataOffset, &usSendSize))||
27427 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27428 {
27429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27430 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027431 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027432 pEventData, pwdiFltPktSetMcListReqParamsType,
27433 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027434 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027437 }
27438
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027439 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027440 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027441 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027442 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027443 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027444 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27445 sizeof(tSirMacAddr));
27446 }
27447
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027448 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027449 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027450 pRcvFltMcAddrListType,
27451 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027452
27453 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027454 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027455
27456
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027457 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027459 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027460 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027461 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027462 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027463 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027464}
27465
27466/**
27467 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027468
27469 @param pWDICtx: pointer to the WLAN DAL context
27470 pEventData: pointer to the event information structure
27471
Jeff Johnson295189b2012-06-20 16:38:30 -070027472 @see
27473 @return Result of the function call
27474*/
27475WDI_Status
27476WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027477(
Jeff Johnson295189b2012-06-20 16:38:30 -070027478 WDI_ControlBlockType* pWDICtx,
27479 WDI_EventInfoType* pEventData
27480)
27481{
27482 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27483 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027484 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027485 wpt_uint16 usDataOffset = 0;
27486 wpt_uint16 usSendSize = 0;
27487 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027488 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027489 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027490 wpt_uint8 ucCurrentBSSSesIdx = 0;
27491 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027492 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27493 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027494
27495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027496 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027497
27498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027499 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027500 -------------------------------------------------------------------------*/
27501 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027502 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027503 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027504 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027505 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27506 {
27507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027510 return WDI_STATUS_E_FAILURE;
27511 }
27512
27513 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27514 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27515 &pBSSSes);
27516 if ( NULL == pBSSSes )
27517 {
27518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027519 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027521 }
27522
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027523 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27524 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027525
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027526 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27527 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27528 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27529
27530 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27531 usSessRcvPktFilterCfgSize);
27532
27533 if(NULL == pSessRcvPktFilterCfg)
27534 {
27535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27536 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027537 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027538 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027539 WDI_ASSERT(0);
27540 return WDI_STATUS_E_FAILURE;
27541 }
27542
27543 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27544
27545 /*-----------------------------------------------------------------------
27546 Get message buffer
27547 -----------------------------------------------------------------------*/
27548
27549 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27550 usSessRcvPktFilterCfgSize,
27551 &pSendBuffer, &usDataOffset, &usSendSize))||
27552 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27553 {
27554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27555 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027556 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027557 pEventData, pwdiSetRcvPktFilterReqInfo,
27558 wdiReceiveFilterSetFilterCb);
27559 WDI_ASSERT(0);
27560 wpalMemoryFree(pSessRcvPktFilterCfg);
27561 return WDI_STATUS_E_FAILURE;
27562 }
27563
27564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027565 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027566 usSendSize,pSessRcvPktFilterCfg);
27567
27568 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27569 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27570 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27571 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27572
27573 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27574
27575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27576 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27577 pSessRcvPktFilterCfg->filterType);
27578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27579 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27580 pSessRcvPktFilterCfg->coleasceTime);
27581
27582 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27583 {
27584 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27585 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27586 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27587 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27588 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27589 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27590 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27591 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27592
27593 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27594 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27595 8);
27596 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27597 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27598 8);
27599
27600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027601 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027602 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27603 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27604
27605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027606 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027607 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27608 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27609
27610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027611 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027612 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27613 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27614 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27615 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27616 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27617 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27618
27619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027620 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027621 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27622 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27623 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27624 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27625 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27626 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27627 }
27628
27629 wpalMemoryCopy( pSendBuffer+usDataOffset,
27630 pSessRcvPktFilterCfg,
27631 usSessRcvPktFilterCfgSize);
27632
27633
27634 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27635 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27636
27637 wpalMemoryFree(pSessRcvPktFilterCfg);
27638
27639 }
27640 /*If SLM_SESSIONIZATION is not supported then do this */
27641 else
27642 {
27643 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27644 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27645 * sizeof(tHalRcvPktFilterParams));
27646
27647 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027648 usRcvPktFilterCfgSize);
27649
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027650 if(NULL == pRcvPktFilterCfg)
27651 {
27652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27653 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027654 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027655 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027656 WDI_ASSERT(0);
27657 return WDI_STATUS_E_FAILURE;
27658 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027659
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027660 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027661
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027662 /*-----------------------------------------------------------------------
27663 Get message buffer
27664 -----------------------------------------------------------------------*/
27665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027666 usRcvPktFilterCfgSize,
27667 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027668 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27669 {
27670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027671 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027672 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027673 pEventData, pwdiSetRcvPktFilterReqInfo,
27674 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027675 WDI_ASSERT(0);
27676 wpalMemoryFree(pRcvPktFilterCfg);
27677 return WDI_STATUS_E_FAILURE;
27678 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027679
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027681 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027682 usSendSize,usRcvPktFilterCfgSize);
27683
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027684 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27685 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27686 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27687 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027688
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027690 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027691 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027693 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027694 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027695
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027696 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27697 {
27698 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27699 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27700 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27701 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27702 pRcvPktFilterCfg->paramsData[i].dataOffset =
27703 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27704 pRcvPktFilterCfg->paramsData[i].dataLength =
27705 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027706
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027707 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027708 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27709 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027710 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027711 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27712 8);
27713
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027715 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027716 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027717 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27718
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027720 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027721 pRcvPktFilterCfg->paramsData[i].dataOffset,
27722 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027723
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027725 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027726 pRcvPktFilterCfg->paramsData[i].compareData[0],
27727 pRcvPktFilterCfg->paramsData[i].compareData[1],
27728 pRcvPktFilterCfg->paramsData[i].compareData[2],
27729 pRcvPktFilterCfg->paramsData[i].compareData[3],
27730 pRcvPktFilterCfg->paramsData[i].compareData[4],
27731 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027732
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027734 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027735 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27736 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27737 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27738 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27739 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27740 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27741 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027742
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027743 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027744 pRcvPktFilterCfg,
27745 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027746
27747
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027748 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27749 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027750
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027752 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027753 wpalMemoryFree(pRcvPktFilterCfg);
27754 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027756 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027757 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027758 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027759 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027760 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027761}
27762
27763/**
27764 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027765
27766 @param pWDICtx: pointer to the WLAN DAL context
27767 pEventData: pointer to the event information structure
27768
Jeff Johnson295189b2012-06-20 16:38:30 -070027769 @see
27770 @return Result of the function call
27771*/
27772WDI_Status
27773WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027774(
Jeff Johnson295189b2012-06-20 16:38:30 -070027775 WDI_ControlBlockType* pWDICtx,
27776 WDI_EventInfoType* pEventData
27777)
27778{
27779 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27780 NULL;
27781 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27782 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027783 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027784 wpt_uint16 usDataOffset = 0;
27785 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027786 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27787 wpt_uint8 ucCurrentBSSSesIdx = 0;
27788 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027789
27790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027791 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027792
27793 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027794 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027795 -------------------------------------------------------------------------*/
27796 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027797 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027798 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027799 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027800 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27801 {
27802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027806 }
27807
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027808 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27809 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27810 &pBSSSes);
27811 if ( NULL == pBSSSes )
27812 {
27813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027814 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027815 return WDI_STATUS_E_FAILURE;
27816 }
27817
Jeff Johnson295189b2012-06-20 16:38:30 -070027818 /*-----------------------------------------------------------------------
27819 Get message buffer
27820 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027821 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27822 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027823 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027824 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027825 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027826 {
27827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27828 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027829 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027830 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27831 wdiFilterMatchCountCb);
27832 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027833 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027834 }
27835
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027836 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27837 wpalMemoryCopy( pSendBuffer+usDataOffset,
27838 &rcvFltPktMatchCntReqParam,
27839 sizeof(rcvFltPktMatchCntReqParam));
27840
Jeff Johnson295189b2012-06-20 16:38:30 -070027841 //
27842 // Don't need to fill send buffer other than header
27843 //
27844 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027845 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027846
27847
27848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027849 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027851 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27852 wdiFilterMatchCountCb,
27853 pEventData->pUserData,
27854 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027855}
27856
27857/**
27858 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027859
27860 @param pWDICtx: pointer to the WLAN DAL context
27861 pEventData: pointer to the event information structure
27862
Jeff Johnson295189b2012-06-20 16:38:30 -070027863 @see
27864 @return Result of the function call
27865*/
27866WDI_Status
27867WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027868(
Jeff Johnson295189b2012-06-20 16:38:30 -070027869 WDI_ControlBlockType* pWDICtx,
27870 WDI_EventInfoType* pEventData
27871)
Jeff Johnsone7245742012-09-05 17:12:55 -070027872{
Jeff Johnson295189b2012-06-20 16:38:30 -070027873 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27874 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027875 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027876 wpt_uint16 usDataOffset = 0;
27877 wpt_uint16 usSendSize = 0;
27878 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027879 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027880 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027881
27882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027883 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027884
27885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027886 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027887 -------------------------------------------------------------------------*/
27888 if (( NULL == pEventData ) ||
27889 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27890 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027891 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027892 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27893 {
27894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027895 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027897 return WDI_STATUS_E_FAILURE;
27898 }
27899
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027900 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027901 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27902 &pBSSSes);
27903 if ( NULL == pBSSSes )
27904 {
27905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027906 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027908 }
27909
27910 /*-----------------------------------------------------------------------
27911 Get message buffer
27912 -----------------------------------------------------------------------*/
27913 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027914 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027915 sizeof(tHalRcvFltPktClearParam),
27916 &pSendBuffer, &usDataOffset, &usSendSize))||
27917 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27918 {
27919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27920 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027921 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027922 pEventData, pwdiRcvFltPktClearReqParamsType,
27923 wdiRcvFltPktClearFilterCb);
27924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027926 }
27927
27928
27929 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027930 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027931 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027932 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027933
Jeff Johnsone7245742012-09-05 17:12:55 -070027934 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27935 wpalMemoryCopy( pSendBuffer+usDataOffset,
27936 &rcvFltPktClearParam,
27937 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027938
27939 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027940 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027941
27942
27943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027944 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027945 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027946 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027947 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027948 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027949}
27950
27951/**
27952 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027953
27954 @param pWDICtx: pointer to the WLAN DAL context
27955 pEventData: pointer to the event information structure
27956
Jeff Johnson295189b2012-06-20 16:38:30 -070027957 @see
27958 @return Result of the function call
27959*/
27960WDI_Status
27961WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027962(
Jeff Johnson295189b2012-06-20 16:38:30 -070027963 WDI_ControlBlockType* pWDICtx,
27964 WDI_EventInfoType* pEventData
27965)
27966{
Jeff Johnson295189b2012-06-20 16:38:30 -070027967 eHalStatus halStatus;
27968 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027969 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27970 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27972
27973 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027974 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027975
27976 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027977 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027978 -------------------------------------------------------------------------*/
27979 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27980 ( NULL == pEventData->pEventData ))
27981 {
27982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027983 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027986 }
27987
Jeff Johnsone7245742012-09-05 17:12:55 -070027988 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027989
27990 /*-------------------------------------------------------------------------
27991 Extract response and send it to UMAC
27992 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027993 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27994 {
27995 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27996 pEventData->pEventData,
27997 sizeof(halRcvFltPktSetMcListRsp));
27998
27999 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
28000 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
28001 wdiRcvFltPktSetMcListRspInfo.bssIdx =
28002 halRcvFltPktSetMcListRsp.bssIdx;
28003 }
28004 else
28005 {
28006 halStatus = *((eHalStatus*)pEventData->pEventData);
28007 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28008 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028009
28010 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028011 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028012
Jeff Johnsone7245742012-09-05 17:12:55 -070028013 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028014}
28015
28016/**
28017 @brief Process Set Rsp function (called when a
28018 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028019
28020 @param pWDICtx: pointer to the WLAN DAL context
28021 pEventData: pointer to the event information structure
28022
Jeff Johnson295189b2012-06-20 16:38:30 -070028023 @see
28024 @return Result of the function call
28025*/
28026WDI_Status
28027WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028028(
Jeff Johnson295189b2012-06-20 16:38:30 -070028029 WDI_ControlBlockType* pWDICtx,
28030 WDI_EventInfoType* pEventData
28031)
28032{
Jeff Johnson295189b2012-06-20 16:38:30 -070028033 eHalStatus halStatus;
28034 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028035 tHalSetPktFilterRspParams halSetPktFilterRspParams;
28036 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28038
28039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028040 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028041
28042 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028043 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028044 -------------------------------------------------------------------------*/
28045 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28046 ( NULL == pEventData->pEventData ))
28047 {
28048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028049 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028052 }
28053
28054 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028055 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028056
28057 /*-------------------------------------------------------------------------
28058 Extract response and send it to UMAC
28059 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028060 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28061 {
28062 wpalMemoryCopy( &halSetPktFilterRspParams,
28063 pEventData->pEventData,
28064 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028065
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028066 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
28067 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
28068 }
28069 else
28070 {
28071 halStatus = *((eHalStatus*)pEventData->pEventData);
28072 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28073 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028074 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028075 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028076
Jeff Johnsone7245742012-09-05 17:12:55 -070028077 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028078}
28079
28080/**
28081 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028082
28083 @param pWDICtx: pointer to the WLAN DAL context
28084 pEventData: pointer to the event information structure
28085
Jeff Johnson295189b2012-06-20 16:38:30 -070028086 @see
28087 @return Result of the function call
28088*/
28089WDI_Status
28090WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028091(
Jeff Johnson295189b2012-06-20 16:38:30 -070028092 WDI_ControlBlockType* pWDICtx,
28093 WDI_EventInfoType* pEventData
28094)
28095{
Jeff Johnson295189b2012-06-20 16:38:30 -070028096 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028097 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028098 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28099 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028100
28101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28102
28103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028104 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028105
28106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028108 -------------------------------------------------------------------------*/
28109 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28110 ( NULL == pEventData->pEventData ))
28111 {
28112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028113 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028116 }
28117
Jeff Johnsone7245742012-09-05 17:12:55 -070028118 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028119
28120 /*-------------------------------------------------------------------------
28121 Extract response and send it to UMAC
28122 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028123 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28124 {
28125 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28126 pEventData->pEventData,
28127 sizeof(halRcvFltrPktMatachRsp));
28128
28129 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28130 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28131 }
28132 else
28133 {
28134 halStatus = *((eHalStatus*)pEventData->pEventData);
28135 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28136 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028137
28138 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028139 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028140
Jeff Johnsone7245742012-09-05 17:12:55 -070028141 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028142}
28143
28144/**
28145 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028146
28147 @param pWDICtx: pointer to the WLAN DAL context
28148 pEventData: pointer to the event information structure
28149
Jeff Johnson295189b2012-06-20 16:38:30 -070028150 @see
28151 @return Result of the function call
28152*/
28153WDI_Status
28154WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028155(
Jeff Johnson295189b2012-06-20 16:38:30 -070028156 WDI_ControlBlockType* pWDICtx,
28157 WDI_EventInfoType* pEventData
28158)
28159{
Jeff Johnson295189b2012-06-20 16:38:30 -070028160 eHalStatus halStatus;
28161 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028162 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28163 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28165
28166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028167 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028168
28169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028170 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028171 -------------------------------------------------------------------------*/
28172 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28173 ( NULL == pEventData->pEventData ))
28174 {
28175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028176 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028179 }
28180
28181 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028182 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028183
28184 /*-------------------------------------------------------------------------
28185 Extract response and send it to UMAC
28186 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028187 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28188 {
28189 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28190 pEventData->pEventData,
28191 sizeof(halRcvFltPktClearRspMsg));
28192
28193 wdiRcvFltPktClearRspParamsType.wdiStatus =
28194 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28195 wdiRcvFltPktClearRspParamsType.bssIdx =
28196 halRcvFltPktClearRspMsg.bssIdx;
28197 }
28198 else
28199 {
28200 halStatus = *((eHalStatus*)pEventData->pEventData);
28201 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28202 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028203
28204 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028205 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028206
Jeff Johnsone7245742012-09-05 17:12:55 -070028207 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028208}
28209#endif // WLAN_FEATURE_PACKET_FILTERING
28210
28211/**
28212 @brief Process Shutdown Rsp function
28213 There is no shutdown response comming from HAL
28214 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028215
Jeff Johnson295189b2012-06-20 16:38:30 -070028216 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028217 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028218
28219 @see
28220 @return Result of the function call
28221*/
28222WDI_Status
28223WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028224(
Jeff Johnson295189b2012-06-20 16:38:30 -070028225 WDI_ControlBlockType* pWDICtx,
28226 WDI_EventInfoType* pEventData
28227)
28228{
28229 /*There is no shutdown response comming from HAL - function just kept for
28230 simmetry */
28231 WDI_ASSERT(0);
28232 return WDI_STATUS_SUCCESS;
28233}/*WDI_ProcessShutdownRsp*/
28234
28235/**
28236 @brief WDI_SetPowerParamsReq
28237
Jeff Johnsone7245742012-09-05 17:12:55 -070028238 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028239 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028240
Jeff Johnson295189b2012-06-20 16:38:30 -070028241 wdiPowerParamsCb: callback for passing back the response
28242 of the Set Power Params operation received from the
28243 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028244
Jeff Johnson295189b2012-06-20 16:38:30 -070028245 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028246 callback
28247
Jeff Johnson295189b2012-06-20 16:38:30 -070028248 @return Result of the function call
28249*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028250WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028251WDI_SetPowerParamsReq
28252(
28253 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28254 WDI_SetPowerParamsCb wdiPowerParamsCb,
28255 void* pUserData
28256)
28257{
28258 WDI_EventInfoType wdiEventData;
28259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28260
28261 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028262 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028263 ------------------------------------------------------------------------*/
28264 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28265 {
28266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28267 "WDI API call before module is initialized - Fail request");
28268
Jeff Johnsone7245742012-09-05 17:12:55 -070028269 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028270 }
28271
28272 /*------------------------------------------------------------------------
28273 Fill in Event data and post to the Main FSM
28274 ------------------------------------------------------------------------*/
28275 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028276 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028277 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028278 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028279 wdiEventData.pUserData = pUserData;
28280
28281 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28282}/*WDI_SetPowerParamsReq*/
28283
28284/**
28285 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028286
28287 @param pWDICtx: pointer to the WLAN DAL context
28288 pEventData: pointer to the event information structure
28289
Jeff Johnson295189b2012-06-20 16:38:30 -070028290 @see
28291 @return Result of the function call
28292*/
28293WDI_Status
28294WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028295(
Jeff Johnson295189b2012-06-20 16:38:30 -070028296 WDI_ControlBlockType* pWDICtx,
28297 WDI_EventInfoType* pEventData
28298)
28299{
28300 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28301 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028302 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028303 wpt_uint16 usDataOffset = 0;
28304 wpt_uint16 usSendSize = 0;
28305 tSetPowerParamsType powerParams;
28306
28307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028308 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028309 -------------------------------------------------------------------------*/
28310 if (( NULL == pEventData ) ||
28311 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28312 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28313 {
28314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028315 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028318 }
28319
28320 /*-----------------------------------------------------------------------
28321 Get message buffer
28322 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028324 sizeof(powerParams),
28325 &pSendBuffer, &usDataOffset, &usSendSize))||
28326 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28327 {
28328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028329 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028330 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028333 }
28334
28335 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028336 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028337 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28338
28339 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028340 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028341 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28342
28343 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028344 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028345 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28346
28347 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028348 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028349 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28350
28351 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028352 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028353 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28354
28355 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028356 powerParams.uBETInterval =
28357 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028358
Yue Mac24062f2013-05-13 17:01:29 -070028359 /* MAX LI for modulated DTIM */
28360 powerParams.uMaxLIModulatedDTIM =
28361 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028362
28363 wpalMemoryCopy( pSendBuffer+usDataOffset,
28364 &powerParams,
28365 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028366
28367 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028368 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028369
28370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028371 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028372 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028373 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28374 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028375}
28376
28377/**
28378 @brief Process Power Params Rsp function (called when a
28379 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028380
28381 @param pWDICtx: pointer to the WLAN DAL context
28382 pEventData: pointer to the event information structure
28383
Jeff Johnson295189b2012-06-20 16:38:30 -070028384 @see
28385 @return Result of the function call
28386*/
28387WDI_Status
28388WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028389(
Jeff Johnson295189b2012-06-20 16:38:30 -070028390 WDI_ControlBlockType* pWDICtx,
28391 WDI_EventInfoType* pEventData
28392)
28393{
28394 WDI_Status wdiStatus;
28395 eHalStatus halStatus;
28396 WDI_SetPowerParamsCb wdiPowerParamsCb;
28397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28398
28399 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028400 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028401 -------------------------------------------------------------------------*/
28402 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28403 ( NULL == pEventData->pEventData ))
28404 {
28405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028406 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028409 }
28410
Jeff Johnsone7245742012-09-05 17:12:55 -070028411 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028412
28413 /*-------------------------------------------------------------------------
28414 Extract response and send it to UMAC
28415 -------------------------------------------------------------------------*/
28416 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028417 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028418
28419 /*Notify UMAC*/
28420 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28421
Jeff Johnsone7245742012-09-05 17:12:55 -070028422 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028423}/*WDI_ProcessSetPowerParamsRsp*/
28424
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028425/**
28426 @brief WDI_dhcpStartInd
28427 Host will send an event to the FW when DHCP is initiated
28428
28429 @param
28430 WDI_DHCPInd: DHCP Indication
28431 @see
28432 @return Result of the function call
28433*/
28434WDI_Status
28435WDI_dhcpStartInd
28436(
28437 WDI_DHCPInd *wdiDHCPInd
28438)
28439{
28440 WDI_EventInfoType wdiEventData;
28441
28442 /*------------------------------------------------------------------------
28443 Sanity Check
28444 ------------------------------------------------------------------------*/
28445 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28446 {
28447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28448 "WDI API call before module is initialized - Fail request");
28449
28450 return WDI_STATUS_E_NOT_ALLOWED;
28451 }
28452
28453 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28454 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028455 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028456 wdiEventData.pCBfnc = NULL;
28457 wdiEventData.pUserData = NULL;
28458
28459 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28460}
28461
28462
28463/**
28464 @brief WDI_dhcpStopInd
28465 Host will send an event to the FW when DHCP is completed
28466
28467 @param
28468 WDI_DHCPInd: DHCP Indication
28469 @see
28470 @return Result of the function call
28471*/
28472WDI_Status
28473WDI_dhcpStopInd
28474(
28475 WDI_DHCPInd *wdiDHCPInd
28476)
28477{
28478 WDI_EventInfoType wdiEventData;
28479
28480 /*------------------------------------------------------------------------
28481 Sanity Check
28482 ------------------------------------------------------------------------*/
28483 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28484 {
28485 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28486 "WDI API call before module is initialized - Fail request");
28487
28488 return WDI_STATUS_E_NOT_ALLOWED;
28489 }
28490
28491 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28492 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028493 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028494 wdiEventData.pCBfnc = NULL;
28495 wdiEventData.pUserData = NULL;
28496
28497 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28498}
28499
28500
28501/**
28502 @brief Process DHCP Start Indication message and post it to HAL
28503
28504 @param pWDICtx: pointer to the WLAN DAL context
28505 pEventData: pointer to the event information structure
28506
28507 @see
28508 @return Result of the function call
28509*/
28510WDI_Status
28511WDI_ProcessDHCPStartInd
28512(
28513 WDI_ControlBlockType* pWDICtx,
28514 WDI_EventInfoType* pEventData
28515)
28516{
28517 wpt_uint8* pSendBuffer = NULL;
28518 wpt_uint16 usDataOffset = 0;
28519 wpt_uint16 usSendSize = 0;
28520 wpt_uint16 usLen = 0;
28521 WDI_DHCPInd* pwdiDHCPInd = NULL;
28522 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028523 WDI_Status wdiStatus;
28524
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028525
28526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28527
28528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28529 "%s", __func__);
28530
28531 /*-------------------------------------------------------------------------
28532 Sanity check
28533 -------------------------------------------------------------------------*/
28534 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28535 {
28536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28537 "%s: Invalid parameters", __func__);
28538 WDI_ASSERT(0);
28539 return WDI_STATUS_E_FAILURE;
28540 }
28541 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28542 /*-----------------------------------------------------------------------
28543 Get message buffer
28544 -----------------------------------------------------------------------*/
28545
28546 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28547 WDI_DHCP_START_IND,
28548 sizeof(tDHCPInfo),
28549 &pSendBuffer, &usDataOffset, &usSendSize))||
28550 ( usSendSize < (usDataOffset + usLen )))
28551 {
28552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28553 "Unable to get send buffer in DHCP Start req %p ",
28554 pEventData);
28555 WDI_ASSERT(0);
28556 return WDI_STATUS_E_FAILURE;
28557 }
28558
Sandeep Puligillaee789512014-02-13 19:14:52 +053028559 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028560 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28561 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28562 WDI_MAC_ADDR_LEN);
28563
28564 pWDICtx->pReqStatusUserData = NULL;
28565 pWDICtx->pfncRspCB = NULL;
28566
28567 /*-------------------------------------------------------------------------
28568 Send DHCP Start Indication to HAL
28569 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028570 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28571 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028572}/*WDI_ProcessDHCPStartInd*/
28573
28574/**
28575 @brief Process DHCP Stop indication message and post it to HAL
28576
28577 @param pWDICtx: pointer to the WLAN DAL context
28578 pEventData: pointer to the event information structure
28579
28580 @see
28581 @return Result of the function call
28582*/
28583WDI_Status
28584WDI_ProcessDHCPStopInd
28585(
28586 WDI_ControlBlockType* pWDICtx,
28587 WDI_EventInfoType* pEventData
28588)
28589{
28590 wpt_uint8* pSendBuffer = NULL;
28591 wpt_uint16 usDataOffset = 0;
28592 wpt_uint16 usSendSize = 0;
28593 wpt_uint16 usLen = 0;
28594 WDI_DHCPInd* pwdiDHCPInd = NULL;
28595 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028596 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028597
28598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28599
28600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28601 "%s", __func__);
28602
28603 /*-------------------------------------------------------------------------
28604 Sanity check
28605 -------------------------------------------------------------------------*/
28606
28607 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28608 {
28609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28610 "%s: Invalid parameters", __func__);
28611 WDI_ASSERT(0);
28612 return WDI_STATUS_E_FAILURE;
28613 }
28614 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28615 /*-----------------------------------------------------------------------
28616 Get message buffer
28617 -----------------------------------------------------------------------*/
28618
28619 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28620 WDI_DHCP_STOP_IND,
28621 sizeof(tDHCPInfo),
28622 &pSendBuffer, &usDataOffset, &usSendSize))||
28623 ( usSendSize < (usDataOffset + usLen )))
28624 {
28625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28626 "Unable to get send buffer in DHCP Start req %p ",
28627 pEventData);
28628 WDI_ASSERT(0);
28629 return WDI_STATUS_E_FAILURE;
28630 }
28631
Sandeep Puligillaee789512014-02-13 19:14:52 +053028632 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028633 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28634 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28635 WDI_MAC_ADDR_LEN);
28636
28637 pWDICtx->pReqStatusUserData = NULL;
28638 pWDICtx->pfncRspCB = NULL;
28639 /*-------------------------------------------------------------------------
28640 Send DHCP Stop indication to HAL
28641 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028642 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28643 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028644
28645}/*WDI_ProcessDHCPStopInd*/
28646
28647
Jeff Johnson295189b2012-06-20 16:38:30 -070028648#ifdef WLAN_FEATURE_GTK_OFFLOAD
28649/**
28650 @brief WDI_GTKOffloadReq will be called when the upper MAC
28651 wants to set GTK Rekey Counter while in power save. Upon
28652 the call of this API the WLAN DAL will pack and send a
28653 HAL GTK offload request message to the lower RIVA
28654 sub-system if DAL is in state STARTED.
28655
28656 In state BUSY this request will be queued. Request won't
28657 be allowed in any other state.
28658
28659 WDI_PostAssocReq must have been called.
28660
28661 @param pwdiGtkOffloadParams: the GTK offload as specified
28662 by the Device Interface
28663
28664 wdiGtkOffloadCb: callback for passing back the response
28665 of the GTK offload operation received from the device
28666
28667 pUserData: user data will be passed back with the
28668 callback
28669
28670 @see WDI_PostAssocReq
28671 @return Result of the function call
28672*/
28673WDI_Status
28674WDI_GTKOffloadReq
28675(
28676 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28677 WDI_GtkOffloadCb wdiGtkOffloadCb,
28678 void* pUserData
28679)
28680{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028681 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28683
28684 /*------------------------------------------------------------------------
28685 Sanity Check
28686 ------------------------------------------------------------------------*/
28687 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28688 {
28689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28690 "WDI API call before module is initialized - Fail request");
28691
28692 return WDI_STATUS_E_NOT_ALLOWED;
28693 }
28694
28695 /*------------------------------------------------------------------------
28696 Fill in Event data and post to the Main FSM
28697 ------------------------------------------------------------------------*/
28698 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28699 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028700 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028701 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28702 wdiEventData.pUserData = pUserData;
28703
28704 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28705}
28706
28707
28708/**
28709 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28710 MAC wants to get GTK Rekey Counter while in power save.
28711 Upon the call of this API the WLAN DAL will pack and
28712 send a HAL GTK offload request message to the lower RIVA
28713 sub-system if DAL is in state STARTED.
28714
28715 In state BUSY this request will be queued. Request won't
28716 be allowed in any other state.
28717
28718 WDI_PostAssocReq must have been called.
28719
28720 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28721 Information Message as specified by the
28722 Device Interface
28723
28724 wdiGtkOffloadGetInfoCb: callback for passing back the
28725 response of the GTK offload operation received from the
28726 device
28727
28728 pUserData: user data will be passed back with the
28729 callback
28730
28731 @see WDI_PostAssocReq
28732 @return Result of the function call
28733*/
28734WDI_Status
28735WDI_GTKOffloadGetInfoReq
28736(
28737 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28738 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28739 void* pUserData
28740)
28741{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028742 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028743 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28744
28745 /*------------------------------------------------------------------------
28746 Sanity Check
28747 ------------------------------------------------------------------------*/
28748 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28749 {
28750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28751 "WDI API call before module is initialized - Fail request");
28752
28753 return WDI_STATUS_E_NOT_ALLOWED;
28754 }
28755
28756 /*------------------------------------------------------------------------
28757 Fill in Event data and post to the Main FSM
28758 ------------------------------------------------------------------------*/
28759 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28760 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28761 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28762 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28763 wdiEventData.pUserData = pUserData;
28764
28765 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28766}
28767
28768
28769/**
28770 @brief Process set GTK Offload Request function
28771
28772 @param pWDICtx: pointer to the WLAN DAL context
28773 pEventData: pointer to the event information structure
28774
28775 @see
28776 @return Result of the function call
28777*/
28778WDI_Status
28779WDI_ProcessGTKOffloadReq
28780(
28781 WDI_ControlBlockType* pWDICtx,
28782 WDI_EventInfoType* pEventData
28783)
28784{
28785 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28786 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28787 wpt_uint8* pSendBuffer = NULL;
28788 wpt_uint16 usDataOffset = 0;
28789 wpt_uint16 usSendSize = 0;
28790 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028791 wpt_uint8 ucCurrentSessionId = 0;
28792 WDI_BSSSessionType* pBSSSes = NULL;
28793
Jeff Johnson295189b2012-06-20 16:38:30 -070028794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28795
28796 /*-------------------------------------------------------------------------
28797 Sanity check
28798 -------------------------------------------------------------------------*/
28799 if (( NULL == pEventData ) ||
28800 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28801 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28802 {
28803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028805 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028806 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028807 }
28808
28809 /*-----------------------------------------------------------------------
28810 Get message buffer
28811 -----------------------------------------------------------------------*/
28812 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28813 sizeof(gtkOffloadReqParams),
28814 &pSendBuffer, &usDataOffset, &usSendSize))||
28815 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28816 {
28817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028818 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028819 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28820 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028821 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028822 }
28823
28824 //
28825 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28826 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028827 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28828 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28829 &pBSSSes);
28830 if ( NULL == pBSSSes )
28831 {
28832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028833 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028834 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028835 }
28836
28837 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28838
Jeff Johnson295189b2012-06-20 16:38:30 -070028839 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28840 // Copy KCK
28841 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28842 // Copy KEK
28843 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28844 // Copy KeyReplayCounter
28845 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28846
28847 wpalMemoryCopy( pSendBuffer+usDataOffset,
28848 &gtkOffloadReqParams,
28849 sizeof(gtkOffloadReqParams));
28850
28851 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28852 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28853
28854 /*-------------------------------------------------------------------------
28855 Send Get STA Request to HAL
28856 -------------------------------------------------------------------------*/
28857 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28858 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028859
28860fail:
28861 // Release the message buffer so we don't leak
28862 wpalMemoryFree(pSendBuffer);
28863
28864failRequest:
28865 //WDA should have failure check to avoid the memory leak
28866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028867}
28868
28869
28870/**
28871 @brief Process GTK Offload Get Information Request function
28872
28873 @param pWDICtx: pointer to the WLAN DAL context
28874 pEventData: pointer to the event information structure
28875
28876 @see
28877 @return Result of the function call
28878*/
28879WDI_Status
28880WDI_ProcessGTKOffloadGetInfoReq
28881(
28882 WDI_ControlBlockType* pWDICtx,
28883 WDI_EventInfoType* pEventData
28884)
28885{
28886 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28887 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28888 wpt_uint8* pSendBuffer = NULL;
28889 wpt_uint16 usDataOffset = 0;
28890 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028891 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28892 wpt_uint8 ucCurrentSessionId = 0;
28893 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028894
28895 /*-------------------------------------------------------------------------
28896 Sanity check
28897 -------------------------------------------------------------------------*/
28898 if (( NULL == pEventData ) ||
28899 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28900 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28901 {
28902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028903 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028904 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028905 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028906 }
28907
28908 /*-----------------------------------------------------------------------
28909 Get message buffer
28910 -----------------------------------------------------------------------*/
28911 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028912 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028913 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028914 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028915 {
28916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028917 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028918 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28919 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028920 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028921 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028922 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28923 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28924 &pBSSSes);
28925 if ( NULL == pBSSSes )
28926 {
28927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028928 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028929 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028930 }
28931 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028932
28933 //
28934 // Don't need to fill send buffer other than header
28935 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028936 wpalMemoryCopy( pSendBuffer+usDataOffset,
28937 &halGtkOffloadGetInfoReqParams,
28938 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028939
28940 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28941 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28942
28943 /*-------------------------------------------------------------------------
28944 Send Get STA Request to HAL
28945 -------------------------------------------------------------------------*/
28946 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28947 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028948fail:
28949 // Release the message buffer so we don't leak
28950 wpalMemoryFree(pSendBuffer);
28951
28952failRequest:
28953 //WDA should have failure check to avoid the memory leak
28954 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028955}
28956
28957/**
28958 @brief Process host offload Rsp function (called when a
28959 response is being received over the bus from HAL)
28960
28961 @param pWDICtx: pointer to the WLAN DAL context
28962 pEventData: pointer to the event information structure
28963
28964 @see
28965 @return Result of the function call
28966*/
28967WDI_Status
28968WDI_ProcessGtkOffloadRsp
28969(
28970 WDI_ControlBlockType* pWDICtx,
28971 WDI_EventInfoType* pEventData
28972)
28973{
Jeff Johnson295189b2012-06-20 16:38:30 -070028974 eHalStatus halStatus;
28975 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028976 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28977 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028978
28979 /*-------------------------------------------------------------------------
28980 Sanity check
28981 -------------------------------------------------------------------------*/
28982 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28983 ( NULL == pEventData->pEventData))
28984 {
28985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028986 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028987 WDI_ASSERT(0);
28988 return WDI_STATUS_E_FAILURE;
28989 }
28990
Wilson Yang00256342013-10-10 23:13:38 -070028991 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28992
Jeff Johnson295189b2012-06-20 16:38:30 -070028993 /*-------------------------------------------------------------------------
28994 Extract response and send it to UMAC
28995 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028996 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28997 {
28998 wpalMemoryCopy( &halGtkOffloadRspParams,
28999 pEventData->pEventData,
29000 sizeof(halGtkOffloadRspParams));
29001
29002 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029003 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029004 wdiGtkOffloadRsparams.bssIdx =
29005 halGtkOffloadRspParams.bssIdx;
29006 }
29007 else
29008 {
29009 halStatus = *((eHalStatus*)pEventData->pEventData);
29010 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29011 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029012
29013 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029014 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029015
29016 return WDI_STATUS_SUCCESS;
29017}
29018
29019/**
29020 @brief Process GTK Offload Get Information Response function
29021
29022 @param pWDICtx: pointer to the WLAN DAL context
29023 pEventData: pointer to the event information structure
29024
29025 @see
29026 @return Result of the function call
29027*/
29028WDI_Status
29029WDI_ProcessGTKOffloadGetInfoRsp
29030(
29031 WDI_ControlBlockType* pWDICtx,
29032 WDI_EventInfoType* pEventData
29033)
29034{
Jeff Johnson295189b2012-06-20 16:38:30 -070029035 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029036 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029037 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
29038 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029039 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029040
Jeff Johnson295189b2012-06-20 16:38:30 -070029041
29042 /*-------------------------------------------------------------------------
29043 Sanity check
29044 -------------------------------------------------------------------------*/
29045 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29046 ( NULL == pEventData->pEventData ))
29047 {
29048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029049 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029050 WDI_ASSERT(0);
29051 return WDI_STATUS_E_FAILURE;
29052 }
29053
Wilson Yang00256342013-10-10 23:13:38 -070029054 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
29055
29056 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070029057 Extract response and send it to UMAC
29058 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029059 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29060 {
29061 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
29062 pEventData->pEventData,
29063 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029064
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029065 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029066 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029067 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
29068 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
29069 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
29070 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
29071 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
29072 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
29073 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
29074 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029075
29076 wpalMutexAcquire(&pWDICtx->wptMutex);
29077 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
29078 &pBSSSes);
29079
29080 if ( NULL == pBSSSes )
29081 {
29082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29083 "Association sequence for this BSS does not exist or "
29084 "association no longer in progress - mysterious HAL response");
29085 wpalMutexRelease(&pWDICtx->wptMutex);
29086 return WDI_STATUS_E_NOT_ALLOWED;
29087 }
29088
29089 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29090 sizeof (wpt_macAddr));
29091 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029092 }
29093 else
29094 {
29095 halStatus = *((eHalStatus*)pEventData->pEventData);
29096 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29097 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029098 /*Notify UMAC*/
29099 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29100 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029101 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029102
29103 return WDI_STATUS_SUCCESS;
29104}
29105#endif // WLAN_FEATURE_GTK_OFFLOAD
29106
29107#ifdef WLAN_WAKEUP_EVENTS
29108WDI_Status
29109WDI_ProcessWakeReasonInd
29110(
29111 WDI_ControlBlockType* pWDICtx,
29112 WDI_EventInfoType* pEventData
29113)
29114{
29115 WDI_LowLevelIndType *pWdiInd;
29116 tpWakeReasonParams pWakeReasonParams;
29117 wpt_uint32 allocSize = 0;
29118
29119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029120 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029121
29122 /*-------------------------------------------------------------------------
29123 Sanity check
29124 -------------------------------------------------------------------------*/
29125 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29126 ( NULL == pEventData->pEventData ))
29127 {
29128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029129 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029130 WDI_ASSERT( 0 );
29131 return WDI_STATUS_E_FAILURE;
29132 }
29133
29134 /*-------------------------------------------------------------------------
29135 Extract indication and send it to UMAC
29136 -------------------------------------------------------------------------*/
29137 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
29138
29139 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
29140
29141 //Allocate memory for WDI_WakeReasonIndType structure
29142 pWdiInd = wpalMemoryAllocate(allocSize) ;
29143
29144 if(NULL == pWdiInd)
29145 {
29146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029147 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029148 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029149 WDI_ASSERT(0);
29150 return WDI_STATUS_E_FAILURE;
29151 }
29152
29153 wpalMemoryZero(pWdiInd, allocSize);
29154
29155 /* Fill in the indication parameters*/
29156 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29157 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29158 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29159 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29160 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29161 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29162 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29163 &(pWakeReasonParams->aDataStart[0]),
29164 pWakeReasonParams->ulStoredDataLen);
29165
ltimariub77f24b2013-01-24 18:54:33 -080029166
29167 if ( pWDICtx->wdiLowLevelIndCB )
29168 {
29169 /*Notify UMAC*/
29170 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29171 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029172
29173 //Free memory allocated for WDI_WakeReasonIndType structure
29174 wpalMemoryFree(pWdiInd);
29175
29176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029177 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029178
29179 return WDI_STATUS_SUCCESS;
29180}
29181#endif // WLAN_WAKEUP_EVENTS
29182
29183void WDI_GetWcnssCompiledApiVersion
29184(
29185 WDI_WlanVersionType *pWcnssApiVersion
29186)
29187{
29188 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29189 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29190 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29191 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29192}
29193
29194/**
29195 @brief Process Set TM Level Rsp function (called when a
29196 response is being received over the bus from HAL)
29197
29198 @param pWDICtx: pointer to the WLAN DAL context
29199 pEventData: pointer to the event information structure
29200
29201 @see
29202 @return Result of the function call
29203*/
29204WDI_Status
29205WDI_ProcessSetTmLevelRsp
29206(
29207 WDI_ControlBlockType* pWDICtx,
29208 WDI_EventInfoType* pEventData
29209)
29210{
29211 WDI_Status wdiStatus;
29212 eHalStatus halStatus;
29213 WDI_SetTmLevelCb wdiSetTmLevelCb;
29214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29215
29216 /*-------------------------------------------------------------------------
29217 Sanity check
29218 -------------------------------------------------------------------------*/
29219 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29220 ( NULL == pEventData->pEventData ))
29221 {
29222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029223 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029224 WDI_ASSERT(0);
29225 return WDI_STATUS_E_FAILURE;
29226 }
29227
29228 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29229
29230 /*-------------------------------------------------------------------------
29231 Extract response and send it to UMAC
29232 -------------------------------------------------------------------------*/
29233 halStatus = *((eHalStatus*)pEventData->pEventData);
29234 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29235
29236 /*Notify UMAC*/
29237 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29238
29239 return WDI_STATUS_SUCCESS;
29240}/*WDI_ProcessSetTmLevelRsp*/
29241
29242/**
29243 @brief Process Set Thermal Mitigation level Changed request
29244
29245 @param pWDICtx: pointer to the WLAN DAL context
29246 pEventData: pointer to the event information structure
29247
29248 @see
29249 @return Result of the function call
29250*/
29251WDI_Status
29252WDI_ProcessSetTmLevelReq
29253(
29254 WDI_ControlBlockType* pWDICtx,
29255 WDI_EventInfoType* pEventData
29256)
29257{
29258 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29259 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29260 wpt_uint8* pSendBuffer = NULL;
29261 wpt_uint16 usDataOffset = 0;
29262 wpt_uint16 usSendSize = 0;
29263 tSetThermalMitgationType halTmMsg;
29264
29265 /*-------------------------------------------------------------------------
29266 Sanity check
29267 -------------------------------------------------------------------------*/
29268 if (( NULL == pEventData ) ||
29269 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29270 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29271 {
29272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029273 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029274 WDI_ASSERT(0);
29275 return WDI_STATUS_E_FAILURE;
29276 }
29277
29278 /*-----------------------------------------------------------------------
29279 Get message buffer
29280 -----------------------------------------------------------------------*/
29281 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29282 sizeof(halTmMsg),
29283 &pSendBuffer, &usDataOffset, &usSendSize))||
29284 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29285 {
29286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029287 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029288 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29289 WDI_ASSERT(0);
29290 return WDI_STATUS_E_FAILURE;
29291 }
29292
29293 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29294 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29295
29296 wpalMemoryCopy( pSendBuffer+usDataOffset,
29297 &halTmMsg,
29298 sizeof(halTmMsg));
29299
29300 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29301 pWDICtx->pfncRspCB = NULL;
29302 /*-------------------------------------------------------------------------
29303 Send Get STA Request to HAL
29304 -------------------------------------------------------------------------*/
29305 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29306 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29307}
29308
29309/* Fill the value from the global features enabled array to the global capabilities
29310 * bitmap struct
29311 */
29312static void
29313FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29314{
29315 wpt_int8 i;
29316 for (i=0; i<len; i++)
29317 {
29318 setFeatCaps(fCaps, enabledFeat[i]);
29319 }
29320}
29321
29322/**
29323 @brief WDI_featureCapsExchangeReq
29324 Post feature capability bitmap exchange event.
29325 Host will send its own capability to FW in this req and
29326 expect FW to send its capability back as a bitmap in Response
29327
29328 @param
29329
29330 wdiFeatureCapsExchangeCb: callback called on getting the response.
29331 It is kept to mantain similarity between WDI reqs and if needed, can
29332 be used in future. Currently, It is set to NULL
29333
29334 pUserData: user data will be passed back with the
29335 callback
29336
29337 @see
29338 @return Result of the function call
29339*/
29340WDI_Status
29341WDI_featureCapsExchangeReq
29342(
29343 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29344 void* pUserData
29345)
29346{
29347 WDI_EventInfoType wdiEventData;
29348 wpt_int32 fCapsStructSize;
29349
29350 /*------------------------------------------------------------------------
29351 Sanity Check
29352 ------------------------------------------------------------------------*/
29353 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29354 {
29355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29356 "WDI API call before module is initialized - Fail request");
29357
29358 return WDI_STATUS_E_NOT_ALLOWED;
29359 }
29360
29361 /* Allocate memory separately for global variable carrying FW caps */
29362 fCapsStructSize = sizeof(tWlanFeatCaps);
29363 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29364 if ( NULL == gpHostWlanFeatCaps )
29365 {
29366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029367 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029368 WDI_ASSERT(0);
29369 return WDI_STATUS_MEM_FAILURE;
29370 }
29371
29372 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29373
29374 /*------------------------------------------------------------------------
29375 Fill in Event data and post to the Main FSM
29376 ------------------------------------------------------------------------*/
29377 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29378 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Ratheesh S P36dbc932015-08-07 14:28:57 +053029379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029380 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029381 gpHostWlanFeatCaps->featCaps[0],
29382 gpHostWlanFeatCaps->featCaps[1],
29383 gpHostWlanFeatCaps->featCaps[2],
29384 gpHostWlanFeatCaps->featCaps[3]
29385 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Host Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029387 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029388 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29389 wdiEventData.pEventData = gpHostWlanFeatCaps;
29390 wdiEventData.uEventDataSize = fCapsStructSize;
29391 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29392 wdiEventData.pUserData = pUserData;
29393
29394 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29395}
29396
29397/**
Yathish9f22e662012-12-10 14:21:35 -080029398 @brief Disable Active mode offload in Host
29399
29400 @param void
29401 @see
29402 @return void
29403*/
29404void
29405WDI_disableCapablityFeature(wpt_uint8 feature_index)
29406{
29407 supportEnabledFeatures[feature_index] = 0;
29408 return;
29409}
29410
29411/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029412 @brief Process Host-FW Capability Exchange Request function
29413
29414 @param pWDICtx: pointer to the WLAN DAL context
29415 pEventData: pointer to the event information structure
29416
29417 @see
29418 @return Result of the function call
29419*/
29420WDI_Status
29421WDI_ProcessFeatureCapsExchangeReq
29422(
29423 WDI_ControlBlockType* pWDICtx,
29424 WDI_EventInfoType* pEventData
29425)
29426{
29427 wpt_uint8* pSendBuffer = NULL;
29428 wpt_uint16 usDataOffset = 0;
29429 wpt_uint16 usSendSize = 0;
29430 wpt_uint16 usLen = 0;
29431
29432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29433
29434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029435 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029436
29437 /*-------------------------------------------------------------------------
29438 Sanity check
29439 -------------------------------------------------------------------------*/
29440 /* Call back function is NULL since not required for cap exchange req */
29441 if (( NULL == pEventData ) ||
29442 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29443 {
29444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029446 WDI_ASSERT(0);
29447 return WDI_STATUS_E_FAILURE;
29448 }
29449
29450 /*-----------------------------------------------------------------------
29451 Get message buffer
29452 -----------------------------------------------------------------------*/
29453 usLen = sizeof(tWlanFeatCaps);
29454
29455 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29456 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29457 usLen,
29458 &pSendBuffer, &usDataOffset, &usSendSize))||
29459 ( usSendSize < (usDataOffset + usLen )))
29460 {
29461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029462 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029463 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29464 WDI_ASSERT(0);
29465 return WDI_STATUS_E_FAILURE;
29466 }
29467
29468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029469 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029470 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29471 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29472 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29473 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29474 );
29475
29476 /* Copy host caps after the offset in the send buffer */
29477 wpalMemoryCopy( pSendBuffer+usDataOffset,
29478 (tWlanFeatCaps *)pEventData->pEventData,
29479 usLen);
29480
29481 /*-------------------------------------------------------------------------
29482 Send Start Request to HAL
29483 -------------------------------------------------------------------------*/
29484 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29485 (WDI_StartRspCb)pEventData->pCBfnc,
29486 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29487
29488}/*WDI_ProcessFeatureCapsExchangeReq*/
29489
29490/**
29491 @brief Process Host-FW Capability Exchange Response function
29492
29493 @param pWDICtx: pointer to the WLAN DAL context
29494 pEventData: pointer to the event information structure
29495
29496 @see
29497 @return Result of the function call
29498*/
29499WDI_Status
29500WDI_ProcessFeatureCapsExchangeRsp
29501(
29502 WDI_ControlBlockType* pWDICtx,
29503 WDI_EventInfoType* pEventData
29504)
29505{
29506 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29507 wpt_int32 fCapsStructSize;
29508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29509
29510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029511 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029512
29513 /*-------------------------------------------------------------------------
29514 Sanity check
29515 -------------------------------------------------------------------------*/
29516 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29517 ( NULL == pEventData->pEventData ))
29518 {
29519 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029522 WDI_ASSERT(0);
29523 return WDI_STATUS_E_FAILURE;
29524 }
29525
29526 /* Allocate memory separately for global variable carrying FW caps */
29527 fCapsStructSize = sizeof(tWlanFeatCaps);
29528 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29529 if ( NULL == gpFwWlanFeatCaps )
29530 {
29531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029532 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029533 WDI_ASSERT(0);
29534 return WDI_STATUS_MEM_FAILURE;
29535 }
29536
29537 /*-------------------------------------------------------------------------
29538 Unpack HAL Response Message - the header was already extracted by the
29539 main Response Handling procedure
29540 -------------------------------------------------------------------------*/
29541 /*-------------------------------------------------------------------------
29542 Extract response and send it to UMAC
29543 -------------------------------------------------------------------------*/
29544
29545 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29546 fCapsStructSize);
Ratheesh S P36dbc932015-08-07 14:28:57 +053029547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029548 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029549 gpFwWlanFeatCaps->featCaps[0],
29550 gpFwWlanFeatCaps->featCaps[1],
29551 gpFwWlanFeatCaps->featCaps[2],
29552 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029553 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Firmware Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029555 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029556 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29557
29558 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29559 if (wdiFeatureCapsExchangeCb != NULL)
29560 wdiFeatureCapsExchangeCb(NULL, NULL);
29561
29562 return WDI_STATUS_SUCCESS;
29563}
29564
Mohit Khanna4a70d262012-09-11 16:30:12 -070029565#ifdef WLAN_FEATURE_11AC
29566WDI_Status
29567WDI_ProcessUpdateVHTOpModeRsp
29568(
29569 WDI_ControlBlockType* pWDICtx,
29570 WDI_EventInfoType* pEventData
29571)
29572{
29573 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29574 WDI_Status wdiStatus;
29575 eHalStatus halStatus;
29576
29577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29578
29579 /*-------------------------------------------------------------------------
29580 Sanity check
29581 -------------------------------------------------------------------------*/
29582 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29583 ( NULL == pEventData->pEventData))
29584 {
29585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029586 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029587 WDI_ASSERT(0);
29588 return WDI_STATUS_E_FAILURE;
29589 }
29590 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29591
29592 /*-------------------------------------------------------------------------
29593 Extract response and send it to UMAC
29594 -------------------------------------------------------------------------*/
29595 halStatus = *((eHalStatus*)pEventData->pEventData);
29596 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29597
29598 /*Notify UMAC*/
29599 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29600
29601 return WDI_STATUS_SUCCESS;
29602}
29603#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029604/**
29605 @brief WDI_getHostWlanFeatCaps
29606 WDI API that returns whether the feature passed to it as enum value in
29607 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29608 variable storing host capability bitmap to find this. This can be used by
29609 other moduels to decide certain things like call different APIs based on
29610 whether a particular feature is supported.
29611
29612 @param
29613
29614 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29615
29616 @see
29617 @return
29618 0 - if the feature is NOT supported in host
29619 any non-zero value - if the feature is SUPPORTED in host.
29620*/
29621wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29622{
29623 wpt_uint8 featSupported = 0;
29624 if (gpHostWlanFeatCaps != NULL)
29625 {
29626 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29627 }
29628 else
29629 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029631 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029632 }
29633 return featSupported;
29634}
29635
29636/**
29637 @brief WDI_getFwWlanFeatCaps
29638 WDI API that returns whether the feature passed to it as enum value in
29639 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29640 variable storing host capability bitmap to find this. This can be used by
29641 other moduels to decide certain things like call different APIs based on
29642 whether a particular feature is supported.
29643
29644 @param
29645
29646 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29647 in wlan_hal_msg.h.
29648
29649 @see
29650 @return
29651 0 - if the feature is NOT supported in FW
29652 any non-zero value - if the feature is SUPPORTED in FW.
29653*/
29654wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29655{
29656 wpt_uint8 featSupported = 0;
29657 if (gpFwWlanFeatCaps != NULL)
29658 {
29659 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29660 }
29661 else
29662 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029664 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029665 }
29666 return featSupported;
29667}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029668
Katya Nigamf0511f62015-05-05 16:40:57 +053029669wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
29670{
29671 /* 5gHz Channel */
29672 if( channel >= 34 && channel <= 165 )
29673 {
29674 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
29675 {
29676 if ( channel== 36 || channel == 52 || channel == 100 ||
29677 channel == 116 || channel == 149 )
29678 {
29679 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
29680 }
29681 else if ( channel == 40 || channel == 56 || channel == 104 ||
29682 channel == 120 || channel == 153 )
29683 {
29684 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
29685 }
29686 else if ( channel == 44 || channel == 60 || channel == 108 ||
29687 channel == 124 || channel == 157 )
29688 {
29689 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
29690 }
29691 else if ( channel == 48 || channel == 64 || channel == 112 ||
29692 channel == 128 || channel == 144 || channel == 161 )
29693 {
29694 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
29695 }
29696 else if ( channel == 165 )
29697 {
29698 return PHY_SINGLE_CHANNEL_CENTERED;
29699 }
29700 }
29701
29702 else
29703 {
29704 if ( channel== 40 || channel == 48 || channel == 56 ||
29705 channel == 64 || channel == 104 || channel == 112 ||
29706 channel == 120 || channel == 128 || channel == 136 ||
29707 channel == 144 || channel == 153 || channel == 161 )
29708 {
29709 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29710 }
29711 else if ( channel== 36 || channel == 44 || channel == 52 ||
29712 channel == 60 || channel == 100 || channel == 108 ||
29713 channel == 116 || channel == 124 || channel == 132 ||
29714 channel == 140 || channel == 149 || channel == 157 )
29715 {
29716 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29717 }
29718 else if ( channel == 165 )
29719 {
29720 return PHY_SINGLE_CHANNEL_CENTERED;
29721 }
29722 }
29723 }
29724
29725 /* 2.4Ghz Channel */
29726 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
29727 {
29728 if (channel >= 1 && channel <= 7)
29729 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29730 else if (channel >= 8 && channel <= 13)
29731 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29732 else if (channel ==14)
29733 return PHY_SINGLE_CHANNEL_CENTERED;
29734 }
29735 return PHY_SINGLE_CHANNEL_CENTERED;
29736}
29737
Mohit Khanna4a70d262012-09-11 16:30:12 -070029738#ifdef WLAN_FEATURE_11AC
29739WDI_Status
29740WDI_ProcessUpdateVHTOpModeReq
29741(
29742 WDI_ControlBlockType* pWDICtx,
29743 WDI_EventInfoType* pEventData
29744)
29745{
29746 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29747 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29748 wpt_uint8* pSendBuffer = NULL;
29749 wpt_uint16 usDataOffset = 0;
29750 wpt_uint16 usSendSize = 0;
29751
29752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29753
29754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029755 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029756
29757 /*-------------------------------------------------------------------------
29758 Sanity check
29759 -------------------------------------------------------------------------*/
29760 if (( NULL == pEventData ) ||
29761 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29762 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29763 {
29764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029765 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029766 WDI_ASSERT(0);
29767 return WDI_STATUS_E_FAILURE;
29768 }
29769
29770 /*-----------------------------------------------------------------------
29771 Get message buffer
29772 -----------------------------------------------------------------------*/
29773 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29774 sizeof(WDI_UpdateVHTOpMode),
29775 &pSendBuffer, &usDataOffset, &usSendSize))||
29776 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29777 {
29778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29779 "Unable to get send buffer in update vht opMode req");
29780 WDI_ASSERT(0);
29781 return WDI_STATUS_E_FAILURE;
29782 }
29783
29784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029785 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029786
29787 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29788 sizeof(WDI_UpdateVHTOpMode));
29789
29790 /*-------------------------------------------------------------------------
29791 Send Start Request to HAL
29792 -------------------------------------------------------------------------*/
29793 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29794 wdiVHTOpModeCb,
29795 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29796
29797}
29798
29799WDI_Status
29800WDI_UpdateVHTOpModeReq
29801(
29802 WDI_UpdateVHTOpMode *pData,
29803 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29804 void* pUserData
29805)
29806{
29807 WDI_EventInfoType wdiEventData;
29808
29809 /*------------------------------------------------------------------------
29810 Sanity Check
29811 ------------------------------------------------------------------------*/
29812 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29813 {
29814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29815 "WDI API call before module is initialized - Fail request");
29816
29817 return WDI_STATUS_E_NOT_ALLOWED;
29818 }
29819
29820 /*------------------------------------------------------------------------
29821 Fill in Event data and post to the Main FSM
29822 ------------------------------------------------------------------------*/
29823 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29824 wdiEventData.pEventData = pData;
29825 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29826 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29827 wdiEventData.pUserData = pUserData;
29828
29829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029830 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029831
29832 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29833
29834}
29835#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029836
29837/**
29838 @brief WDI_TransportChannelDebug -
29839 Display DXE Channel debugging information
29840 User may request to display DXE channel snapshot
29841 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029842
Jeff Johnsonb88db982012-12-10 13:34:59 -080029843 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029844 @param debugFlags : Enable stall detect features
29845 defined by WPAL_DeviceDebugFlags
29846 These features may effect
29847 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029848 @see
29849 @return none
29850*/
29851void WDI_TransportChannelDebug
29852(
29853 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029854 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029855)
29856{
Mihir Shete40a55652014-03-02 14:14:47 +053029857 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029858 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029859}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029860/**
29861 @brief WDI_SsrTimerCB
29862 Callback function for SSR timer, if this is called then the graceful
29863 shutdown for Riva did not happen.
29864
29865 @param pUserData : user data to timer
29866
29867 @see
29868 @return none
29869*/
29870void
29871WDI_SsrTimerCB
29872(
29873 void *pUserData
29874)
29875{
29876 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29878
29879 if (NULL == pWDICtx )
29880 {
29881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029882 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029883 WDI_ASSERT(0);
29884 return;
29885 }
29886 wpalRivaSubystemRestart();
29887
29888 return;
29889
29890}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029891
29892/**
29893 @brief WDI_SetEnableSSR -
29894 This API is called to enable/disable SSR on WDI timeout.
29895
29896 @param enableSSR : enable/disable SSR
29897
29898 @see
29899 @return none
29900*/
29901void WDI_SetEnableSSR(wpt_boolean enableSSR)
29902{
29903 gWDICb.bEnableSSR = enableSSR;
29904}
Leo Chang9056f462013-08-01 19:21:11 -070029905
29906
29907#ifdef FEATURE_WLAN_LPHB
29908/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029909 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029910 This function will be invoked when FW detects low power
29911 heart beat failure
29912
29913 @param pWDICtx : wdi context
29914 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029915 @see
29916 @return Result of the function call
29917*/
29918WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029919WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029920(
29921 WDI_ControlBlockType* pWDICtx,
29922 WDI_EventInfoType* pEventData
29923)
29924{
29925 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029926 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29928
29929 /*-------------------------------------------------------------------------
29930 Sanity check
29931 -------------------------------------------------------------------------*/
29932 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29933 (NULL == pEventData->pEventData))
29934 {
29935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29936 "%s: Invalid parameters", __func__);
29937 WDI_ASSERT(0);
29938 return WDI_STATUS_E_FAILURE;
29939 }
29940
29941 /*-------------------------------------------------------------------------
29942 Extract indication and send it to UMAC
29943 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029944 wpalMemoryCopy(&lphbIndicationParam,
29945 pEventData->pEventData,
29946 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029947
Leo Changd9df8aa2013-09-26 13:32:26 -070029948 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029949 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029950 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029951 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029952 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029953 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029954 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029955 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029956 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029957 /*Notify UMAC*/
29958 if (pWDICtx->wdiLowLevelIndCB)
29959 {
29960 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29961 }
29962
29963 return WDI_STATUS_SUCCESS;
29964}
29965
29966/**
29967 @brief WDI_ProcessLphbCfgRsp -
29968 LPHB configuration response from FW
29969
29970 @param pWDICtx : wdi context
29971 pEventData : indication data
29972
29973 @see
29974 @return Result of the function call
29975*/
29976WDI_Status WDI_ProcessLphbCfgRsp
29977(
29978 WDI_ControlBlockType* pWDICtx,
29979 WDI_EventInfoType* pEventData
29980)
29981{
29982 WDI_Status wdiStatus;
29983 eHalStatus halStatus;
29984 WDI_LphbCfgCb wdiLphbCfgCb;
29985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29986
29987 /*-------------------------------------------------------------------------
29988 Sanity check
29989 -------------------------------------------------------------------------*/
29990 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29991 (NULL == pEventData->pEventData))
29992 {
29993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29994 "%s: Invalid parameters", __func__);
29995 WDI_ASSERT(0);
29996 return WDI_STATUS_E_FAILURE;
29997 }
29998
29999 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
30000
30001 /*-------------------------------------------------------------------------
30002 Extract response and send it to UMAC
30003 -------------------------------------------------------------------------*/
30004 halStatus = *((eHalStatus*)pEventData->pEventData);
30005 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30006
30007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30008 "LPHB Cfg Rsp Return status %d", wdiStatus);
30009 /*Notify UMAC*/
30010 if (NULL != wdiLphbCfgCb)
30011 {
30012 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
30013 }
30014
30015 return WDI_STATUS_SUCCESS;
30016}
30017
30018/**
30019 @brief WDI_ProcessLPHBConfReq -
30020 LPHB configuration request to FW
30021
30022 @param pWDICtx : wdi context
30023 pEventData : indication data
30024
30025 @see
30026 @return none
30027*/
30028WDI_Status WDI_ProcessLPHBConfReq
30029(
30030 WDI_ControlBlockType* pWDICtx,
30031 WDI_EventInfoType* pEventData
30032)
30033{
30034 WDI_LPHBReq *pLphbReqParams;
30035 WDI_Status wdiStatus;
30036 wpt_uint8* pSendBuffer = NULL;
30037 wpt_uint16 usDataOffset = 0;
30038 wpt_uint16 usSendSize = 0;
30039 tHalLowPowerHeartBeatReq *halLphbReqRarams;
30040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30041
30042 /*-------------------------------------------------------------------------
30043 Sanity check
30044 -------------------------------------------------------------------------*/
30045 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30046 {
30047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30048 "%s: Invalid parameters in Suspend ind",__func__);
30049 WDI_ASSERT(0);
30050 return WDI_STATUS_E_FAILURE;
30051 }
30052
30053 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
30054
30055 /*-----------------------------------------------------------------------
30056 Get message buffer
30057 -----------------------------------------------------------------------*/
30058 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30059 WDI_LPHB_CFG_REQ,
30060 sizeof(tHalLowPowerHeartBeatReqMsg),
30061 &pSendBuffer, &usDataOffset, &usSendSize))||
30062 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
30063 {
30064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30065 "Unable to get send buffer in LPHB Ind ");
30066 WDI_ASSERT(0);
30067 return WDI_STATUS_E_FAILURE;
30068 }
30069
30070 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
30071 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
30072
30073 halLphbReqRarams->lowPowerHeartBeatCmdType =
30074 (tANI_U16)(++pLphbReqParams->cmd);
30075 switch ((tANI_U16)pLphbReqParams->cmd)
30076 {
30077 case WDI_LPHB_SET_EN_PARAMS_INDID:
30078 halLphbReqRarams->sessionIdx =
30079 pLphbReqParams->params.lphbEnableReq.session;
30080 halLphbReqRarams->options.control.heartBeatEnable =
30081 pLphbReqParams->params.lphbEnableReq.enable;
30082 halLphbReqRarams->options.control.heartBeatType =
30083 pLphbReqParams->params.lphbEnableReq.item;
30084 break;
30085
30086 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30087 halLphbReqRarams->sessionIdx =
30088 pLphbReqParams->params.lphbTcpParamReq.session;
30089 halLphbReqRarams->options.tcpParams.timeOutSec =
30090 pLphbReqParams->params.lphbTcpParamReq.timeout;
30091 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30092 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30093 sizeof(v_U32_t));
30094 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30095 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30096 sizeof(v_U32_t));
30097
30098 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30099 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30100 WDI_MAC_ADDR_LEN);
30101
30102 halLphbReqRarams->options.tcpParams.hostPort =
30103 pLphbReqParams->params.lphbTcpParamReq.src_port;
30104 halLphbReqRarams->options.tcpParams.destPort =
30105 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070030106 halLphbReqRarams->options.tcpParams.timePeriodSec =
30107 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
30108 halLphbReqRarams->options.tcpParams.tcpSn =
30109 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070030110 break;
30111
30112 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
30113 halLphbReqRarams->sessionIdx =
30114 pLphbReqParams->params.lphbTcpFilterReq.session;
30115 halLphbReqRarams->options.tcpUdpFilter.offset =
30116 pLphbReqParams->params.lphbTcpFilterReq.offset;
30117 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30118 pLphbReqParams->params.lphbTcpFilterReq.length;
30119 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30120 pLphbReqParams->params.lphbTcpFilterReq.filter,
30121 WDI_LPHB_FILTER_LEN);
30122 break;
30123
30124 case WDI_LPHB_SET_UDP_PARAMS_INDID:
30125 halLphbReqRarams->sessionIdx =
30126 pLphbReqParams->params.lphbUdpParamReq.session;
30127 halLphbReqRarams->options.udpParams.timeOutSec =
30128 pLphbReqParams->params.lphbUdpParamReq.timeout;
30129 halLphbReqRarams->options.udpParams.timePeriodSec =
30130 pLphbReqParams->params.lphbUdpParamReq.interval;
30131 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
30132 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
30133 sizeof(v_U32_t));
30134 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
30135 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
30136 sizeof(v_U32_t));
30137
30138 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
30139 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
30140 WDI_MAC_ADDR_LEN);
30141
30142 halLphbReqRarams->options.udpParams.hostPort =
30143 pLphbReqParams->params.lphbUdpParamReq.src_port;
30144 halLphbReqRarams->options.udpParams.destPort =
30145 pLphbReqParams->params.lphbUdpParamReq.dst_port;
30146 break;
30147
30148 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
30149 halLphbReqRarams->sessionIdx =
30150 pLphbReqParams->params.lphbUdpFilterReq.session;
30151 halLphbReqRarams->options.tcpUdpFilter.offset =
30152 pLphbReqParams->params.lphbUdpFilterReq.offset;
30153 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30154 pLphbReqParams->params.lphbUdpFilterReq.length;
30155 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30156 pLphbReqParams->params.lphbUdpFilterReq.filter,
30157 WDI_LPHB_FILTER_LEN);
30158 break;
30159
30160 case WDI_LPHB_SET_NETWORK_INFO_INDID:
30161 /* NA */
30162 break;
30163
30164 default:
30165 break;
30166 }
30167
30168 /*-------------------------------------------------------------------------
30169 Send Suspend Request to HAL
30170 -------------------------------------------------------------------------*/
30171 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30172 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30173
30174 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30175 usSendSize, pWDICtx->pfncRspCB,
30176 pWDICtx->pReqStatusUserData,
30177 WDI_LPHB_CFG_RESP);
30178
30179 return wdiStatus;
30180}
30181
30182/**
30183 @brief WDI_LPHBConfReq -
30184 LPHB configuration request API
30185
30186 @param lphbconfParam : configuration parameter
30187 usrData : client context
30188 lphbCfgCb : callback function pointer
30189
30190 @see
30191 @return Success or fail status code
30192*/
30193WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
30194 void *usrData, WDI_LphbCfgCb lphbCfgCb)
30195{
30196 WDI_EventInfoType wdiEventData;
30197
30198 /*------------------------------------------------------------------------
30199 Sanity Check
30200 ------------------------------------------------------------------------*/
30201 if (eWLAN_PAL_FALSE == gWDIInitialized)
30202 {
30203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30204 "WDI API call before module is initialized - Fail request");
30205
30206 return WDI_STATUS_E_NOT_ALLOWED;
30207 }
30208
30209 /*------------------------------------------------------------------------
30210 Fill in Event data and post to the Main FSM
30211 ------------------------------------------------------------------------*/
30212 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
30213 wdiEventData.pEventData = lphbconfParam;
30214 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
30215 wdiEventData.pCBfnc = lphbCfgCb;
30216 wdiEventData.pUserData = usrData;
30217
30218 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30219}
30220#endif /* FEATURE_WLAN_LPHB */
30221
Ravi Joshid2ca7c42013-07-23 08:37:49 -070030222/**
30223 @brief WDI_ProcessIbssPeerInactivityInd
30224 Process peer inactivity indication coming from HAL
30225
30226 @param pWDICtx: pointer to the WLAN DAL context
30227 pEventData: pointer to the event information structure
30228 @see
30229 @return Result of the function call
30230*/
30231WDI_Status
30232WDI_ProcessIbssPeerInactivityInd
30233(
30234 WDI_ControlBlockType* pWDICtx,
30235 WDI_EventInfoType* pEventData
30236)
30237{
30238 WDI_LowLevelIndType wdiInd;
30239 tIbssPeerInactivityIndMsg halIbssIndMsg;
30240
30241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30242
30243 /*-------------------------------------------------------------------------
30244 Sanity check
30245 -------------------------------------------------------------------------*/
30246 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30247 ( NULL == pEventData->pEventData ))
30248 {
30249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30250 "%s: Invalid parameters", __func__);
30251 WDI_ASSERT( 0 );
30252 return WDI_STATUS_E_FAILURE;
30253 }
30254
30255 /*-------------------------------------------------------------------------
30256 Extract indication and send it to UMAC
30257 -------------------------------------------------------------------------*/
30258 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30259 pEventData->pEventData,
30260 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30261
30262 /*Fill in the indication parameters*/
30263 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30264
30265 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30266 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30267
30268 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30269 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30270
30271 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30272 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30273 sizeof(tSirMacAddr));
30274
30275 /*Notify UMAC*/
30276 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30277
30278 return WDI_STATUS_SUCCESS;
30279
30280} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030281
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030282/**
30283*@brief WDI_RateUpdateInd will be called when the upper MAC
30284 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030285
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030286
30287 @param wdiRateUpdateIndParams:
30288
30289
30290 @see
30291 @return Result of the function call
30292*/
30293WDI_Status
30294WDI_RateUpdateInd
30295(
30296 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30297)
30298{
30299 WDI_EventInfoType wdiEventData;
30300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30301
30302 /*------------------------------------------------------------------------
30303 Sanity Check
30304 ------------------------------------------------------------------------*/
30305 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30306 {
30307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30308 "WDI API call before module is initialized - Fail request");
30309
30310 return WDI_STATUS_E_NOT_ALLOWED;
30311 }
30312
30313 /*------------------------------------------------------------------------
30314 Fill in Event data and post to the Main FSM
30315 ------------------------------------------------------------------------*/
30316 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30317 wdiEventData.pEventData = wdiRateUpdateIndParams;
30318 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30319 wdiEventData.pCBfnc = NULL;
30320 wdiEventData.pUserData = NULL;
30321
30322 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30323
30324}/* WDI_RateUpdateInd */
30325
30326/**
30327 @brief Process Rate Update Indication and post it to HAL
30328
30329 @param pWDICtx: pointer to the WLAN DAL context
30330 pEventData: pointer to the event information structure
30331
30332 @see
30333 @return Result of the function call
30334*/
30335WDI_Status
30336WDI_ProcessRateUpdateInd
30337(
30338 WDI_ControlBlockType* pWDICtx,
30339 WDI_EventInfoType* pEventData
30340)
30341{
30342 wpt_uint8* pSendBuffer = NULL;
30343 wpt_uint16 usDataOffset = 0;
30344 wpt_uint16 usSendSize = 0;
30345 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30346 tHalRateUpdateInd *pRateUpdateInd;
30347 WDI_Status wdiStatus;
30348
30349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30350
30351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30352 "%s", __func__);
30353
30354 /*-------------------------------------------------------------------------
30355 Sanity check
30356 -------------------------------------------------------------------------*/
30357 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30358 {
30359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30360 "%s: Invalid parameters", __func__);
30361 WDI_ASSERT(0);
30362 return WDI_STATUS_E_FAILURE;
30363 }
30364 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30365 /*-----------------------------------------------------------------------
30366 Get message buffer
30367 -----------------------------------------------------------------------*/
30368
30369 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30370 WDI_RATE_UPDATE_IND,
30371 sizeof(tHalRateUpdateParams),
30372 &pSendBuffer, &usDataOffset, &usSendSize))||
30373 ( usSendSize < (usDataOffset +
30374 sizeof(tHalRateUpdateParams) )))
30375 {
30376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30377 "Unable to get send buffer in Rate Update Indication %p ",
30378 pEventData);
30379 WDI_ASSERT(0);
30380 return WDI_STATUS_E_FAILURE;
30381 }
30382
30383 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30384
30385 /* Copy the bssid */
30386 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30387 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30388
30389 /* Copy the tx flags */
30390 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30391 pwdiRateUpdateInd->ucastDataRateTxFlag;
30392 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30393 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30394 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30395 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30396 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30397 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30398
30399 /* Copy the tx rates */
30400 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30401 pwdiRateUpdateInd->ucastDataRate;
30402 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30403 pwdiRateUpdateInd->reliableMcastDataRate;
30404 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30405 pwdiRateUpdateInd->mcastDataRate24GHz;
30406 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30407 pwdiRateUpdateInd->mcastDataRate5GHz;
30408
30409 /*-------------------------------------------------------------------------
30410 Send Rate Update Indication to HAL
30411 -------------------------------------------------------------------------*/
30412 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30413 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30414
30415 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30416
30417 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30418 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30419
30420} /* WDI_ProcessRateUpdateInd */
30421
30422#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030423/**
30424 @brief Process stop batch indication from WDA
30425
30426 @param pWDICtx: pointer to the WLAN DAL context
30427 pEventData: pointer to the event information structure
30428
30429 @see
30430 @return Result of the function call
30431*/
30432WDI_Status
30433WDI_ProcessStopBatchScanInd
30434(
30435 WDI_ControlBlockType* pWDICtx,
30436 WDI_EventInfoType* pEventData
30437)
30438{
30439 wpt_uint8* pSendBuffer = NULL;
30440 wpt_uint16 usDataOffset = 0;
30441 wpt_uint16 usSendSize = 0;
30442 WDI_Status wdiStatus;
30443 tHalBatchScanStopIndParam *pHalInd = NULL;
30444 WDI_StopBatchScanIndType *pWdiInd = NULL;
30445
30446
30447 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30448
30449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30450 "%s", __func__);
30451
30452 /*-------------------------------------------------------------------------
30453 Sanity check
30454 -------------------------------------------------------------------------*/
30455
30456 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30457 {
30458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30459 "%s: Invalid parameters", __func__);
30460 WDI_ASSERT(0);
30461 return WDI_STATUS_E_FAILURE;
30462 }
30463 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30464 /*-----------------------------------------------------------------------
30465 Get message buffer
30466 -----------------------------------------------------------------------*/
30467
30468 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30469 WDI_STOP_BATCH_SCAN_IND,
30470 sizeof(tHalBatchScanStopIndParam),
30471 &pSendBuffer, &usDataOffset, &usSendSize))||
30472 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30473 {
30474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30475 "Unable to get send buffer in stop batch scan ind %p ",
30476 pEventData);
30477 WDI_ASSERT(0);
30478 return WDI_STATUS_E_FAILURE;
30479 }
30480
30481 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30482 pHalInd->param = pWdiInd->param;
30483
30484 pWDICtx->pReqStatusUserData = NULL;
30485 pWDICtx->pfncRspCB = NULL;
30486 /*-------------------------------------------------------------------------
30487 Send Stop batch scan indication to HAL
30488 -------------------------------------------------------------------------*/
30489 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30490 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30491}
30492
30493/**
30494 @brief This API is called to trigger batch scan results from FW
30495
30496 @param pWDICtx: pointer to the WLAN DAL context
30497 pEventData: pointer to the event information structure
30498
30499 @see
30500 @return Result of the function call
30501*/
30502WDI_Status
30503WDI_ProcessTriggerBatchScanResultInd
30504(
30505 WDI_ControlBlockType* pWDICtx,
30506 WDI_EventInfoType* pEventData
30507)
30508{
30509 WDI_Status wdiStatus;
30510 wpt_uint8* pSendBuffer = NULL;
30511 wpt_uint16 usDataOffset = 0;
30512 wpt_uint16 usSendSize = 0;
30513 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30514 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30515
30516
30517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30518
30519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30520 "%s", __func__);
30521
30522 /*-------------------------------------------------------------------------
30523 Sanity check
30524 -------------------------------------------------------------------------*/
30525
30526 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30527 {
30528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30529 "%s: Invalid parameters", __func__);
30530 WDI_ASSERT(0);
30531 return WDI_STATUS_E_FAILURE;
30532 }
30533 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30534 /*-----------------------------------------------------------------------
30535 Get message buffer
30536 -----------------------------------------------------------------------*/
30537
30538 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30539 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30540 sizeof(tHalBatchScanTriggerResultParam),
30541 &pSendBuffer, &usDataOffset, &usSendSize))||
30542 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30543 {
30544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30545 "Unable to get send buffer in stop batch scan ind %p ",
30546 pEventData);
30547 WDI_ASSERT(0);
30548 return WDI_STATUS_E_FAILURE;
30549 }
30550
30551 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30552 pHalInd->param = pWdiInd->param;
30553
30554 pWDICtx->pReqStatusUserData = NULL;
30555 pWDICtx->pfncRspCB = NULL;
30556 /*-------------------------------------------------------------------------
30557 Send trigger batch scan result indication to HAL
30558 -------------------------------------------------------------------------*/
30559 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30560 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30561}
30562
30563
30564/**
30565 @brief Process set batch scan response from FW
30566
30567 @param pWDICtx: pointer to the WLAN DAL context
30568 pEventData: pointer to the event information structure
30569
30570 @see
30571 @return Result of the function call
30572*/
30573WDI_Status
30574WDI_ProcessSetBatchScanRsp
30575(
30576 WDI_ControlBlockType* pWDICtx,
30577 WDI_EventInfoType* pEventData
30578)
30579{
30580 WDI_SetBatchScanCb wdiSetBatchScanCb;
30581 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30582
30583 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30585
30586 /*sanity check*/
30587 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30588 ( NULL == pEventData->pEventData))
30589 {
30590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30591 "%s: Invalid parameters", __func__);
30592 WDI_ASSERT(0);
30593 return WDI_STATUS_E_FAILURE;
30594 }
30595
30596 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30597 if ( NULL == wdiSetBatchScanCb)
30598 {
30599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30600 "%s: call back function is NULL", __func__);
30601 WDI_ASSERT(0);
30602 return WDI_STATUS_E_FAILURE;
30603 }
30604
30605 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30606
30607 if (NULL == pSetBatchScanRsp)
30608 {
30609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030610 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030611 pWDICtx, pEventData, pEventData->pEventData);
30612 WDI_ASSERT(0);
30613 return WDI_STATUS_E_FAILURE;
30614 }
30615
Sunil Duttbd736ed2014-05-26 21:19:41 +053030616 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030617 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30618
30619 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30620
Sunil Duttbd736ed2014-05-26 21:19:41 +053030621 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030622 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30623
30624 wpalMemoryFree(pSetBatchScanRsp);
30625
30626 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030627}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030628
30629/**
30630 @brief Process batch scan result indication from FW
30631
30632 @param pWDICtx: pointer to the WLAN DAL context
30633 pEventData: pointer to the event information structure
30634
30635 @see
30636 @return Result of the function call
30637*/
30638WDI_Status
30639WDI_ProcessBatchScanResultInd
30640(
30641 WDI_ControlBlockType* pWDICtx,
30642 WDI_EventInfoType* pEventData
30643)
30644{
30645 void *pBatchScanResultInd;
30646 WDI_LowLevelIndType wdiInd;
30647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30648
Sunil Duttbd736ed2014-05-26 21:19:41 +053030649 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030650 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30651 ( NULL == pEventData->pEventData))
30652 {
30653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30654 "%s: Invalid parameters", __func__);
30655 WDI_ASSERT(0);
30656 return WDI_STATUS_E_FAILURE;
30657 }
30658
Sunil Duttbd736ed2014-05-26 21:19:41 +053030659 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030660 pBatchScanResultInd = (void *)pEventData->pEventData;
30661
Sunil Duttbd736ed2014-05-26 21:19:41 +053030662 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030663 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30664
30665 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30666
Sunil Duttbd736ed2014-05-26 21:19:41 +053030667 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030668 if (pWDICtx->wdiLowLevelIndCB)
30669 {
30670 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30671 }
30672 else
30673 {
30674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30675 "%s: WDILowLevelIndCb is null", __func__);
30676 WDI_ASSERT(0);
30677 return WDI_STATUS_E_FAILURE;
30678 }
30679
30680 return WDI_STATUS_SUCCESS;
30681} /*End of WDI_ProcessBatchScanResultInd*/
30682
Sunil Duttbd736ed2014-05-26 21:19:41 +053030683#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30684/**
30685 @brief Process Link Layer Statistics Result indication from FW
30686
30687 @param pWDICtx: pointer to the WLAN DAL context
30688 pEventData: pointer to the event information structure
30689
30690 @see
30691 @return Result of the function call
30692*/
30693WDI_Status
30694WDI_ProcessLinkLayerStatsResultsInd
30695(
30696 WDI_ControlBlockType* pWDICtx,
30697 WDI_EventInfoType* pEventData
30698)
30699{
30700 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030701 WDI_LLstatsResultsType *halLLStatsResults;
30702 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030703 WDI_LowLevelIndType wdiInd;
30704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30705
30706 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30707 "%s: Event RESULTS Indication", __func__);
30708
30709 /* sanity check */
30710 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30711 ( NULL == pEventData->pEventData))
30712 {
30713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30714 "%s: Invalid parameters", __func__);
30715 WDI_ASSERT(0);
30716 return WDI_STATUS_E_FAILURE;
30717 }
30718
30719 /* extract response and send it to UMAC */
30720 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30721
30722 /* Fill in the indication parameters */
30723 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30724
Dino Mycled3d50022014-07-07 12:58:25 +053030725 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30726 = pLinkLayerStatsInd;
30727
30728 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30729
30730
30731 /* Need to fill in the MAC address */
30732 if ( WDI_STATUS_SUCCESS !=
30733 WDI_STATableGetStaMacAddr(pWDICtx,
30734 halLLStatsResults->iface_id,
30735 &macAddr))
30736 {
30737 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30738 " ifaceId: %u does not exist in the WDI Station Table",
30739 halLLStatsResults->iface_id);
30740
30741 return WDI_STATUS_E_FAILURE;
30742 }
30743 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30744 macAddr, WDI_MAC_ADDR_LEN);
30745
30746 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30747 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30748 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030749
30750 /* Notify UMAC */
30751 if (pWDICtx->wdiLowLevelIndCB)
30752 {
30753 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30754 }
30755 else
30756 {
30757 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30758 "%s: WDILowLevelIndCb is null", __func__);
30759 WDI_ASSERT(0);
30760 return WDI_STATUS_E_FAILURE;
30761 }
30762
30763 return WDI_STATUS_SUCCESS;
30764} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30765#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30766
Rajeev79dbe4c2013-10-05 11:03:42 +053030767/**
30768 @brief WDI_ProcessSetBatchScanReq -
30769 Set batch scan request to FW
30770
30771 @param pWDICtx : wdi context
30772 pEventData : indication data
30773
30774 @see
30775 @return none
30776*/
30777WDI_Status WDI_ProcessSetBatchScanReq
30778(
30779 WDI_ControlBlockType* pWDICtx,
30780 WDI_EventInfoType* pEventData
30781)
30782{
30783 WDI_SetBatchScanReqType *pWdiReq;
30784 WDI_Status wdiStatus;
30785 wpt_uint8* pSendBuffer = NULL;
30786 wpt_uint16 usDataOffset = 0;
30787 wpt_uint16 usSendSize = 0;
30788 tHalBatchScanSetParams *pHalReq;
30789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30790
30791 /*sanity check*/
30792 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30793 {
30794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30795 "%s: Invalid parameters in set batch scan request", __func__);
30796 WDI_ASSERT(0);
30797 return WDI_STATUS_E_FAILURE;
30798 }
30799
30800
30801 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30802
30803
30804 /*get message buffer*/
30805 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30806 WDI_SET_BATCH_SCAN_REQ,
30807 sizeof(tHalBatchScanSetParams),
30808 &pSendBuffer, &usDataOffset, &usSendSize))||
30809 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30810 {
30811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30812 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30813 WDI_ASSERT(0);
30814 return WDI_STATUS_E_FAILURE;
30815 }
30816
30817 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30818
30819 pHalReq->rtt = pWdiReq->rtt;
30820 pHalReq->rfBand = pWdiReq->rfBand;
30821 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30822 pHalReq->scanInterval = pWdiReq->scanFrequency;
30823 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30824
30825 /*send set batch scan request to fw*/
30826 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30827 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30828
30829 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30830 usSendSize, pWDICtx->pfncRspCB,
30831 pWDICtx->pReqStatusUserData,
30832 WDI_SET_BATCH_SCAN_RESP);
30833
30834 return wdiStatus;
30835}
30836
30837/**
30838 @brief WDI_SetBatchScanReq
30839 This API is called to set batch scan request in FW
30840
30841 @param pBatchScanReqParam : pointer to set batch scan re param
30842 usrData : Client context
30843 setBatchScanRspCb : set batch scan resp callback
30844 @see
30845 @return SUCCESS or FAIL
30846*/
30847WDI_Status WDI_SetBatchScanReq
30848(
30849 void *pBatchScanReqParam,
30850 void *usrData,
30851 WDI_SetBatchScanCb setBatchScanRspCb
30852)
30853{
30854 WDI_EventInfoType wdiEventData;
30855
30856 /*sanity check*/
30857 if (eWLAN_PAL_FALSE == gWDIInitialized)
30858 {
30859 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30860 "WDI API call before module is initialized - Fail request");
30861
30862 return WDI_STATUS_E_NOT_ALLOWED;
30863 }
30864
30865 /* fill in event data and post to the main FSM */
30866 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30867 wdiEventData.pEventData = pBatchScanReqParam;
30868 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30869 wdiEventData.pCBfnc = setBatchScanRspCb;
30870 wdiEventData.pUserData = usrData;
30871
30872 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30873}
30874
30875/**
30876 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30877
30878 @param None
30879
30880 @see
30881
30882 @return Status of the request
30883*/
30884WDI_Status
30885WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30886{
30887 WDI_EventInfoType wdiEventData;
30888
30889 /*-------------------------------------------------------------------------
30890 Sanity Check
30891 ------------------------------------------------------------------------*/
30892 if (eWLAN_PAL_FALSE == gWDIInitialized)
30893 {
30894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30895 "WDI API call before module is initialized - Fail request!");
30896
30897 return WDI_STATUS_E_NOT_ALLOWED;
30898 }
30899
30900 /*-------------------------------------------------------------------------
30901 Fill in Event data and post to the Main FSM
30902 ------------------------------------------------------------------------*/
30903 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30904 wdiEventData.pEventData = pWdiReq;
30905 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30906 wdiEventData.pCBfnc = NULL;
30907 wdiEventData.pUserData = NULL;
30908
30909 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30910}
30911
30912/**
30913 @brief WDI_TriggerBatchScanResultInd
30914 This API is called to pull batch scan result from FW
30915
30916 @param pWdiReq : pointer to get batch scan ind param
30917 @see
30918 @return SUCCESS or FAIL
30919*/
30920WDI_Status WDI_TriggerBatchScanResultInd
30921(
30922 WDI_TriggerBatchScanResultIndType *pWdiReq
30923)
30924{
30925 WDI_EventInfoType wdiEventData;
30926 /*-------------------------------------------------------------------------
30927 Sanity Check
30928 ------------------------------------------------------------------------*/
30929 if (eWLAN_PAL_FALSE == gWDIInitialized)
30930 {
30931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30932 "WDI API call before module is initialized - Fail request!");
30933
30934 return WDI_STATUS_E_NOT_ALLOWED;
30935 }
30936
30937 /*-------------------------------------------------------------------------
30938 Fill in Event data and post to the Main FSM
30939 ------------------------------------------------------------------------*/
30940 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30941 wdiEventData.pEventData = pWdiReq;
30942 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30943 wdiEventData.pCBfnc = NULL;
30944 wdiEventData.pUserData = NULL;
30945
30946 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30947}
Rajeev79dbe4c2013-10-05 11:03:42 +053030948#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030949
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030950/**
30951 @brief Process Update Channel Rsp function (called when a response is
30952 being received over the bus from HAL)
30953
30954 @param pWDICtx: pointer to the WLAN DAL context
30955 pEventData: pointer to the event information structure
30956
30957 @see
30958 @return Result of the function call
30959*/
30960WDI_Status
30961WDI_ProcessUpdateChanRsp
30962(
30963 WDI_ControlBlockType* pWDICtx,
30964 WDI_EventInfoType* pEventData
30965)
30966{
30967 WDI_Status wdiStatus;
30968 eHalStatus halStatus;
30969 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30971
30972 /*-------------------------------------------------------------------------
30973 Sanity check
30974 -------------------------------------------------------------------------*/
30975 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30976 ( NULL == pEventData->pEventData))
30977 {
30978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30979 "%s: Invalid parameters", __func__);
30980 WDI_ASSERT(0);
30981 return WDI_STATUS_E_FAILURE;
30982 }
30983
30984 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30985
30986 /*-------------------------------------------------------------------------
30987 Extract response and send it to UMAC
30988 -------------------------------------------------------------------------*/
30989 halStatus = *((eHalStatus*)pEventData->pEventData);
30990 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30991
30992 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30993
30994 return WDI_STATUS_SUCCESS;
30995}/*WDI_ProcessUpdateChanRsp*/
30996
Leo Chang0b0e45a2013-12-15 15:18:55 -080030997#ifdef FEATURE_WLAN_CH_AVOID
30998/**
30999 @brief v -WDI_ProcessChAvoidInd
31000
31001
31002 @param pWDICtx : wdi context
31003 pEventData : indication data
31004 @see
31005 @return Result of the function call
31006*/
31007WDI_Status
31008WDI_ProcessChAvoidInd
31009(
31010 WDI_ControlBlockType* pWDICtx,
31011 WDI_EventInfoType* pEventData
31012)
31013{
31014 WDI_LowLevelIndType wdiInd;
31015 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
31016 wpt_uint16 rangeLoop;
31017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31018
31019 /*-------------------------------------------------------------------------
31020 Sanity check
31021 -------------------------------------------------------------------------*/
31022 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31023 (NULL == pEventData->pEventData))
31024 {
31025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31026 "%s: Invalid parameters", __func__);
31027 WDI_ASSERT(0);
31028 return WDI_STATUS_E_FAILURE;
31029 }
31030
31031 /*-------------------------------------------------------------------------
31032 Extract indication and send it to UMAC
31033 -------------------------------------------------------------------------*/
31034 wpalMemoryCopy(&chAvoidIndicationParam,
31035 pEventData->pEventData,
31036 sizeof(tHalAvoidFreqRangeIndParams));
31037
Abhishek Singhe34eb552015-06-18 10:12:15 +053031038 /* Avoid Over flow */
31039 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
31040 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
31041
Leo Chang0b0e45a2013-12-15 15:18:55 -080031042 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
31043 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
31044 chAvoidIndicationParam.avoidCnt;
31045 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
31046 (void *)chAvoidIndicationParam.avoidRange,
31047 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
31048 sizeof(WDI_ChAvoidFreqType));
31049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31050 "%s: band count %d", __func__,
31051 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
31052 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
31053 {
31054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31055 "%s: srart freq %d, end freq %d", __func__,
31056 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
31057 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
31058 }
31059
31060 /*Notify UMAC*/
31061 if (pWDICtx->wdiLowLevelIndCB)
31062 {
31063 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
31064 }
31065
31066 return WDI_STATUS_SUCCESS;
31067}
Atul Mittalc0f739f2014-07-31 13:47:47 +053031068
Leo Chang0b0e45a2013-12-15 15:18:55 -080031069#endif /* FEATURE_WLAN_CH_AVOID */
31070
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031071/**
31072 @brief Process OBSS Start scan result indication
31073
31074 @param pWDICtx: pointer to the WLAN DAL context
31075 pEventData: pointer to the event information structure
31076
31077 @see
31078 @return Result of the function call
31079*/
31080WDI_Status
31081WDI_ProcessHT40OBSSScanInd
31082(
31083 WDI_ControlBlockType* pWDICtx,
31084 WDI_EventInfoType* pEventData
31085)
31086{
31087 wpt_uint8* pSendBuffer = NULL;
31088 wpt_uint16 usDataOffset = 0;
31089 wpt_uint16 usSendSize = 0;
31090 wpt_uint16 usLen = 0;
31091 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
31092 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
31093 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
31094 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31095
31096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31097
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053031098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031099 "%s", __func__);
31100
31101 /*-------------------------------------------------------------------------
31102 Sanity check
31103 -------------------------------------------------------------------------*/
31104 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31105 {
31106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31107 "%s: Invalid parameters", __func__);
31108 WDI_ASSERT(0);
31109 return WDI_STATUS_E_FAILURE;
31110 }
31111 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
31112
31113 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
31114 /*-----------------------------------------------------------------------
31115 Get message buffer
31116 -----------------------------------------------------------------------*/
31117
31118 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31119 WDI_START_HT40_OBSS_SCAN_IND,
31120 sizeof(tHT40ObssScanIndType),
31121 &pSendBuffer, &usDataOffset, &usSendSize))||
31122 ( usSendSize < (usDataOffset + usLen )))
31123 {
31124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31125 "Unable to get send buffer in HT40 OBSS Start req %p ",
31126 pEventData);
31127 WDI_ASSERT(0);
31128 return WDI_STATUS_E_FAILURE;
31129 }
31130 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
31131 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
31132 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
31133 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
31134 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
31135 pHT40ObssScanInd->OBSSScanActiveDwellTime =
31136 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
31137 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
31138 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
31139 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
31140 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
31141 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
31142 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
31143 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
31144 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
31145 pHT40ObssScanInd->OBSSScanActivityThreshold =
31146 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
31147 pHT40ObssScanInd->selfStaIdx =
31148 pwdiHT40OBSSScanInd->selfStaIdx;
31149 pHT40ObssScanInd->bssIdx =
31150 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053031151 pHT40ObssScanInd->currentOperatingClass =
31152 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031153 pHT40ObssScanInd->fortyMHZIntolerent =
31154 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
31155 pHT40ObssScanInd->channelCount =
31156 pwdiHT40OBSSScanInd->channelCount;
31157
31158 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
31159 WDI_ROAM_SCAN_MAX_CHANNELS);
31160 pHT40ObssScanInd->ieFieldLen =
31161 pwdiHT40OBSSScanInd->ieFieldLen;
31162
31163 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
31164 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
31165 pWDICtx->pReqStatusUserData = NULL;
31166 pWDICtx->pfncRspCB = NULL;
31167
31168 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
31169 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
31170
31171 /*-------------------------------------------------------------------------
31172 Send OBSS Start Indication to HAL
31173 -------------------------------------------------------------------------*/
31174 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31175 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31176
31177} /*End of WDI_ProcessHT40OBSSStartScanInd*/
31178
31179
31180/**
31181 @brief wdi_HT40OBSSScanInd
31182 This API is called to start OBSS scan
31183
31184 @param pWdiReq : pointer to get ind param
31185 @see
31186 @return SUCCESS or FAIL
31187*/
31188WDI_Status WDI_HT40OBSSScanInd
31189(
31190 WDI_HT40ObssScanParamsType *pWdiReq
31191)
31192{
31193 WDI_EventInfoType wdiEventData;
31194
31195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31196 "%s", __func__);
31197 /*-------------------------------------------------------------------------
31198 Sanity Check
31199 ------------------------------------------------------------------------*/
31200 if (eWLAN_PAL_FALSE == gWDIInitialized)
31201 {
31202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31203 "WDI API call before module is initialized - Fail request!");
31204
31205 return WDI_STATUS_E_NOT_ALLOWED;
31206 }
31207
31208 /*-------------------------------------------------------------------------
31209 Fill in Event data and post to the Main FSM
31210 ------------------------------------------------------------------------*/
31211 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
31212 wdiEventData.pEventData = pWdiReq;
31213 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
31214 wdiEventData.pCBfnc = NULL;
31215 wdiEventData.pUserData = NULL;
31216
31217
31218 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31219}
31220
31221/**
31222 @brief Process OBSS Stop scan result
31223
31224 @param pWDICtx: pointer to the WLAN DAL context
31225 pEventData: pointer to the event information structure
31226
31227 @see
31228 @return Result of the function call
31229*/
31230WDI_Status
31231WDI_ProcessHT40OBSSStopScanInd
31232(
31233 WDI_ControlBlockType* pWDICtx,
31234 WDI_EventInfoType* pEventData
31235)
31236{
31237 wpt_uint8* pSendBuffer = NULL;
31238 wpt_uint16 usDataOffset = 0;
31239 wpt_uint16 usSendSize = 0;
31240 wpt_uint16 usLen = 0;
31241 wpt_uint8 *wdiBssIdx = 0;
31242 tANI_U8 *bssIdx = 0;
31243 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31244
31245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31246
31247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31248 "%s", __func__);
31249
31250 /*-------------------------------------------------------------------------
31251 Sanity check
31252 -------------------------------------------------------------------------*/
31253 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31254 {
31255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31256 "%s: Invalid parameters", __func__);
31257 WDI_ASSERT(0);
31258 return WDI_STATUS_E_FAILURE;
31259 }
31260 bssIdx = (wpt_uint8*)pEventData->pEventData;
31261 /*-----------------------------------------------------------------------
31262 Get message buffer
31263 -----------------------------------------------------------------------*/
31264
31265 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31266 WDI_STOP_HT40_OBSS_SCAN_IND,
31267 sizeof(tANI_U8),
31268 &pSendBuffer, &usDataOffset, &usSendSize))||
31269 ( usSendSize < (usDataOffset + usLen )))
31270 {
31271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31272 "Unable to get send buffer in HT40 OBSS Start req %p ",
31273 pEventData);
31274 WDI_ASSERT(0);
31275 return WDI_STATUS_E_FAILURE;
31276 }
31277
31278 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31279 bssIdx = wdiBssIdx;
31280
31281 pWDICtx->pReqStatusUserData = NULL;
31282 pWDICtx->pfncRspCB = NULL;
31283
31284 /*-------------------------------------------------------------------------
31285 Send DHCP Start Indication to HAL
31286 -------------------------------------------------------------------------*/
31287 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31288 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31289} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31290
31291/**
31292 @brief WDI_HT40OBSSStopScanInd
31293 This API is called to start OBSS scan
31294 @param pWdiReq : pointer to get ind param
31295 @see
31296 @return SUCCESS or FAIL
31297*/
31298WDI_Status WDI_HT40OBSSStopScanInd
31299(
31300 wpt_uint8 bssIdx
31301)
31302{
31303 WDI_EventInfoType wdiEventData;
31304
31305 /*-------------------------------------------------------------------------
31306 Sanity Check
31307 ------------------------------------------------------------------------*/
31308 if (eWLAN_PAL_FALSE == gWDIInitialized)
31309 {
31310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31311 "WDI API call before module is initialized - Fail request!");
31312
31313 return WDI_STATUS_E_NOT_ALLOWED;
31314 }
31315
31316 /*-------------------------------------------------------------------------
31317 Fill in Event data and post to the Main FSM
31318 ------------------------------------------------------------------------*/
31319 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31320 wdiEventData.pEventData = &bssIdx;
31321 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31322 wdiEventData.pCBfnc = NULL;
31323 wdiEventData.pUserData = NULL;
31324
31325 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31326}
31327
c_hpothu86041002014-04-14 19:06:51 +053031328WDI_Status
31329WDI_printRegInfo
31330(
31331 WDI_ControlBlockType* pWDICtx,
31332 WDI_EventInfoType* pEventData
31333)
31334{
31335 tHalRegDebugInfo *pRegTable;
31336 tHalRegDebugInfoParams *pRegParams;
31337 uint32 cnt=0;
31338
31339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31340 "%s: ", __func__);
31341 /*-------------------------------------------------------------------------
31342 Sanity check
31343 -------------------------------------------------------------------------*/
31344 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31345 ( NULL == pEventData->pEventData))
31346 {
31347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31348 "%s: Invalid parameters", __func__);
31349 WDI_ASSERT(0);
31350 return WDI_STATUS_E_FAILURE;
31351 }
31352
31353 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31354
31355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31356 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31357 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31358
31359 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31360
31361 if (pRegParams->regCount <= 0)
31362 {
31363 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31364 "%s incorrect parameters passed", __func__);
31365 return WDI_STATUS_E_FAILURE;
31366 }
31367
31368 while(pRegParams->regCount--)
31369 {
31370 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31371 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31372 cnt++;
31373 }
31374
31375 return WDI_STATUS_SUCCESS;
31376}
c_hpothu92367912014-05-01 15:18:17 +053031377
31378/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031379 * FUNCTION: WDI_delBaInd
31380 * send the delBA to peer.
31381 */
31382
31383WDI_Status
31384WDI_delBaInd
31385(
31386 WDI_ControlBlockType* pWDICtx,
31387 WDI_EventInfoType* pEventData
31388
31389)
31390{
31391 tHalWlanDelBaIndMsg halDelBaInd;
31392 WDI_LowLevelIndType wdiInd;
31393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31394
31395 /*-------------------------------------------------------------------------
31396 Sanity check
31397 -------------------------------------------------------------------------*/
31398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31399 ( NULL == pEventData->pEventData))
31400 {
31401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31402 "%s: Invalid parameters", __func__);
31403 WDI_ASSERT(0);
31404 return WDI_STATUS_E_FAILURE;
31405 }
31406
31407 /*-------------------------------------------------------------------------
31408 Extract indication and send it to UMAC
31409 -------------------------------------------------------------------------*/
31410
31411 /* Parameters need to be unpacked according to HAL struct*/
31412 wpalMemoryCopy( &halDelBaInd,
31413 pEventData->pEventData,
31414 sizeof(halDelBaInd));
31415
31416 /*Fill in the indication parameters*/
31417 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31418
31419 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31420 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31421 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31422
31423 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31424 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31425 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31426
31427 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31428 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31429 if ( pWDICtx->wdiLowLevelIndCB )
31430 {
31431 /*Notify UMAC*/
31432 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31433 }
31434
31435 return WDI_STATUS_SUCCESS;
31436
31437
31438}
31439
31440/*
c_hpothu92367912014-05-01 15:18:17 +053031441 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31442 * send the response to PE with beacon miss count
31443 * received from WDI.
31444 */
31445WDI_Status
31446WDI_ProcessGetBcnMissRateRsp
31447(
31448 WDI_ControlBlockType* pWDICtx,
31449 WDI_EventInfoType* pEventData
31450)
31451{
31452 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31453 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31454
31455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31456 "In %s",__func__);
31457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31458
31459 /*-------------------------------------------------------------------------
31460 Sanity check
31461 -------------------------------------------------------------------------*/
31462 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31463 ( NULL == pEventData->pEventData))
31464 {
31465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31466 "%s: Invalid parameters", __func__);
31467 WDI_ASSERT(0);
31468 return WDI_STATUS_E_FAILURE;
31469 }
31470
31471 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31472 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31473
31474 /*Notify UMAC*/
31475 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31476 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31477 return WDI_STATUS_SUCCESS;
31478}
31479
31480/*
31481 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31482 * Request to WDI to get missed beacon rate.
31483 */
31484WDI_Status
31485WDI_ProcessGetBcnMissRateReq
31486(
31487 WDI_ControlBlockType* pWDICtx,
31488 WDI_EventInfoType* pEventData
31489)
31490{
31491 wpt_uint8* pSendBuffer = NULL;
31492 wpt_uint16 usDataOffset = 0;
31493 wpt_uint16 usSendSize = 0;
31494 wpt_uint8 ucCurrentBSSSesIdx = 0;
31495 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031496 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31497 tHalBcnMissRateReqParams halBcnMissRateReq;
31498
31499/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31500
31501 /*-------------------------------------------------------------------------
31502 Sanity check
31503 -------------------------------------------------------------------------*/
31504 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31505 ( NULL == pEventData->pCBfnc ) )
31506 {
31507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31508 "%s: Invalid parameters", __func__);
31509 WDI_ASSERT(0);
31510 return WDI_STATUS_E_FAILURE;
31511 }
31512
31513 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31514
31515 wpalMutexAcquire(&pWDICtx->wptMutex);
31516
31517 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31518 pEventData->pEventData, &pBSSSes);
31519 if ( NULL == pBSSSes )
31520 {
31521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31522 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031523 MAC_ADDRESS_STR, __func__,
31524 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031525 wpalMutexRelease(&pWDICtx->wptMutex);
31526 return WDI_STATUS_E_NOT_ALLOWED;
31527 }
31528 wpalMutexRelease(&pWDICtx->wptMutex);
31529
31530 /*-----------------------------------------------------------------------
31531 Get message buffer
31532 -----------------------------------------------------------------------*/
31533 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31534 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31535 sizeof(tHalBcnMissRateReqParams),
31536 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31537 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31538 {
31539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31540 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31541 pEventData);
31542 WDI_ASSERT(0);
31543 return WDI_STATUS_E_FAILURE;
31544 }
31545
31546 pWDICtx->wdiReqStatusCB = NULL;
31547 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31548
31549 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31550
31551 wpalMemoryCopy( pSendBuffer+usDataOffset,
31552 &halBcnMissRateReq,
31553 sizeof(tHalBcnMissRateReqParams));
31554 /*-------------------------------------------------------------------------
31555 Send Get STA Request to HAL
31556 -------------------------------------------------------------------------*/
31557 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31558 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31559}
31560
31561/**
31562 @brief WDI_GetBcnMissRate
31563
31564 @param pUserData: user data will be passed back with the
31565 callback
31566 WDI_GetBcnMissRateCb: callback for passing back the response
31567 of the get stats operation received from the device
31568 bssid: bssid, to send bssIdx to FW
31569
31570 @return SUCCESS or FAIL
31571*/
31572WDI_Status WDI_GetBcnMissRate( void *pUserData,
31573 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31574 tANI_U8 *bssid )
31575{
31576 WDI_EventInfoType wdiEventData;
31577
31578 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31579
31580 /*------------------------------------------------------------------------
31581 Sanity Check
31582 ------------------------------------------------------------------------*/
31583 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31584 {
31585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31586 "WDI API call before module is initialized - Fail request");
31587
31588 return WDI_STATUS_E_NOT_ALLOWED;
31589 }
31590
31591 /*------------------------------------------------------------------------
31592 Fill in Event data and post to the Main FSM
31593 ------------------------------------------------------------------------*/
31594 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31595 wdiEventData.pEventData = bssid;
31596 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31597 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31598 wdiEventData.pUserData = pUserData;
31599
31600 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31601}
Abhishek Singh85b74712014-10-08 11:38:19 +053031602
31603/*
31604 * FUNCTION: WDI_ProcessGetFwStatsRsp
31605 * send the response with FW stats asked.
31606 */
31607WDI_Status
31608 WDI_ProcessGetFwStatsRsp
31609(
31610 WDI_ControlBlockType* pWDICtx,
31611 WDI_EventInfoType* pEventData
31612)
31613{
31614 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31615 tpHalfwStatsRspParams pHalFwstatsRsp;
31616 WDI_FWStatsResults fwStats;
31617
31618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31619
31620 /*-------------------------------------------------------------------------
31621 Sanity check
31622 -------------------------------------------------------------------------*/
31623 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31624 ( NULL == pEventData->pEventData))
31625 {
31626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31627 "%s: Invalid parameters", __func__);
31628 WDI_ASSERT(0);
31629 return WDI_STATUS_E_FAILURE;
31630 }
31631 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31632 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31633
31634 if(pHalFwstatsRsp->length)
31635 {
31636 switch( pHalFwstatsRsp->type )
31637 {
31638 case FW_UBSP_STATS:
31639 {
31640 ubspFwStats *ubspStatsfromFw;
31641
31642 fwStats.type = pHalFwstatsRsp->type;
31643 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31644 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31645 ubspStatsfromFw->ubsp_enter_cnt;
31646 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31647 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31648 }
31649 break;
31650 default:
31651 {
31652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31653 "%s: No handling for stats type %d", __func__,
31654 pHalFwstatsRsp->type);
31655 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31656 NULL, pWDICtx->pRspCBUserData);
31657 return WDI_STATUS_E_FAILURE;
31658 }
31659 }
31660 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31661 }
31662 else
31663 {
31664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31665 "%s: Length = 0 for type %d return failure ", __func__,
31666 pHalFwstatsRsp->type);
31667 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31668 NULL, pWDICtx->pRspCBUserData);
31669 return WDI_STATUS_E_FAILURE;
31670 }
31671 return WDI_STATUS_SUCCESS;
31672}
31673
31674/*
31675 * FUNCTION: WDI_ProcessGetFwStatsReq
31676 * Request to WDI to get FW Stats.
31677 */
31678WDI_Status
31679 WDI_ProcessGetFwStatsReq
31680(
31681 WDI_ControlBlockType* pWDICtx,
31682 WDI_EventInfoType* pEventData
31683)
31684{
31685 wpt_uint8* pSendBuffer = NULL;
31686 wpt_uint16 usDataOffset = 0;
31687 wpt_uint16 usSendSize = 0;
31688 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31689 tHalfwStatsReqParams halFwStatsReq;
31690
31691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31692
31693 /*-------------------------------------------------------------------------
31694 Sanity check
31695 -------------------------------------------------------------------------*/
31696 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31697 ( NULL == pEventData->pCBfnc ) )
31698 {
31699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31700 "%s: Invalid parameters", __func__);
31701 WDI_ASSERT(0);
31702 return WDI_STATUS_E_FAILURE;
31703 }
31704
31705 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31706
31707 /*-----------------------------------------------------------------------
31708 Get message buffer
31709 -----------------------------------------------------------------------*/
31710 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31711 pWDICtx, WDI_GET_FW_STATS_REQ,
31712 sizeof(tHalfwStatsReqParams),
31713 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31714 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31715 {
31716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31717 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31718 pEventData);
31719 WDI_ASSERT(0);
31720 return WDI_STATUS_E_FAILURE;
31721 }
31722
31723 pWDICtx->wdiReqStatusCB = NULL;
31724 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31725 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31726 wpalMemoryCopy( pSendBuffer+usDataOffset,
31727 &halFwStatsReq,
31728 sizeof(tHalfwStatsReqParams));
31729 /*-------------------------------------------------------------------------
31730 Send Get STA Request to HAL
31731 -------------------------------------------------------------------------*/
31732 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31733 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31734}
31735
Sunil Duttbd736ed2014-05-26 21:19:41 +053031736#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31737
31738/**
31739 @brief WDI_LLStatsSetReq
31740 This API is called to set link layer stats request in FW
31741
31742 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31743 wdiLLStatsSetRspCb : set link layer stats resp callback
31744 usrData : Client context
31745 @see
31746 @return SUCCESS or FAIL
31747*/
31748WDI_Status
31749WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31750 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31751 void* pUserData)
31752{
31753 WDI_EventInfoType wdiEventData;
31754
31755 /*------------------------------------------------------------------------
31756 Sanity Check
31757 ------------------------------------------------------------------------*/
31758 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31759 {
31760 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31761 "WDI API call before module is initialized - Fail request");
31762
31763 return WDI_STATUS_E_NOT_ALLOWED;
31764 }
31765
31766 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31767 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31768 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31769 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31770 wdiEventData.pUserData = pUserData;
31771
31772 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31773}
31774
31775/**
31776 @brief WDI_ProcessLLStatsSetReq -
31777 Set Link Layer Stats request to FW
31778
31779 @param pWDICtx : wdi context
31780 pEventData : indication data
31781
31782 @see
31783 @return none
31784*/
31785WDI_Status
31786WDI_ProcessLLStatsSetReq
31787(
31788 WDI_ControlBlockType* pWDICtx,
31789 WDI_EventInfoType* pEventData
31790)
31791{
31792 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31793 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31794 wpt_uint8* pSendBuffer = NULL;
31795 wpt_uint16 usSendSize = 0;
31796 wpt_uint16 usDataOffset = 0;
31797 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31798
31799 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31800 ( NULL == pEventData->pCBfnc ))
31801 {
31802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31803 "%s: Invalid parameters", __func__);
31804 WDI_ASSERT(0);
31805 return WDI_STATUS_E_FAILURE;
31806 }
31807
31808 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31809 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31810
31811 /*-----------------------------------------------------------------------
31812 Get message buffer
31813 ! TO DO : proper conversion into the HAL Message Request Format
31814 -----------------------------------------------------------------------*/
31815 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31816 pWDICtx,
31817 WDI_LL_STATS_SET_REQ,
31818 sizeof(tHalMacLlSetStatsReqParams),
31819 &pSendBuffer, &usDataOffset,
31820 &usSendSize))||
31821 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31822 {
31823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31824 "Unable to get send buffer in %s %p %p %p", __func__,
31825 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31826 WDI_ASSERT(0);
31827 return WDI_STATUS_E_FAILURE;
31828 }
31829
31830
Dino Mycled3d50022014-07-07 12:58:25 +053031831 /* Need to fill in the self STA Index */
31832 if ( WDI_STATUS_SUCCESS !=
31833 WDI_STATableFindStaidByAddr(pWDICtx,
31834 pwdiLLStatsSetReqParams->macAddr,
31835 &halLLStatsSetParams.sta_id))
31836 {
31837 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31838 MAC_ADDRESS_STR
31839 ": This station does not exist in the WDI Station Table",
31840 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31841
31842 wpalMemoryFree(pSendBuffer);
31843 return WDI_STATUS_E_FAILURE;
31844 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031845
31846 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031847 halLLStatsSetParams.mpdu_size_threshold =
31848 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31849 halLLStatsSetParams.aggressive_statistics_gathering =
31850 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31851
31852 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31853 " halLLStatsSetParams.req_id = %u",
31854 halLLStatsSetParams.req_id);
31855 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31856 " halLLStatsSetParams.sta_id = %u",
31857 halLLStatsSetParams.sta_id);
31858 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31859 " halLLStatsSetParams.mpdu_size_threshold = %u",
31860 halLLStatsSetParams.mpdu_size_threshold);
31861 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31862 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31863 halLLStatsSetParams.aggressive_statistics_gathering);
31864
31865 wpalMemoryCopy(pSendBuffer+usDataOffset,
31866 &halLLStatsSetParams,
31867 sizeof(halLLStatsSetParams));
31868
31869 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31870
31871 /*-------------------------------------------------------------------------
31872 Send Clear Link Layer Stats Request to HAL
31873 -------------------------------------------------------------------------*/
31874 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31875 wdiLLStatsSetCb, pEventData->pUserData,
31876 WDI_LL_STATS_SET_RSP);
31877}
31878
31879/**
31880 @brief WDI_LLStatsGetReq
31881 This API is called to get link layer stats request in FW
31882
31883 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31884 wdiLLStatsGetRspCb : get link layer stats resp callback
31885 usrData : Client context
31886 @see
31887 @return SUCCESS or FAIL
31888*/
31889WDI_Status
31890WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31891 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31892 void* pUserData)
31893{
31894 WDI_EventInfoType wdiEventData;
31895
31896 /*------------------------------------------------------------------------
31897 Sanity Check
31898 ------------------------------------------------------------------------*/
31899 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31900 {
31901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31902 "WDI API call before module is initialized - Fail request");
31903
31904 return WDI_STATUS_E_NOT_ALLOWED;
31905 }
31906
31907 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31908 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31909 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31910 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31911 wdiEventData.pUserData = pUserData;
31912
31913 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31914}
31915
31916/**
31917 @brief WDI_ProcessLLStatsGetReq -
31918 Get Link Layer Stats request to FW
31919
31920 @param pWDICtx : wdi context
31921 pEventData : indication data
31922
31923 @see
31924 @return none
31925*/
31926WDI_Status
31927WDI_ProcessLLStatsGetReq
31928(
31929 WDI_ControlBlockType* pWDICtx,
31930 WDI_EventInfoType* pEventData
31931)
31932{
31933 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31934 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31935 wpt_uint8* pSendBuffer = NULL;
31936 wpt_uint16 usSendSize = 0;
31937 wpt_uint16 usDataOffset = 0;
31938 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31939
31940 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31941 ( NULL == pEventData->pCBfnc ))
31942 {
31943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31944 "%s: Invalid parameters", __func__);
31945 WDI_ASSERT(0);
31946 return WDI_STATUS_E_FAILURE;
31947 }
31948
31949 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31950 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31951
31952 /*-----------------------------------------------------------------------
31953 Get message buffer
31954 ! TO DO : proper conversion into the HAL Message Request Format
31955 -----------------------------------------------------------------------*/
31956 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31957 pWDICtx,
31958 WDI_LL_STATS_GET_REQ,
31959 sizeof(tHalMacLlGetStatsReqParams),
31960 &pSendBuffer, &usDataOffset,
31961 &usSendSize))||
31962 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31963 {
31964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31965 "Unable to get send buffer in %s %p %p %p", __func__,
31966 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31967 WDI_ASSERT(0);
31968 return WDI_STATUS_E_FAILURE;
31969 }
Dino Mycled3d50022014-07-07 12:58:25 +053031970 /* Need to fill in the self STA Index */
31971 if ( WDI_STATUS_SUCCESS !=
31972 WDI_STATableFindStaidByAddr(pWDICtx,
31973 pwdiLLStatsGetReqParams->macAddr,
31974 &halLLStatsGetParams.sta_id))
31975 {
31976 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31977 MAC_ADDRESS_STR
31978 ": This station does not exist in the WDI Station Table",
31979 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31980
31981 wpalMemoryFree(pSendBuffer);
31982 return WDI_STATUS_E_FAILURE;
31983 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031984
31985 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031986 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31987
31988 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31989 " halLLStatsGetParams.req_id = %u",
31990 halLLStatsGetParams.req_id);
31991 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31992 " halLLStatsGetParams.staId = %u",
31993 halLLStatsGetParams.sta_id);
31994 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31995 " halLLStatsGetParams.Mask = %u",
31996 halLLStatsGetParams.param_id_mask);
31997
31998 wpalMemoryCopy(pSendBuffer+usDataOffset,
31999 &halLLStatsGetParams,
32000 sizeof(halLLStatsGetParams));
32001
32002 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32003
32004 /*-------------------------------------------------------------------------
32005 Send Clear Link Layer Stats Request to HAL
32006 -------------------------------------------------------------------------*/
32007 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32008 wdiLLStatsGetCb, pEventData->pUserData,
32009 WDI_LL_STATS_GET_RSP);
32010}
32011
32012/**
32013 @brief WDI_LLStatsClearReq
32014 This API is called to clear link layer stats request in FW
32015
32016 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
32017 wdiLLStatsSetRspCb : clear link layer stats resp callback
32018 usrData : Client context
32019 @see
32020 @return SUCCESS or FAIL
32021*/
32022WDI_Status
32023WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
32024 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
32025 void* pUserData)
32026{
32027 WDI_EventInfoType wdiEventData;
32028
32029 /*------------------------------------------------------------------------
32030 Sanity Check
32031 ------------------------------------------------------------------------*/
32032 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32033 {
32034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32035 "WDI API call before module is initialized - Fail request");
32036
32037 return WDI_STATUS_E_NOT_ALLOWED;
32038 }
32039
32040 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
32041 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
32042 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
32043 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
32044 wdiEventData.pUserData = pUserData;
32045
32046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32047 "%s:%d Enter", __func__, __LINE__);
32048
32049 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32050}
32051
32052/**
32053 @brief WDI_ProcessLLStatsClearReq -
32054 Clear Link Layer Stats request to FW
32055
32056 @param pWDICtx : wdi context
32057 pEventData : indication data
32058
32059 @see
32060 @return none
32061*/
32062WDI_Status
32063WDI_ProcessLLStatsClearReq
32064(
32065 WDI_ControlBlockType* pWDICtx,
32066 WDI_EventInfoType* pEventData
32067)
32068{
32069 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
32070 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
32071 wpt_uint8* pSendBuffer = NULL;
32072 wpt_uint16 usSendSize = 0;
32073 wpt_uint16 usDataOffset = 0;
32074 tHalMacLlClearStatsReqParams halLLStatsClearParams;
32075
32076 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32077 ( NULL == pEventData->pCBfnc ))
32078 {
32079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32080 "%s: Invalid parameters", __func__);
32081 WDI_ASSERT(0);
32082 return WDI_STATUS_E_FAILURE;
32083 }
32084
32085 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
32086 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
32087
32088 /*-----------------------------------------------------------------------
32089 Get message buffer
32090 ! TO DO : proper conversion into the HAL Message Request Format
32091 -----------------------------------------------------------------------*/
32092 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32093 pWDICtx,
32094 WDI_LL_STATS_CLEAR_REQ,
32095 sizeof(tHalMacLlClearStatsReqParams),
32096 &pSendBuffer, &usDataOffset,
32097 &usSendSize))||
32098 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
32099 {
32100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32101 "Unable to get send buffer in %s %p %p %p", __func__,
32102 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
32103 WDI_ASSERT(0);
32104 return WDI_STATUS_E_FAILURE;
32105 }
Dino Mycled3d50022014-07-07 12:58:25 +053032106 /* Need to fill in the self STA Index */
32107 if ( WDI_STATUS_SUCCESS !=
32108 WDI_STATableFindStaidByAddr(pWDICtx,
32109 pwdiLLStatsClearReqParams->macAddr,
32110 &halLLStatsClearParams.sta_id))
32111 {
32112 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32113 MAC_ADDRESS_STR
32114 ": This station does not exist in the WDI Station Table",
32115 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
32116
32117 wpalMemoryFree(pSendBuffer);
32118 return WDI_STATUS_E_FAILURE;
32119 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032120
32121 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032122 halLLStatsClearParams.stats_clear_req_mask =
32123 pwdiLLStatsClearReqParams->statsClearReqMask;
32124 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
32125
32126 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32127 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
32128 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32129 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
32130 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32131 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
32132 halLLStatsClearParams.stats_clear_req_mask);
32133 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32134 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
32135
32136 wpalMemoryCopy(pSendBuffer+usDataOffset,
32137 &halLLStatsClearParams,
32138 sizeof(halLLStatsClearParams));
32139
32140 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32141
32142 /*-------------------------------------------------------------------------
32143 Send Clear Link Layer Stats Request to HAL
32144 -------------------------------------------------------------------------*/
32145 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32146 wdiLLStatsClearCb, pEventData->pUserData,
32147 WDI_LL_STATS_CLEAR_RSP);
32148}
32149#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053032150
Abhishek Singh85b74712014-10-08 11:38:19 +053032151WDI_Status WDI_FWStatsGetReq( void* pUserData,
32152 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
32153 wpt_uint32 stats)
32154{
32155 WDI_EventInfoType wdiEventData;
32156
32157 /*------------------------------------------------------------------------
32158 Sanity Check
32159 ------------------------------------------------------------------------*/
32160 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32161 {
32162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32163 "WDI API call before module is initialized - Fail request");
32164 return WDI_STATUS_E_NOT_ALLOWED;
32165 }
32166 /*------------------------------------------------------------------------
32167 Fill in Event data and post to the Main FSM
32168 ------------------------------------------------------------------------*/
32169 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
32170 wdiEventData.pEventData = (void *)&stats;
32171 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
32172 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
32173 wdiEventData.pUserData = pUserData;
32174
32175 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32176
32177}
32178
Katya Nigamf0511f62015-05-05 16:40:57 +053032179WDI_Status
32180WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032181 WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032182 void* pUserData)
32183{
32184 WDI_EventInfoType wdiEventData;
32185
32186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32187 "%s", __func__);
32188
32189 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32190 {
32191 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32192 "WDI API call before module is initialized - Fail request");
32193
32194 return WDI_STATUS_E_NOT_ALLOWED;
32195 }
32196
32197 wdiEventData.wdiRequest = WDI_MON_START_REQ;
32198 wdiEventData.pEventData = pwdiMonStartReqParams;
32199 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032200 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032201 wdiEventData.pUserData = pUserData;
32202
32203 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32204}
32205
32206WDI_Status
32207WDI_ProcessMonStartReq
32208(
32209 WDI_ControlBlockType* pWDICtx,
32210 WDI_EventInfoType* pEventData
32211)
32212{
32213 WDI_MonStartReqType* pwdiMonStartReqParams;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032214 WDI_MonModeRspCb wdiMonStartCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032215 wpt_uint8* pSendBuffer = NULL;
32216 wpt_uint16 usSendSize = 0;
32217 wpt_uint16 usDataOffset = 0;
32218 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
32219
32220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32221 "%s", __func__);
32222
32223 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32224 ( NULL == pEventData->pCBfnc ))
32225 {
32226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32227 "%s: Invalid parameters", __func__);
32228 WDI_ASSERT(0);
32229 return WDI_STATUS_E_FAILURE;
32230 }
32231
32232 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032233 wdiMonStartCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032234
32235 /*-----------------------------------------------------------------------
32236 Get message buffer
32237 ! TO DO : proper conversion into the HAL Message Request Format
32238 -----------------------------------------------------------------------*/
32239 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32240 pWDICtx,
32241 WDI_MON_START_REQ,
32242 sizeof(tHalEnableMonitorModeReqParams),
32243 &pSendBuffer, &usDataOffset,
32244 &usSendSize))||
32245 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
32246 {
32247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32248 "Unable to get send buffer in %s %p %p %p", __func__,
32249 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
32250 WDI_ASSERT(0);
32251 return WDI_STATUS_E_FAILURE;
32252 }
32253
32254 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
32255 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
32256 pwdiMonStartReqParams->ChannelBW);
32257 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
32258 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
32259 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
32260 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
32261 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
32262 pwdiMonStartReqParams->mmFilters[0].macAddr,
32263 sizeof( wpt_macAddr ));
32264 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
32265 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
32266 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
32267 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
32268
32269 wpalMemoryCopy(pSendBuffer+usDataOffset,
32270 &halEnableMonitorModeParams,
32271 sizeof(halEnableMonitorModeParams));
32272
32273 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32274
32275 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32276 wdiMonStartCb, pEventData->pUserData,
32277 WDI_MON_START_RSP);
32278}
32279
32280WDI_Status
32281WDI_ProcessMonStartRsp
32282(
32283 WDI_ControlBlockType* pWDICtx,
32284 WDI_EventInfoType* pEventData
32285)
32286{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032287 WDI_MonModeRspCb wdiMonStartRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032288
32289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32290 "%s: Enter ", __func__);
32291 /*-------------------------------------------------------------------------
32292 Sanity check
32293 -------------------------------------------------------------------------*/
32294 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32295 ( NULL == pEventData->pEventData))
32296 {
32297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32298 "%s: Invalid parameters", __func__);
32299 WDI_ASSERT(0);
32300 return WDI_STATUS_E_FAILURE;
32301 }
32302
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032303 wdiMonStartRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032304
32305 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32306
32307 return WDI_STATUS_SUCCESS;
32308}
32309
32310WDI_Status
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032311WDI_MonStopReq(WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032312 void* pUserData)
32313{
32314 WDI_EventInfoType wdiEventData;
32315
32316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32317 "%s", __func__);
32318
32319 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32320 {
32321 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32322 "WDI API call before module is initialized - Fail request");
32323
32324 return WDI_STATUS_E_NOT_ALLOWED;
32325 }
32326
32327 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
32328 wdiEventData.pEventData = NULL;
32329 wdiEventData.uEventDataSize = sizeof(NULL);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032330 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032331 wdiEventData.pUserData = pUserData;
32332
32333 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32334}
32335
32336WDI_Status
32337WDI_ProcessMonStopReq
32338(
32339 WDI_ControlBlockType* pWDICtx,
32340 WDI_EventInfoType* pEventData
32341)
32342{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032343 WDI_MonModeRspCb wdiMonStopCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032344 wpt_uint8* pSendBuffer = NULL;
32345 wpt_uint16 usSendSize = 0;
32346 wpt_uint16 usDataOffset = 0;
32347 wpt_uint8 resetConfiguration;
32348
32349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32350 "%s", __func__);
32351
32352 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
32353 {
32354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32355 "%s: Invalid parameters", __func__);
32356 WDI_ASSERT(0);
32357 return WDI_STATUS_E_FAILURE;
32358 }
32359
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032360 wdiMonStopCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032361
32362 /*-----------------------------------------------------------------------
32363 Get message buffer
32364 ! TO DO : proper conversion into the HAL Message Request Format
32365 -----------------------------------------------------------------------*/
32366 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32367 pWDICtx,
32368 WDI_MON_STOP_REQ,
32369 sizeof(wpt_uint8),
32370 &pSendBuffer, &usDataOffset,
32371 &usSendSize))||
32372 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
32373 {
32374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32375 "Unable to get send buffer in %s %p %p", __func__,
32376 pEventData, wdiMonStopCb);
32377 WDI_ASSERT(0);
32378 return WDI_STATUS_E_FAILURE;
32379 }
32380
32381 wpalMemoryCopy(pSendBuffer+usDataOffset,
32382 &resetConfiguration,
32383 sizeof(wpt_uint8));
32384
32385 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32386
32387 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32388 wdiMonStopCb, pEventData->pUserData,
32389 WDI_MON_STOP_RSP);
32390}
32391
32392WDI_Status
32393WDI_ProcessMonStopRsp
32394(
32395 WDI_ControlBlockType* pWDICtx,
32396 WDI_EventInfoType* pEventData
32397)
32398{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032399 WDI_MonModeRspCb wdiMonStopRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032400
32401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32402 "%s: Enter ", __func__);
32403 /*-------------------------------------------------------------------------
32404 Sanity check
32405 -------------------------------------------------------------------------*/
32406 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
32407 {
32408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32409 "%s: Invalid parameters", __func__);
32410 WDI_ASSERT(0);
32411 return WDI_STATUS_E_FAILURE;
32412 }
32413
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032414 wdiMonStopRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032415
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032416 wdiMonStopRspCb(pWDICtx->pRspCBUserData, pWDICtx->pRspCBUserData);
Katya Nigamf0511f62015-05-05 16:40:57 +053032417
32418 return WDI_STATUS_SUCCESS;
32419}
32420
Dino Mycle41bdc942014-06-10 11:30:24 +053032421#ifdef WLAN_FEATURE_EXTSCAN
32422
32423/**
32424 @brief Process EXTSCAN BUffer full indication from FW
32425
32426 @param pWDICtx: pointer to the WLAN DAL context
32427 pEventData: pointer to the event information structure
32428
32429 @see
32430 @return Result of the function call
32431*/
32432WDI_Status
32433WDI_ProcessEXTScanProgressInd
32434(
32435 WDI_ControlBlockType* pWDICtx,
32436 WDI_EventInfoType* pEventData
32437)
32438{
32439 WDI_LowLevelIndType wdiInd;
32440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32441
32442 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32443 "%s: ", __func__);
32444
32445 /* sanity check */
32446 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32447 ( NULL == pEventData->pEventData))
32448 {
32449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32450 "%s: Invalid parameters", __func__);
32451 WDI_ASSERT(0);
32452 return WDI_STATUS_E_FAILURE;
32453 }
32454
32455 /* Fill in the indication parameters */
32456 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
32457
32458 /* extract response and send it to UMAC */
32459 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32460
32461 /* Notify UMAC */
32462 if (pWDICtx->wdiLowLevelIndCB)
32463 {
32464 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32465 }
32466 else
32467 {
Dino Mycled3d50022014-07-07 12:58:25 +053032468 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032469 "%s: WDILowLevelIndCb is null", __func__);
32470 WDI_ASSERT(0);
32471 return WDI_STATUS_E_FAILURE;
32472 }
32473 return WDI_STATUS_SUCCESS;
32474
32475} /* End of WDI_ProcessEXTScanProgressInd */
32476
32477
32478/**
32479 @brief Process EXTScan Scan Available indication from FW
32480
32481 @param pWDICtx: pointer to the WLAN DAL context
32482 pEventData: pointer to the event information structure
32483
32484 @see
32485 @return Result of the function call
32486*/
32487WDI_Status
32488WDI_ProcessEXTScanScanAvailableInd
32489(
32490 WDI_ControlBlockType* pWDICtx,
32491 WDI_EventInfoType* pEventData
32492)
32493{
32494 WDI_LowLevelIndType wdiInd;
32495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32496
32497 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32498 "%s: ", __func__);
32499
32500 /* sanity check */
32501 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32502 ( NULL == pEventData->pEventData))
32503 {
32504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32505 "%s: Invalid parameters", __func__);
32506 WDI_ASSERT(0);
32507 return WDI_STATUS_E_FAILURE;
32508 }
32509
32510
32511
32512 /* Fill in the indication parameters */
32513 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32514
32515 /* extract response and send it to UMAC */
32516 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32517
32518 /* Notify UMAC */
32519 if (pWDICtx->wdiLowLevelIndCB)
32520 {
32521 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32522 }
32523 else
32524 {
32525 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32526 "%s: WDILowLevelIndCb is null", __func__);
32527 WDI_ASSERT(0);
32528 return WDI_STATUS_E_FAILURE;
32529 }
32530 return WDI_STATUS_SUCCESS;
32531} /* End of WDI_ProcessEXTScanScanDoneInd */
32532
32533/**
32534 @brief Process EXTScan Result Indication indication from FW
32535
32536 @param pWDICtx: pointer to the WLAN DAL context
32537 pEventData: pointer to the event information structure
32538
32539 @see
32540 @return Result of the function call
32541*/
32542WDI_Status
32543WDI_ProcessEXTScanResultInd
32544(
32545 WDI_ControlBlockType* pWDICtx,
32546 WDI_EventInfoType* pEventData
32547)
32548{
32549 WDI_LowLevelIndType wdiInd;
32550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32551
32552 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32553 "%s: ", __func__);
32554
32555 /* sanity check */
32556 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32557 ( NULL == pEventData->pEventData))
32558 {
32559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32560 "%s: Invalid parameters", __func__);
32561 WDI_ASSERT(0);
32562 return WDI_STATUS_E_FAILURE;
32563 }
32564
32565 /* Fill in the indication parameters */
32566 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32567
32568 /* extract response and send it to UMAC */
32569 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32570
32571 /* Notify UMAC */
32572 if (pWDICtx->wdiLowLevelIndCB)
32573 {
32574 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32575 }
32576 else
32577 {
32578 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32579 "%s: WDILowLevelIndCb is null", __func__);
32580 WDI_ASSERT(0);
32581 return WDI_STATUS_E_FAILURE;
32582 }
32583 return WDI_STATUS_SUCCESS;
32584} /* End of WDI_ProcessEXTScanResultInd */
32585
32586/**
32587 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32588
32589 @param pWDICtx: pointer to the WLAN DAL context
32590 pEventData: pointer to the event information structure
32591
32592 @see
32593 @return Result of the function call
32594*/
32595WDI_Status
32596WDI_ProcessEXTScanBssidHotListResultInd
32597(
32598 WDI_ControlBlockType* pWDICtx,
32599 WDI_EventInfoType* pEventData
32600)
32601{
32602 WDI_LowLevelIndType wdiInd;
32603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32604
32605 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32606 "%s: ", __func__);
32607
32608 /* sanity check */
32609 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32610 ( NULL == pEventData->pEventData))
32611 {
32612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32613 "%s: Invalid parameters", __func__);
32614 WDI_ASSERT(0);
32615 return WDI_STATUS_E_FAILURE;
32616 }
32617
32618 /* Fill in the indication parameters */
32619 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32620
32621 /* extract response and send it to UMAC */
32622 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32623
32624 /* Notify UMAC */
32625 if (pWDICtx->wdiLowLevelIndCB)
32626 {
32627 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32628 }
32629 else
32630 {
32631 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32632 "%s: WDILowLevelIndCb is null", __func__);
32633 WDI_ASSERT(0);
32634 return WDI_STATUS_E_FAILURE;
32635 }
32636 return WDI_STATUS_SUCCESS;
32637} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32638
32639/**
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053032640 @brief Process EXTScan SSID Hotlist Result Indication indication from FW
32641
32642 @param pWDICtx: pointer to the WLAN DAL context
32643 pEventData: pointer to the event information structure
32644
32645 @see
32646 @return Result of the function call
32647*/
32648WDI_Status
32649WDI_ProcessEXTScanSsidHotListResultInd
32650(
32651 WDI_ControlBlockType* pWDICtx,
32652 WDI_EventInfoType* pEventData
32653)
32654{
32655 WDI_LowLevelIndType wdiInd;
32656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32657
32658 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32659 "%s: ", __func__);
32660
32661 /* sanity check */
32662 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32663 ( NULL == pEventData->pEventData))
32664 {
32665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32666 "%s: Invalid parameters", __func__);
32667 WDI_ASSERT(0);
32668 return WDI_STATUS_E_FAILURE;
32669 }
32670
32671 /* Fill in the indication parameters */
32672 wdiInd.wdiIndicationType = WDI_EXTSCAN_SSID_HOTLIST_RESULT_IND;
32673
32674 /* extract response and send it to UMAC */
32675 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32676
32677 /* Notify UMAC */
32678 if (pWDICtx->wdiLowLevelIndCB)
32679 {
32680 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32681 }
32682 else
32683 {
32684 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32685 "%s: WDILowLevelIndCb is null", __func__);
32686 WDI_ASSERT(0);
32687 return WDI_STATUS_E_FAILURE;
32688 }
32689 return WDI_STATUS_SUCCESS;
32690} /* End of WDI_ProcessEXTScanSsidHotListResultInd */
32691
32692
32693/**
Dino Mycle41bdc942014-06-10 11:30:24 +053032694 @brief WDI_EXTScanGetCapabilitiesReq
32695
32696 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32697 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32698 of the Req operation received from the device
32699 pUserData: user data will be passed back with the callback
32700
32701 @return SUCCESS or FAIL
32702*/
32703WDI_Status
32704WDI_EXTScanGetCapabilitiesReq(
32705 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32706 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32707 void* pUserData)
32708{
32709 WDI_EventInfoType wdiEventData;
32710
32711 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32712 "%s: %d ",__func__, __LINE__);
32713 /*------------------------------------------------------------------------
32714 Sanity Check
32715 ------------------------------------------------------------------------*/
32716 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32717 {
32718 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32719 "WDI API call before module is initialized - Fail request");
32720
32721 return WDI_STATUS_E_NOT_ALLOWED;
32722 }
32723
32724 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32725 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32726 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32727 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32728 wdiEventData.pUserData = pUserData;
32729
32730 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32731}
32732
32733/**
32734 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32735 Extended Scan Get Capability request to FW
32736
32737 @param pWDICtx : wdi context
32738 pEventData : indication data
32739
32740 @see
32741 @return none
32742*/
32743WDI_Status
32744WDI_ProcessEXTScanGetCapabilitiesReq
32745(
32746 WDI_ControlBlockType* pWDICtx,
32747 WDI_EventInfoType* pEventData
32748)
32749{
32750 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32751 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32752 wpt_uint8* pSendBuffer = NULL;
32753 wpt_uint16 usSendSize = 0;
32754 wpt_uint16 usDataOffset = 0;
32755 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32756
32757 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32758 "%s: %d Enter",__func__, __LINE__);
32759
32760 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32761 ( NULL == pEventData->pCBfnc ))
32762 {
32763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32764 "%s: Invalid parameters", __func__);
32765 WDI_ASSERT(0);
32766 return WDI_STATUS_E_FAILURE;
32767 }
32768
32769 pwdiEXTScanGetCapabilitiesReqParams =
32770 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
32771 wdiEXTScanGetCapabilitiesRspCb =
32772 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
32773
32774 /*-----------------------------------------------------------------------
32775 Get message buffer
32776 ! TO DO : proper conversion into the HAL Message Request Format
32777 -----------------------------------------------------------------------*/
32778 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32779 pWDICtx,
32780 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
32781 sizeof(halEXTScanGetCapReqParams),
32782 &pSendBuffer, &usDataOffset,
32783 &usSendSize))||
32784 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
32785 {
32786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32787 "Unable to get send buffer in %s %p %p %p", __func__,
32788 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
32789 wdiEXTScanGetCapabilitiesRspCb);
32790 WDI_ASSERT(0);
32791 return WDI_STATUS_E_FAILURE;
32792 }
32793
32794 halEXTScanGetCapReqParams.requestId =
32795 pwdiEXTScanGetCapabilitiesReqParams->requestId;
32796 halEXTScanGetCapReqParams.sessionId =
32797 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
32798
32799 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32800 " requestId %u "
32801 " sessionId %u ",
32802 halEXTScanGetCapReqParams.requestId,
32803 halEXTScanGetCapReqParams.sessionId);
32804
32805 wpalMemoryCopy(pSendBuffer+usDataOffset,
32806 &halEXTScanGetCapReqParams,
32807 sizeof(halEXTScanGetCapReqParams));
32808
32809 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32810
32811
32812 /*-------------------------------------------------------------------------
32813 Send EXTScan Stop Request to HAL
32814 -------------------------------------------------------------------------*/
32815 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32816 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
32817 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
32818}
32819
32820/**
32821 @brief WDI_EXTScanGetCachedResultsReq
32822
32823 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
32824 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
32825 of the Req operation received from the device
32826 pUserData: user data will be passed back with the callback
32827
32828 @return SUCCESS or FAIL
32829*/
32830
32831WDI_Status
32832WDI_EXTScanGetCachedResultsReq(
32833 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
32834 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
32835 void* pUserData)
32836{
32837 WDI_EventInfoType wdiEventData;
32838
32839 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32840 "%s: %d Enter",__func__, __LINE__);
32841 /*------------------------------------------------------------------------
32842 Sanity Check
32843 ------------------------------------------------------------------------*/
32844 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32845 {
32846 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32847 "WDI API call before module is initialized - Fail request");
32848
32849 return WDI_STATUS_E_NOT_ALLOWED;
32850 }
32851
32852 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
32853 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
32854 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
32855 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
32856 wdiEventData.pUserData = pUserData;
32857
32858 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32859}
32860
32861/**
32862 @brief WDI_ProcessEXTScanGetCachedResultsReq -
32863 Extended Scan Get Cached Result request to FW
32864
32865 @param pWDICtx : wdi context
32866 pEventData : indication data
32867
32868 @see
32869 @return none
32870*/
32871WDI_Status
32872WDI_ProcessEXTScanGetCachedResultsReq
32873(
32874 WDI_ControlBlockType* pWDICtx,
32875 WDI_EventInfoType* pEventData
32876)
32877{
32878 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
32879 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
32880 wpt_uint8* pSendBuffer = NULL;
32881 wpt_uint16 usSendSize = 0;
32882 wpt_uint16 usDataOffset = 0;
32883 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
32884
32885 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32886 "%s: %d Enter",__func__, __LINE__);
32887
32888 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32889 ( NULL == pEventData->pCBfnc ))
32890 {
32891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32892 "%s: Invalid parameters", __func__);
32893 WDI_ASSERT(0);
32894 return WDI_STATUS_E_FAILURE;
32895 }
32896
32897 pwdiEXTScanGetCachedResultsReqParams =
32898 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
32899 wdiEXTScanGetCachedResultsCb =
32900 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
32901
32902 /*-----------------------------------------------------------------------
32903 Get message buffer
32904 ! TO DO : proper conversion into the HAL Message Request Format
32905 -----------------------------------------------------------------------*/
32906 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32907 pWDICtx,
32908 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
32909 sizeof(tHalExtScanGetScanReq),
32910 &pSendBuffer, &usDataOffset,
32911 &usSendSize))||
32912 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
32913 {
32914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32915 "Unable to get send buffer in %s %p %p %p", __func__,
32916 pEventData, pwdiEXTScanGetCachedResultsReqParams,
32917 wdiEXTScanGetCachedResultsCb);
32918 WDI_ASSERT(0);
32919 return WDI_STATUS_E_FAILURE;
32920 }
32921
32922 halEXTScanGetScanReqParams.requestId =
32923 pwdiEXTScanGetCachedResultsReqParams->requestId;
32924 halEXTScanGetScanReqParams.sessionId =
32925 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32926 halEXTScanGetScanReqParams.flush =
32927 pwdiEXTScanGetCachedResultsReqParams->flush;
32928
32929 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32930 " requestId %u "
32931 " sessionId %u "
32932 " flush %u ",
32933 halEXTScanGetScanReqParams.requestId,
32934 halEXTScanGetScanReqParams.sessionId,
32935 halEXTScanGetScanReqParams.flush);
32936
32937 wpalMemoryCopy(pSendBuffer+usDataOffset,
32938 &halEXTScanGetScanReqParams,
32939 sizeof(halEXTScanGetScanReqParams));
32940
32941 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32942
32943
32944 /*-------------------------------------------------------------------------
32945 Send EXTScan Stop Request to HAL
32946 -------------------------------------------------------------------------*/
32947 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32948 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32949 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32950}
32951
32952/**
32953 @brief WDI_EXTScanStopReq
32954
32955 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32956 WDI_EXTScanStopRspCb: callback for passing back the response
32957 of the Req operation received from the device
32958 pUserData: user data will be passed back with the callback
32959
32960 @return SUCCESS or FAIL
32961*/
32962WDI_Status
32963WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32964 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32965 void* pUserData)
32966{
32967 WDI_EventInfoType wdiEventData;
32968
32969 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32970 "%s: %d ",__func__, __LINE__);
32971 /*------------------------------------------------------------------------
32972 Sanity Check
32973 ------------------------------------------------------------------------*/
32974 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32975 {
32976 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32977 "WDI API call before module is initialized - Fail request");
32978
32979 return WDI_STATUS_E_NOT_ALLOWED;
32980 }
32981
32982 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32983 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32984 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32985 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32986 wdiEventData.pUserData = pUserData;
32987
32988 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32989}
32990
32991/**
32992 @brief WDI_ProcessEXTScanStopReq -
32993 Extended Scan Stop request to FW
32994
32995 @param pWDICtx : wdi context
32996 pEventData : indication data
32997
32998 @see
32999 @return none
33000*/
33001WDI_Status
33002WDI_ProcessEXTScanStopReq
33003(
33004 WDI_ControlBlockType* pWDICtx,
33005 WDI_EventInfoType* pEventData
33006)
33007{
33008 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
33009 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
33010 wpt_uint8* pSendBuffer = NULL;
33011 wpt_uint16 usSendSize = 0;
33012 wpt_uint16 usDataOffset = 0;
33013 tHalExtScanStopReq halEXTScanStopReqParams;
33014
33015 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33016 "%s: %d ",__func__, __LINE__);
33017
33018 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33019 ( NULL == pEventData->pCBfnc ))
33020 {
33021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33022 "%s: Invalid parameters", __func__);
33023 WDI_ASSERT(0);
33024 return WDI_STATUS_E_FAILURE;
33025 }
33026
33027 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
33028 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
33029
33030 /*-----------------------------------------------------------------------
33031 Get message buffer
33032 ! TO DO : proper conversion into the HAL Message Request Format
33033 -----------------------------------------------------------------------*/
33034 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33035 pWDICtx,
33036 WDI_EXTSCAN_STOP_REQ,
33037 sizeof(tHalExtScanStopReq),
33038 &pSendBuffer, &usDataOffset,
33039 &usSendSize))||
33040 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
33041 {
33042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33043 "Unable to get send buffer in %s %p %p %p", __func__,
33044 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
33045 WDI_ASSERT(0);
33046 return WDI_STATUS_E_FAILURE;
33047 }
33048
33049 halEXTScanStopReqParams.requestId =
33050 pwdiEXTScanStopReqParams->requestId;
33051 halEXTScanStopReqParams.sessionId =
33052 pwdiEXTScanStopReqParams->sessionId;
33053
33054 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33055 " halEXTScanStopReqParams.requestId %u "
33056 " halEXTScanStopReqParams.sessionId %u ",
33057 halEXTScanStopReqParams.requestId,
33058 halEXTScanStopReqParams.sessionId);
33059
33060 wpalMemoryCopy(pSendBuffer+usDataOffset,
33061 &halEXTScanStopReqParams,
33062 sizeof(halEXTScanStopReqParams));
33063
33064 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33065
33066
33067 /*-------------------------------------------------------------------------
33068 Send EXTScan Stop Request to HAL
33069 -------------------------------------------------------------------------*/
33070 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33071 wdiEXTScanStopCb, pEventData->pUserData,
33072 WDI_EXTSCAN_STOP_RSP);
33073}
33074
33075/**
33076 @brief WDI_EXTScanStartReq
33077
33078 @param WDI_EXTScanStartReqParams: Req parameter for the FW
33079 WDI_EXTScanStartRspCb: callback for passing back the response
33080 of the Req operation received from the device
33081 pUserData: user data will be passed back with the callback
33082
33083 @return SUCCESS or FAIL
33084*/
33085WDI_Status
33086WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
33087 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
33088 void* pUserData)
33089{
33090 WDI_EventInfoType wdiEventData;
33091
33092 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33093 "%s: %d Enter",__func__, __LINE__);
33094 /*------------------------------------------------------------------------
33095 Sanity Check
33096 ------------------------------------------------------------------------*/
33097 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33098 {
33099 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33100 "WDI API call before module is initialized - Fail request");
33101
33102 return WDI_STATUS_E_NOT_ALLOWED;
33103 }
33104
33105 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
33106 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
33107 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
33108 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
33109 wdiEventData.pUserData = pUserData;
33110
33111 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33112}
33113
33114/**
33115 @brief WDI_ProcessEXTScanStartReq -
33116 Extended Scan Start Request to FW
33117
33118 @param pWDICtx : wdi context
33119 pEventData : indication data
33120
33121 @see
33122 @return none
33123*/
33124WDI_Status
33125WDI_ProcessEXTScanStartReq
33126(
33127 WDI_ControlBlockType* pWDICtx,
33128 WDI_EventInfoType* pEventData
33129)
33130{
33131 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
33132 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
33133 wpt_uint8* pSendBuffer = NULL;
33134 wpt_uint16 usSendSize = 0;
33135 wpt_uint16 usDataOffset = 0;
33136 tpHalExtScanStartReq pHalExtScanStartReqParams;
33137 int i = 0;
33138 int j = 0;
33139
33140 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33141 "%s: %d Enter",__func__, __LINE__);
33142
33143 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33144 ( NULL == pEventData->pCBfnc ))
33145 {
33146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33147 "%s: Invalid parameters", __func__);
33148 WDI_ASSERT(0);
33149 return WDI_STATUS_E_FAILURE;
33150 }
33151
33152 pwdiEXTScanStartReqParams =
33153 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
33154 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
33155
33156 /*-----------------------------------------------------------------------
33157 Get message buffer
33158 ! TO DO : proper conversion into the HAL Message Request Format
33159 -----------------------------------------------------------------------*/
33160 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33161 pWDICtx,
33162 WDI_EXTSCAN_START_REQ,
33163 sizeof(tHalExtScanStartReq),
33164 &pSendBuffer, &usDataOffset,
33165 &usSendSize))||
33166 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
33167 {
33168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33169 "Unable to get send buffer in %s %p %p %p", __func__,
33170 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
33171 WDI_ASSERT(0);
33172 return WDI_STATUS_E_FAILURE;
33173 }
33174
33175 pHalExtScanStartReqParams =
33176 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
33177
33178 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
33179 pHalExtScanStartReqParams->maxApPerScan =
33180 pwdiEXTScanStartReqParams->maxAPperScan;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033181 pHalExtScanStartReqParams->reportThresholdPercent =
33182 pwdiEXTScanStartReqParams->reportThresholdPercent;
33183 pHalExtScanStartReqParams->reportThresholdNumScans =
33184 pwdiEXTScanStartReqParams->reportThresholdNumScans;
Dino Mycle41bdc942014-06-10 11:30:24 +053033185 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
33186 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
33187 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033188 pHalExtScanStartReqParams->homeAwayTime = pwdiEXTScanStartReqParams->homeAwayTime;
Dino Mycle41bdc942014-06-10 11:30:24 +053033189
33190 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
33191 {
33192 pHalExtScanStartReqParams->bucketData[i].bucketId =
33193 pwdiEXTScanStartReqParams->buckets[i].bucket;
33194 pHalExtScanStartReqParams->bucketData[i].channelBand =
33195 pwdiEXTScanStartReqParams->buckets[i].band;
33196 pHalExtScanStartReqParams->bucketData[i].period =
33197 pwdiEXTScanStartReqParams->buckets[i].period;
33198 pHalExtScanStartReqParams->bucketData[i].reportEvents =
33199 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033200 pHalExtScanStartReqParams->bucketData[i].max_period =
33201 pwdiEXTScanStartReqParams->buckets[i].max_period;
33202 pHalExtScanStartReqParams->bucketData[i].exponent =
33203 pwdiEXTScanStartReqParams->buckets[i].exponent;
33204 pHalExtScanStartReqParams->bucketData[i].step_count =
33205 pwdiEXTScanStartReqParams->buckets[i].step_count;
Dino Mycle41bdc942014-06-10 11:30:24 +053033206 pHalExtScanStartReqParams->bucketData[i].numChannels =
33207 pwdiEXTScanStartReqParams->buckets[i].numChannels;
33208
33209 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
33210 {
33211 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
33212 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
33213 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
33214 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
33215 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
33216 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
33217 }
33218
33219 }
33220
33221
33222 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033223 " basePeriod %u maxApPerScan %u reportThresholdPercent %u"
33224 "reportThresholdNumScans %u requestId %u"
33225 " sessionId %u numBuckets%u homeAwayTime %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033226 pHalExtScanStartReqParams->basePeriod,
33227 pHalExtScanStartReqParams->maxApPerScan,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033228 pHalExtScanStartReqParams->reportThresholdPercent,
33229 pHalExtScanStartReqParams->reportThresholdNumScans,
Dino Mycle41bdc942014-06-10 11:30:24 +053033230 pHalExtScanStartReqParams->requestId,
33231 pHalExtScanStartReqParams->sessionId,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033232 pHalExtScanStartReqParams->numBuckets,
33233 pHalExtScanStartReqParams->homeAwayTime);
Dino Mycle41bdc942014-06-10 11:30:24 +053033234
33235 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
33236 {
33237 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
33238 " %d) bucketId %u channelBand %u period %u "
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033239 " reportEvents %u numChannels %u "
33240 "max_period %u exponent %u step_count %u",i,
Dino Mycle41bdc942014-06-10 11:30:24 +053033241 pHalExtScanStartReqParams->bucketData[i].bucketId,
33242 pHalExtScanStartReqParams->bucketData[i].channelBand,
33243 pHalExtScanStartReqParams->bucketData[i].period,
33244 pHalExtScanStartReqParams->bucketData[i].reportEvents,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033245 pHalExtScanStartReqParams->bucketData[i].numChannels,
33246 pHalExtScanStartReqParams->bucketData[i].max_period,
33247 pHalExtScanStartReqParams->bucketData[i].exponent,
33248 pHalExtScanStartReqParams->bucketData[i].step_count);
Dino Mycle41bdc942014-06-10 11:30:24 +053033249
33250 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
33251 {
33252 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33253 "%d) channel %u dwellTimeMs %u passive %u ",j,
33254 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
33255 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
33256 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
33257 }
33258
33259 }
33260
Dino Mycle41bdc942014-06-10 11:30:24 +053033261 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33262
33263 /*-------------------------------------------------------------------------
33264 Send EXTSCAN Start Request to HAL
33265 -------------------------------------------------------------------------*/
33266 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33267 wdiEXTScanStartCb, pEventData->pUserData,
33268 WDI_EXTSCAN_START_RSP);
33269}
33270
33271/**
33272 @brief WDI_EXTScanSetBSSIDHotlistReq
33273
33274 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
33275 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
33276 of the Req operation received from the device
33277 pUserData: user data will be passed back with the callback
33278
33279 @return SUCCESS or FAIL
33280*/
33281WDI_Status
33282WDI_EXTScanSetBSSIDHotlistReq(
33283 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
33284 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
33285 void* pUserData)
33286{
33287 WDI_EventInfoType wdiEventData;
33288
33289 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33290 "%s: %d Enter ",__func__, __LINE__);
33291 /*------------------------------------------------------------------------
33292 Sanity Check
33293 ------------------------------------------------------------------------*/
33294 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33295 {
33296 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33297 "WDI API call before module is initialized - Fail request");
33298
33299 return WDI_STATUS_E_NOT_ALLOWED;
33300 }
33301
33302 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
33303 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
33304 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
33305 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
33306 wdiEventData.pUserData = pUserData;
33307
33308 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33309}
33310
33311/**
33312 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
33313 Extended Scan Set BSSSID Hotlist Request to FW
33314
33315 @param pWDICtx : wdi context
33316 pEventData : indication data
33317
33318 @see
33319 @return none
33320*/
33321WDI_Status
33322WDI_ProcessEXTScanSetBSSIDHotlistReq
33323(
33324 WDI_ControlBlockType* pWDICtx,
33325 WDI_EventInfoType* pEventData
33326)
33327{
33328 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
33329 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33330 wpt_uint8* pSendBuffer = NULL;
33331 wpt_uint16 usSendSize = 0;
33332 wpt_uint16 usDataOffset = 0;
33333 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
33334 int i;
33335
33336 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33337 "%s: %d Enter",__func__, __LINE__);
33338
33339 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33340 ( NULL == pEventData->pCBfnc ))
33341 {
33342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33343 "%s: Invalid parameters", __func__);
33344 WDI_ASSERT(0);
33345 return WDI_STATUS_E_FAILURE;
33346 }
33347
33348 pwdiEXTScanSetBSSIDHotlistReqParams =
33349 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
33350 wdiEXTScanSetBSSIDHotlistRspCb =
33351 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
33352
33353 /*-----------------------------------------------------------------------
33354 Get message buffer
33355 ! TO DO : proper conversion into the HAL Message Request Format
33356 -----------------------------------------------------------------------*/
33357 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33358 pWDICtx,
33359 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
33360 sizeof(tHalBssidHotlistSetReq),
33361 &pSendBuffer, &usDataOffset,
33362 &usSendSize))||
33363 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
33364 {
33365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33366 "Unable to get send buffer in %s %p %p %p", __func__,
33367 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
33368 wdiEXTScanSetBSSIDHotlistRspCb);
33369 WDI_ASSERT(0);
33370 return WDI_STATUS_E_FAILURE;
33371 }
33372 pHalBssidHotlistSetReqParams =
33373 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
33374
33375 pHalBssidHotlistSetReqParams->requestId =
33376 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
33377
33378 pHalBssidHotlistSetReqParams->sessionId =
33379 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
33380
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033381 pHalBssidHotlistSetReqParams->lostBssidSampleSize =
33382 pwdiEXTScanSetBSSIDHotlistReqParams->lostBssidSampleSize;
33383
33384 pHalBssidHotlistSetReqParams->numBssid =
33385 pwdiEXTScanSetBSSIDHotlistReqParams->numBssid;
Dino Mycle41bdc942014-06-10 11:30:24 +053033386
33387 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
33388
33389 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
33390 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
33391 WDI_MAC_ADDR_LEN);
33392
33393 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
33394 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
33395
33396 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
33397 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
33398
Dino Mycle41bdc942014-06-10 11:30:24 +053033399 }
33400
33401 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033402 "ReqID %u sessionId %u numBssid %u lostBssidSampleSize: %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033403 pHalBssidHotlistSetReqParams->requestId,
33404 pHalBssidHotlistSetReqParams->sessionId,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033405 pHalBssidHotlistSetReqParams->numBssid,
33406 pHalBssidHotlistSetReqParams->lostBssidSampleSize);
Dino Mycle41bdc942014-06-10 11:30:24 +053033407
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033408 for( i = 0; i < pHalBssidHotlistSetReqParams->numBssid; i++){
Dino Mycle41bdc942014-06-10 11:30:24 +053033409
33410 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033411 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d",
Dino Mycle41bdc942014-06-10 11:30:24 +053033412 __func__, __LINE__, i,
33413 pHalBssidHotlistSetReqParams->ap[i].bssid,
33414 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033415 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold);
Dino Mycle41bdc942014-06-10 11:30:24 +053033416
33417 }
33418
33419 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33420
33421
33422 /*-------------------------------------------------------------------------
33423 Send EXTScan Stop Request to HAL
33424 -------------------------------------------------------------------------*/
33425 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33426 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
33427 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
33428}
33429
33430/**
33431 @brief WDI_EXTScanResetBSSIDHotlistReq
33432
33433 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
33434 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
33435 of the Req operation received from the device
33436 pUserData: user data will be passed back with the callback
33437
33438 @return SUCCESS or FAIL
33439*/
33440WDI_Status
33441WDI_EXTScanResetBSSIDHotlistReq(
33442 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
33443 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
33444 void* pUserData)
33445{
33446 WDI_EventInfoType wdiEventData;
33447
33448 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33449 "%s: %d",__func__, __LINE__);
33450 /*------------------------------------------------------------------------
33451 Sanity Check
33452 ------------------------------------------------------------------------*/
33453 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33454 {
33455 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33456 "WDI API call before module is initialized - Fail request");
33457
33458 return WDI_STATUS_E_NOT_ALLOWED;
33459 }
33460
33461 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
33462 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
33463 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
33464 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
33465 wdiEventData.pUserData = pUserData;
33466
33467 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33468}
33469
33470/**
33471 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
33472 Extended Scan reset BSSID hotlist Request to FW
33473
33474 @param pWDICtx : wdi context
33475 pEventData : indication data
33476
33477 @see
33478 @return none
33479*/
33480WDI_Status
33481WDI_ProcessEXTScanResetBSSIDHotlistReq
33482(
33483 WDI_ControlBlockType* pWDICtx,
33484 WDI_EventInfoType* pEventData
33485)
33486{
33487 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33488 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33489 wpt_uint8* pSendBuffer = NULL;
33490 wpt_uint16 usSendSize = 0;
33491 wpt_uint16 usDataOffset = 0;
33492 tpHalHotlistResetReq pHalHotlistResetReqParams;
33493
33494 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33495 "%s: %d",__func__, __LINE__);
33496
33497 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33498 ( NULL == pEventData->pCBfnc ))
33499 {
33500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33501 "%s: Invalid parameters", __func__);
33502 WDI_ASSERT(0);
33503 return WDI_STATUS_E_FAILURE;
33504 }
33505
33506 pwdiEXTScanResetBSSIDHotlistReqParams =
33507 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33508 wdiEXTScanResetBSSIDHotlistRspCb =
33509 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33510
33511 /*-----------------------------------------------------------------------
33512 Get message buffer
33513 ! TO DO : proper conversion into the HAL Message Request Format
33514 -----------------------------------------------------------------------*/
33515 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33516 pWDICtx,
33517 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33518 sizeof(tHalHotlistResetReq),
33519 &pSendBuffer, &usDataOffset,
33520 &usSendSize))||
33521 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33522 {
33523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33524 "Unable to get send buffer in %s %p %p %p", __func__,
33525 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33526 wdiEXTScanResetBSSIDHotlistRspCb);
33527 WDI_ASSERT(0);
33528 return WDI_STATUS_E_FAILURE;
33529 }
33530 pHalHotlistResetReqParams =
33531 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33532
33533 pHalHotlistResetReqParams->requestId =
33534 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33535
33536 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33537
33538 /*-------------------------------------------------------------------------
33539 Send EXTScan Stop Request to HAL
33540 -------------------------------------------------------------------------*/
33541 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33542 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33543 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33544}
33545
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053033546
33547/**
33548 @brief WDI_EXTScanSetSSIDHotlistReq
33549
33550 @param WDI_EXTScanSetSSIDHotlistReqParams: Req parameter for the FW
33551 WDI_EXTScanSetSSIDHotlistRspCb: callback for passing back the response
33552 of the Req operation received from the device
33553 pUserData: user data will be passed back with the callback
33554
33555 @return SUCCESS or FAIL
33556*/
33557WDI_Status
33558WDI_EXTScanSetSSIDHotlistReq(
33559 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams,
33560 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb,
33561 void* pUserData)
33562{
33563 WDI_EventInfoType wdiEventData;
33564
33565 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33566 "%s: %d Enter ",__func__, __LINE__);
33567 /*------------------------------------------------------------------------
33568 Sanity Check
33569 ------------------------------------------------------------------------*/
33570 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33571 {
33572 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33573 "WDI API call before module is initialized - Fail request");
33574
33575 return WDI_STATUS_E_NOT_ALLOWED;
33576 }
33577
33578 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SSID_HOTLIST_REQ;
33579 wdiEventData.pEventData = pwdiEXTScanSetSSIDHotlistReqParams;
33580 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetSSIDHotlistReqParams);
33581 wdiEventData.pCBfnc = wdiEXTScanSetSSIDHotlistRspCb;
33582 wdiEventData.pUserData = pUserData;
33583
33584 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33585}
33586
33587/**
33588 @brief WDI_ProcessEXTScanSetSSIDHotlistReq -
33589 Extended Scan Set SSSID Hotlist Request to FW
33590
33591 @param pWDICtx : wdi context
33592 pEventData : indication data
33593
33594 @see
33595 @return none
33596*/
33597WDI_Status
33598WDI_ProcessEXTScanSetSSIDHotlistReq
33599(
33600 WDI_ControlBlockType* pWDICtx,
33601 WDI_EventInfoType* pEventData
33602)
33603{
33604 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams;
33605 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
33606 wpt_uint8* pSendBuffer = NULL;
33607 wpt_uint16 usSendSize = 0;
33608 wpt_uint16 usDataOffset = 0;
33609 tpHalSsidHotlistSetReq pHalSsidHotlistSetReqParams;
33610 int i;
33611
33612 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33613 "%s: %d Enter",__func__, __LINE__);
33614
33615 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33616 ( NULL == pEventData->pCBfnc ))
33617 {
33618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33619 "%s: Invalid parameters", __func__);
33620 WDI_ASSERT(0);
33621 return WDI_STATUS_E_FAILURE;
33622 }
33623
33624 pwdiEXTScanSetSSIDHotlistReqParams =
33625 (WDI_EXTScanSetSSIDHotlistReqParams *)pEventData->pEventData;
33626 wdiEXTScanSetSSIDHotlistRspCb =
33627 (WDI_EXTScanSetSSIDHotlistRspCb)pEventData->pCBfnc;
33628
33629 /*-----------------------------------------------------------------------
33630 Get message buffer
33631 ! TO DO : proper conversion into the HAL Message Request Format
33632 -----------------------------------------------------------------------*/
33633 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33634 pWDICtx,
33635 WDI_EXTSCAN_SET_SSID_HOTLIST_REQ,
33636 sizeof(tHalSsidHotlistSetReq),
33637 &pSendBuffer, &usDataOffset,
33638 &usSendSize))||
33639 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistSetReq) )))
33640 {
33641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33642 "Unable to get send buffer in %s %p %p %p", __func__,
33643 pEventData, pwdiEXTScanSetSSIDHotlistReqParams,
33644 wdiEXTScanSetSSIDHotlistRspCb);
33645 WDI_ASSERT(0);
33646 return WDI_STATUS_E_FAILURE;
33647 }
33648 pHalSsidHotlistSetReqParams =
33649 (tpHalSsidHotlistSetReq) (pSendBuffer + usDataOffset);
33650
33651 pHalSsidHotlistSetReqParams->requestId =
33652 pwdiEXTScanSetSSIDHotlistReqParams->requestId;
33653
33654 pHalSsidHotlistSetReqParams->sessionId =
33655 pwdiEXTScanSetSSIDHotlistReqParams->sessionId;
33656
33657 pHalSsidHotlistSetReqParams->lostSsidSampleSize =
33658 pwdiEXTScanSetSSIDHotlistReqParams->lostSsidSampleSize;;
33659
33660 pHalSsidHotlistSetReqParams->numSsid =
33661 pwdiEXTScanSetSSIDHotlistReqParams->numSsid;
33662
33663 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
33664
33665 wpalMemoryZero(pHalSsidHotlistSetReqParams->ssid[i].ssid, 33);
33666 wpalMemoryCopy(pHalSsidHotlistSetReqParams->ssid[i].ssid,
33667 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.sSSID,
33668 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.ucLength);
33669
33670 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold =
33671 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].lowRssiThreshold;
33672
33673 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold =
33674 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].highRssiThreshold;
33675
33676 pHalSsidHotlistSetReqParams->ssid[i].band =
33677 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].band;
33678 }
33679
33680 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33681 "ReqID %u sessionId %u numSsid %u lost_ssid_sample_size: %u",
33682 pHalSsidHotlistSetReqParams->requestId,
33683 pHalSsidHotlistSetReqParams->sessionId,
33684 pHalSsidHotlistSetReqParams->numSsid,
33685 pHalSsidHotlistSetReqParams->lostSsidSampleSize);
33686
33687 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
33688
33689 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33690 "%s %d %d) SSID = %s lowRssiThreshold %d highRssiThreshold %d band: %d",
33691 __func__, __LINE__, i,
33692 pHalSsidHotlistSetReqParams->ssid[i].ssid,
33693 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold,
33694 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold,
33695 pHalSsidHotlistSetReqParams->ssid[i].band);
33696 }
33697
33698 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33699
33700
33701 /*-------------------------------------------------------------------------
33702 Send EXTScan Stop Request to HAL
33703 -------------------------------------------------------------------------*/
33704 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33705 wdiEXTScanSetSSIDHotlistRspCb, pEventData->pUserData,
33706 WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
33707}
33708
33709/**
33710 @brief WDI_EXTScanResetSSIDHotlistReq
33711
33712 @param WDI_EXTScanResetSSIDHotlistReqParams: Req parameter for the FW
33713 WDI_EXTScanResetSSIDHotlistRspCb: callback for passing back the response
33714 of the Req operation received from the device
33715 pUserData: user data will be passed back with the callback
33716
33717 @return SUCCESS or FAIL
33718*/
33719WDI_Status
33720WDI_EXTScanResetSSIDHotlistReq(
33721 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams,
33722 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb,
33723 void* pUserData)
33724{
33725 WDI_EventInfoType wdiEventData;
33726
33727 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33728 "%s: %d",__func__, __LINE__);
33729 /*------------------------------------------------------------------------
33730 Sanity Check
33731 ------------------------------------------------------------------------*/
33732 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33733 {
33734 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33735 "WDI API call before module is initialized - Fail request");
33736
33737 return WDI_STATUS_E_NOT_ALLOWED;
33738 }
33739
33740 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ;
33741 wdiEventData.pEventData = pwdiEXTScanResetSSIDHotlistReqParams;
33742 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetSSIDHotlistReqParams);
33743 wdiEventData.pCBfnc = wdiEXTScanResetSSIDHotlistRspCb;
33744 wdiEventData.pUserData = pUserData;
33745
33746 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33747}
33748
33749/**
33750 @brief WDI_ProcessEXTScanResetSSIDHotlistReq -
33751 Extended Scan reset SSID hotlist Request to FW
33752
33753 @param pWDICtx : wdi context
33754 pEventData : indication data
33755
33756 @see
33757 @return none
33758*/
33759WDI_Status
33760WDI_ProcessEXTScanResetSSIDHotlistReq
33761(
33762 WDI_ControlBlockType* pWDICtx,
33763 WDI_EventInfoType* pEventData
33764)
33765{
33766 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams;
33767 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
33768 wpt_uint8* pSendBuffer = NULL;
33769 wpt_uint16 usSendSize = 0;
33770 wpt_uint16 usDataOffset = 0;
33771 tpHalSsidHotlistResetReq pHalSsidHotlistResetReqParams;
33772
33773 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33774 "%s: %d",__func__, __LINE__);
33775
33776 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33777 ( NULL == pEventData->pCBfnc ))
33778 {
33779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33780 "%s: Invalid parameters", __func__);
33781 WDI_ASSERT(0);
33782 return WDI_STATUS_E_FAILURE;
33783 }
33784
33785 pwdiEXTScanResetSSIDHotlistReqParams =
33786 (WDI_EXTScanResetSSIDHotlistReqParams *)pEventData->pEventData;
33787 wdiEXTScanResetSSIDHotlistRspCb =
33788 (WDI_EXTScanResetSSIDHotlistRspCb)pEventData->pCBfnc;
33789
33790 /*-----------------------------------------------------------------------
33791 Get message buffer
33792 ! TO DO : proper conversion into the HAL Message Request Format
33793 -----------------------------------------------------------------------*/
33794 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33795 pWDICtx,
33796 WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ,
33797 sizeof(tHalSsidHotlistResetReq),
33798 &pSendBuffer, &usDataOffset,
33799 &usSendSize))||
33800 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistResetReq) )))
33801 {
33802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33803 "Unable to get send buffer in %s %p %p %p", __func__,
33804 pEventData, pwdiEXTScanResetSSIDHotlistReqParams,
33805 wdiEXTScanResetSSIDHotlistRspCb);
33806 WDI_ASSERT(0);
33807 return WDI_STATUS_E_FAILURE;
33808 }
33809 pHalSsidHotlistResetReqParams =
33810 (tpHalSsidHotlistResetReq) (pSendBuffer+usDataOffset);
33811
33812 pHalSsidHotlistResetReqParams->requestId =
33813 pwdiEXTScanResetSSIDHotlistReqParams->requestId;
33814
33815 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33816
33817 /*-------------------------------------------------------------------------
33818 Send RESET_HOTLIST_SSID Request to HAL
33819 -------------------------------------------------------------------------*/
33820 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33821 wdiEXTScanResetSSIDHotlistRspCb, pEventData->pUserData,
33822 WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
33823}
33824
33825
Dino Mycle41bdc942014-06-10 11:30:24 +053033826/**
Dino Mycle41bdc942014-06-10 11:30:24 +053033827 @brief Process Extended Scan Start 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_ProcessEXTScanStartRsp
33838(
33839 WDI_ControlBlockType* pWDICtx,
33840 WDI_EventInfoType* pEventData
33841)
33842{
33843 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
33844
33845 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33846 "%s: %d",__func__, __LINE__);
33847 /*-------------------------------------------------------------------------
33848 Sanity check
33849 -------------------------------------------------------------------------*/
33850 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33851 ( NULL == pEventData->pEventData))
33852 {
33853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33854 "%s: Invalid parameters", __func__);
33855 WDI_ASSERT(0);
33856 return WDI_STATUS_E_FAILURE;
33857 }
33858
33859 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33860 if ( NULL == wdiEXTScanStartRspCb)
33861 {
33862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33863 "%s: Callback function Invalid", __func__);
33864 WDI_ASSERT(0);
33865 return WDI_STATUS_E_FAILURE;
33866 }
33867
33868 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
33869
33870 return WDI_STATUS_SUCCESS;
33871}
33872
33873
33874/**
33875 @brief Process Extended Scan Stop Rsp function (called when a response
33876 is being received over the bus from HAL)
33877
33878 @param pWDICtx: pointer to the WLAN DAL context
33879 pEventData: pointer to the event information structure
33880
33881 @see
33882 @return Result of the function call
33883*/
33884WDI_Status
33885WDI_ProcessEXTScanStopRsp
33886(
33887 WDI_ControlBlockType* pWDICtx,
33888 WDI_EventInfoType* pEventData
33889)
33890{
33891 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
33892
33893 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33894 "%s: %d",__func__, __LINE__);
33895
33896
33897 /*-------------------------------------------------------------------------
33898 Sanity check
33899 -------------------------------------------------------------------------*/
33900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33901 ( NULL == pEventData->pEventData))
33902 {
33903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33904 "%s: Invalid parameters", __func__);
33905 WDI_ASSERT(0);
33906 return WDI_STATUS_E_FAILURE;
33907 }
33908
33909 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33910 if ( NULL == wdiEXTScanStopRspCb)
33911 {
33912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33913 "%s: Callback function Invalid", __func__);
33914 WDI_ASSERT(0);
33915 return WDI_STATUS_E_FAILURE;
33916 }
33917
33918 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33919
33920 return WDI_STATUS_SUCCESS;
33921}
33922
33923/**
33924 @brief Process Extended Scan Get Cached Rsp function (called when a response
33925 is being received over the bus from HAL)
33926
33927 @param pWDICtx: pointer to the WLAN DAL context
33928 pEventData: pointer to the event information structure
33929
33930 @see
33931 @return Result of the function call
33932*/
33933WDI_Status
33934WDI_ProcessEXTScanGetCachedResultsRsp
33935(
33936 WDI_ControlBlockType* pWDICtx,
33937 WDI_EventInfoType* pEventData
33938)
33939{
33940 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33941
33942 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33943 "%s: %d Enter",__func__, __LINE__);
33944
33945
33946 /*-------------------------------------------------------------------------
33947 Sanity check
33948 -------------------------------------------------------------------------*/
33949 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33950 ( NULL == pEventData->pEventData))
33951 {
33952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33953 "%s: Invalid parameters", __func__);
33954 WDI_ASSERT(0);
33955 return WDI_STATUS_E_FAILURE;
33956 }
33957
33958 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33959 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
33960 {
33961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33962 "%s: Callback function Invalid", __func__);
33963 WDI_ASSERT(0);
33964 return WDI_STATUS_E_FAILURE;
33965 }
33966
33967 wdiEXTScanGetCachedResultsRspCb(
33968 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33969
33970 return WDI_STATUS_SUCCESS;
33971}
33972
33973/**
33974 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
33975 is being received over the bus from HAL)
33976
33977 @param pWDICtx: pointer to the WLAN DAL context
33978 pEventData: pointer to the event information structure
33979
33980 @see
33981 @return Result of the function call
33982*/
33983WDI_Status
33984WDI_ProcessEXTScanGetCapabilitiesRsp
33985(
33986 WDI_ControlBlockType* pWDICtx,
33987 WDI_EventInfoType* pEventData
33988)
33989{
33990 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33991
33992 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33993 "%s: %d ",__func__, __LINE__);
33994
33995
33996 /*-------------------------------------------------------------------------
33997 Sanity check
33998 -------------------------------------------------------------------------*/
33999 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34000 ( NULL == pEventData->pEventData))
34001 {
34002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34003 "%s: Invalid parameters", __func__);
34004 WDI_ASSERT(0);
34005 return WDI_STATUS_E_FAILURE;
34006 }
34007
34008 wdiEXTScanGetCapabilitiesRspCb =
34009 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
34010 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
34011 {
34012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34013 "%s: Callback function Invalid", __func__);
34014 WDI_ASSERT(0);
34015 return WDI_STATUS_E_FAILURE;
34016 }
34017
34018 wdiEXTScanGetCapabilitiesRspCb(
34019 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34020
34021 return WDI_STATUS_SUCCESS;
34022}
34023
34024/**
34025 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
34026 response is being received over the bus from HAL)
34027
34028 @param pWDICtx: pointer to the WLAN DAL context
34029 pEventData: pointer to the event information structure
34030
34031 @see
34032 @return Result of the function call
34033*/
34034WDI_Status
34035WDI_ProcessEXTScanSetHotlistBSSIDRsp
34036(
34037 WDI_ControlBlockType* pWDICtx,
34038 WDI_EventInfoType* pEventData
34039)
34040{
34041 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
34042
34043 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34044 "%s: %d ",__func__, __LINE__);
34045
34046
34047 /*-------------------------------------------------------------------------
34048 Sanity check
34049 -------------------------------------------------------------------------*/
34050 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34051 ( NULL == pEventData->pEventData))
34052 {
34053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34054 "%s: Invalid parameters", __func__);
34055 WDI_ASSERT(0);
34056 return WDI_STATUS_E_FAILURE;
34057 }
34058
34059 wdiEXTScanSetBSSIDHotlistRspCb =
34060 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34061 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
34062 {
34063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34064 "%s: Callback function Invalid", __func__);
34065 WDI_ASSERT(0);
34066 return WDI_STATUS_E_FAILURE;
34067 }
34068
34069 wdiEXTScanSetBSSIDHotlistRspCb(
34070 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34071
34072 return WDI_STATUS_SUCCESS;
34073}
34074
34075/**
34076 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34077 when a response is being received over the bus from HAL)
34078
34079 @param pWDICtx: pointer to the WLAN DAL context
34080 pEventData: pointer to the event information structure
34081
34082 @see
34083 @return Result of the function call
34084*/
34085WDI_Status
34086WDI_ProcessEXTScanResetHotlistBSSIDRsp
34087(
34088 WDI_ControlBlockType* pWDICtx,
34089 WDI_EventInfoType* pEventData
34090)
34091{
34092 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
34093
34094 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34095 "%s: %d ",__func__, __LINE__);
34096
34097
34098 /*-------------------------------------------------------------------------
34099 Sanity check
34100 -------------------------------------------------------------------------*/
34101 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34102 ( NULL == pEventData->pEventData))
34103 {
34104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34105 "%s: Invalid parameters", __func__);
34106 WDI_ASSERT(0);
34107 return WDI_STATUS_E_FAILURE;
34108 }
34109
34110 wdiEXTScanResetBSSIDHotlistRspCb =
34111 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34112 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
34113 {
34114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34115 "%s: Callback function Invalid", __func__);
34116 WDI_ASSERT(0);
34117 return WDI_STATUS_E_FAILURE;
34118 }
34119
34120 wdiEXTScanResetBSSIDHotlistRspCb(
34121 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34122
34123 return WDI_STATUS_SUCCESS;
34124}
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053034125
34126/**
34127 @brief Process Extended Scan Set hotlist SSID Rsp function (called when a
34128 response is being received over the bus from HAL)
34129
34130 @param pWDICtx: pointer to the WLAN DAL context
34131 pEventData: pointer to the event information structure
34132
34133 @see
34134 @return Result of the function call
34135*/
34136WDI_Status
34137WDI_ProcessEXTScanSetHotlistSSIDRsp
34138(
34139 WDI_ControlBlockType* pWDICtx,
34140 WDI_EventInfoType* pEventData
34141)
34142{
34143 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
34144
34145 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34146 "%s: %d ",__func__, __LINE__);
34147
34148
34149 /*-------------------------------------------------------------------------
34150 Sanity check
34151 -------------------------------------------------------------------------*/
34152 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34153 ( NULL == pEventData->pEventData))
34154 {
34155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34156 "%s: Invalid parameters", __func__);
34157 WDI_ASSERT(0);
34158 return WDI_STATUS_E_FAILURE;
34159 }
34160
34161 wdiEXTScanSetSSIDHotlistRspCb =
34162 (WDI_EXTScanSetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34163 if ( NULL == wdiEXTScanSetSSIDHotlistRspCb)
34164 {
34165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34166 "%s: Callback function Invalid", __func__);
34167 WDI_ASSERT(0);
34168 return WDI_STATUS_E_FAILURE;
34169 }
34170
34171 wdiEXTScanSetSSIDHotlistRspCb(
34172 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34173
34174 return WDI_STATUS_SUCCESS;
34175}
34176
34177
34178/**
34179 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34180 when a response is being received over the bus from HAL)
34181
34182 @param pWDICtx: pointer to the WLAN DAL context
34183 pEventData: pointer to the event information structure
34184
34185 @see
34186 @return Result of the function call
34187*/
34188WDI_Status
34189WDI_ProcessEXTScanResetHotlistSSIDRsp
34190(
34191 WDI_ControlBlockType* pWDICtx,
34192 WDI_EventInfoType* pEventData
34193)
34194{
34195 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
34196
34197 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34198 "%s: %d ",__func__, __LINE__);
34199
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
34213 wdiEXTScanResetSSIDHotlistRspCb =
34214 (WDI_EXTScanResetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34215 if ( NULL == wdiEXTScanResetSSIDHotlistRspCb)
34216 {
34217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34218 "%s: Callback function Invalid", __func__);
34219 WDI_ASSERT(0);
34220 return WDI_STATUS_E_FAILURE;
34221 }
34222
34223 wdiEXTScanResetSSIDHotlistRspCb(
34224 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34225
34226 return WDI_STATUS_SUCCESS;
34227}
34228
Dino Mycle41bdc942014-06-10 11:30:24 +053034229#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053034230
34231/**
34232 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
34233
34234 @param None
34235
34236 @see
34237
34238 @return Status of the request
34239*/
34240WDI_Status
34241WDI_SetSpoofMacAddrReq
34242(
34243 WDI_SpoofMacAddrInfoType* pWdiReq,
34244 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
34245 void* pUserData)
34246{
34247 WDI_EventInfoType wdiEventData;
34248
34249 /*-------------------------------------------------------------------------
34250 Sanity Check
34251 ------------------------------------------------------------------------*/
34252 if (eWLAN_PAL_FALSE == gWDIInitialized)
34253 {
34254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34255 "WDI API call before module is initialized - Fail request!");
34256
34257 return WDI_STATUS_E_NOT_ALLOWED;
34258 }
34259
34260 /*-------------------------------------------------------------------------
34261 Fill in Event data and post to the Main FSM
34262 ------------------------------------------------------------------------*/
34263 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
34264 wdiEventData.pEventData = pWdiReq;
34265 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
34266 wdiEventData.pCBfnc = spoofMacAddrRspCb;
34267 wdiEventData.pUserData = pUserData;
34268
34269 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34270}
34271
34272/**
34273 @brief Process SpoofMacAddr Request
34274
34275 @param pWDICtx: pointer to the WLAN DAL context
34276 pEventData: pointer to the event information structure
34277
34278 @see
34279 @return Result of the function call
34280*/
34281WDI_Status
34282WDI_ProcessSpoofMacAddrReq
34283(
34284 WDI_ControlBlockType* pWDICtx,
34285 WDI_EventInfoType* pEventData
34286)
34287{
34288 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
34289 wpt_uint8* pSendBuffer = NULL;
34290 wpt_uint16 usDataOffset = 0;
34291 wpt_uint16 usSendSize = 0;
34292 WDI_Status wdiStatus;
34293 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
34294 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
34295
34296
34297 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34298 "%s: %d Enter",__func__, __LINE__);
34299
34300 /*-------------------------------------------------------------------------
34301 Sanity check
34302 -------------------------------------------------------------------------*/
34303 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34304 ( NULL == pEventData->pEventData))
34305 {
34306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34307 "%s: Invalid parameters", __func__);
34308 WDI_ASSERT(0);
34309 return WDI_STATUS_E_FAILURE;
34310 }
34311 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
34312
34313 /*-----------------------------------------------------------------------
34314 Get message buffer
34315 -----------------------------------------------------------------------*/
34316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34317 WDI_SPOOF_MAC_ADDR_REQ,
34318 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
34319 &pSendBuffer, &usDataOffset, &usSendSize))||
34320 (usSendSize < (usDataOffset +
34321 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
34322 {
34323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34324 "Unable to get send buffer in Process Spoof Mac Addr Req");
34325 WDI_ASSERT(0);
34326 return WDI_STATUS_E_FAILURE;
34327 }
34328
34329 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
34330 wdiSpoofMacAddr->macAddr,
34331 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
34332
34333 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
34334
34335 wpalMemoryCopy( pSendBuffer+usDataOffset,
34336 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
34337 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
34338
34339 /*-------------------------------------------------------------------------
34340 Send Suspend Request to HAL
34341 -------------------------------------------------------------------------*/
34342 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34343 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
34344
34345 return wdiStatus;
34346}
34347
34348/**
34349 @brief Process Spoof Mac Address Rsp function
34350 (called when a response is being received over the bus from HAL)
34351
34352 @param pWDICtx: pointer to the WLAN DAL context
34353 pEventData: pointer to the event information structure
34354
34355 @see
34356 @return Result of the function call
34357*/
34358WDI_Status
34359WDI_ProcessSpoofMacAddrRsp
34360(
34361 WDI_ControlBlockType* pWDICtx,
34362 WDI_EventInfoType* pEventData
34363)
34364{
34365 tMacSpoofedScanResp halRsp;
34366 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
34367 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
34368
34369 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34370 "%s: %d Enter",__func__, __LINE__);
34371
34372 /*-------------------------------------------------------------------------
34373 Sanity check
34374 -------------------------------------------------------------------------*/
34375 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34376 ( NULL == pEventData->pEventData))
34377 {
34378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34379 "%s: Invalid parameters", __func__);
34380 WDI_ASSERT(0);
34381 return WDI_STATUS_E_FAILURE;
34382 }
34383 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
34384
34385 /*-------------------------------------------------------------------------
34386 Extract response and send it to UMAC
34387 -------------------------------------------------------------------------*/
34388 wpalMemoryCopy( &halRsp,
34389 pEventData->pEventData, sizeof(halRsp));
34390
34391 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34392
34393 /*Notify UMAC*/
34394 wdiSpoofMacAddrRspCb(
34395 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
34396
34397 return WDI_STATUS_SUCCESS;
34398}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034399
34400/**
Siddharth Bhal64246172015-02-27 01:04:37 +053034401 @brief Process Get Frame Log Rsp function
34402 (called when a response is being received over the bus from HAL)
34403
34404 @param pWDICtx: pointer to the WLAN DAL context
34405 pEventData: pointer to the event information structure
34406
34407 @see
34408 @return Result of the function call
34409*/
34410WDI_Status
34411WDI_ProcessGetFrameLogRsp
34412(
34413 WDI_ControlBlockType* pWDICtx,
34414 WDI_EventInfoType* pEventData
34415)
34416{
34417 tGetFrameLogResp halRsp;
34418 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
34419 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
34420
34421 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34422 "%s: %d Enter",__func__, __LINE__);
34423
34424 /*-------------------------------------------------------------------------
34425 Sanity check
34426 -------------------------------------------------------------------------*/
34427 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34428 ( NULL == pEventData->pEventData))
34429 {
34430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34431 "%s: Invalid parameters", __func__);
34432 WDI_ASSERT(0);
34433 return WDI_STATUS_E_FAILURE;
34434 }
34435
34436 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
34437
34438 /*-------------------------------------------------------------------------
34439 Extract response and send it to UMAC
34440 -------------------------------------------------------------------------*/
34441 wpalMemoryCopy( &halRsp,
34442 pEventData->pEventData, sizeof(halRsp));
34443
34444 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34445
34446 /*Notify UMAC*/
34447 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
34448
34449 return WDI_STATUS_SUCCESS;
34450}
34451/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034452 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053034453
34454 @param pWDICtx: pointer to the WLAN DAL context
34455 pEventData: pointer to the event information structure
34456
34457 @see
34458 @return Result of the function call
34459*/
34460WDI_Status
34461WDI_ProcessGetFrameLogReq
34462(
34463 WDI_ControlBlockType* pWDICtx,
34464 WDI_EventInfoType* pEventData
34465)
34466{
34467 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
34468 wpt_uint8* pSendBuffer = NULL;
34469 wpt_uint16 usDataOffset = 0;
34470 wpt_uint16 usSendSize = 0;
34471 WDI_Status wdiStatus;
34472 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034473 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053034474
34475
34476 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34477 "%s: %d Enter",__func__, __LINE__);
34478
34479 /*-------------------------------------------------------------------------
34480 Sanity check
34481 ------------------------------------------------------------------------*/
34482 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34483 ( NULL == pEventData->pEventData))
34484 {
34485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34486 "%s: Invalid parameters", __func__);
34487 WDI_ASSERT(0);
34488 return WDI_STATUS_E_FAILURE;
34489 }
34490
34491 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
34492
34493 /*-----------------------------------------------------------------------
34494 Get message buffer
34495 -----------------------------------------------------------------------*/
34496 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34497 WDI_GET_FRAME_LOG_REQ,
34498 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
34499 &pSendBuffer, &usDataOffset, &usSendSize))||
34500 (usSendSize < (usDataOffset +
34501 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
34502 {
34503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34504 "Unable to get send buffer in GetFrameLog Req");
34505 WDI_ASSERT(0);
34506 return WDI_STATUS_E_FAILURE;
34507 }
34508
34509 halGetFrameLogReq.tGetFrameLogReqParams.flags =
34510 wdiGetFrameLogReq->flags;
34511
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034512 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053034513
34514 wpalMemoryCopy( pSendBuffer+usDataOffset,
34515 &halGetFrameLogReq.tGetFrameLogReqParams,
34516 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
34517
34518 /*-------------------------------------------------------------------------
34519 Send Suspend Request to HAL
34520 ------------------------------------------------------------------------*/
34521 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34522 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
34523
34524 return wdiStatus;
34525}
34526/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034527 @brief Process MgmtFrame Logging Init Rsp function
34528 (called when a response is being received over the bus from HAL)
34529
34530 @param pWDICtx: pointer to the WLAN DAL context
34531 pEventData: pointer to the event information structure
34532
34533 @see
34534 @return Result of the function call
34535*/
34536WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034537WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034538(
34539 WDI_ControlBlockType* pWDICtx,
34540 WDI_EventInfoType* pEventData
34541)
34542{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034543 tFWLoggingInitResp halRsp;
34544 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
34545 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034546
34547 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34548 "%s: %d Enter",__func__, __LINE__);
34549
34550 /*-------------------------------------------------------------------------
34551 Sanity check
34552 -------------------------------------------------------------------------*/
34553 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34554 ( NULL == pEventData->pEventData))
34555 {
34556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34557 "%s: Invalid parameters", __func__);
34558 WDI_ASSERT(0);
34559 return WDI_STATUS_E_FAILURE;
34560 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034561 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034562
34563 /*-------------------------------------------------------------------------
34564 Extract response and send it to UMAC
34565 -------------------------------------------------------------------------*/
34566 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34567
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034568 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034569
34570 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034571 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034572
34573 return WDI_STATUS_SUCCESS;
34574}
34575
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034576WDI_Status
34577WDI_ProcessFWLoggingDXEdoneInd
34578(
34579 WDI_ControlBlockType* pWDICtx,
34580 WDI_EventInfoType* pEventData
34581)
34582{
34583 wpt_uint8* pSendBuffer = NULL;
34584 wpt_uint16 usDataOffset = 0;
34585 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034586 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053034587 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034588 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
34589
34590
34591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34592
34593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34594 "%s", __func__);
34595
34596 /*-------------------------------------------------------------------------
34597 Sanity check
34598 -------------------------------------------------------------------------*/
Mihir Shete5affadc2015-05-29 20:54:57 +053034599 if (NULL == pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034600 {
34601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34602 "%s: Invalid parameters", __func__);
34603 WDI_ASSERT(0);
34604 return WDI_STATUS_E_FAILURE;
34605 }
Mihir Shete5affadc2015-05-29 20:54:57 +053034606 pLoggingSession = (WDI_DS_LoggingSessionType *)
34607 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
34608 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034609 /*-----------------------------------------------------------------------
34610 Get message buffer
34611 -----------------------------------------------------------------------*/
34612
34613 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34614 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053034615 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034616 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053034617 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034618 {
34619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34620 "Unable to get send buffer in RTS CTS ind %p ",
34621 pEventData);
34622 WDI_ASSERT(0);
34623 return WDI_STATUS_E_FAILURE;
34624 }
34625 FWLoggingDxeDoneIndParams =
34626 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
34627
34628 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053034629 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034630 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053034631
34632 FWLoggingDxeDoneIndParams->status = eHAL_STATUS_SUCCESS;
34633
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034634 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053034635 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034636 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
34637
34638 pWDICtx->pReqStatusUserData = NULL;
34639 pWDICtx->pfncRspCB = NULL;
34640 /*-------------------------------------------------------------------------
34641 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
34642 -------------------------------------------------------------------------*/
34643 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
34644 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
34645}
34646
Sachin Ahuja715aafc2015-07-21 23:35:10 +053034647
34648/**
34649 @brief Process Fatal Event Logs Rsp function
34650 (called when a response is being received over the bus from HAL)
34651
34652 @param pWDICtx: pointer to the WLAN DAL context
34653 pEventData: pointer to the event information structure
34654
34655 @see
34656 @return Result of the function call
34657*/
34658WDI_Status
34659WDI_ProcessFatalEventLogsRsp
34660(
34661 WDI_ControlBlockType* pWDICtx,
34662 WDI_EventInfoType* pEventData
34663)
34664{
34665 tHalFatalEventLoggingRspParams halRsp;
34666 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
34667 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
34668
34669 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34670 "%s: %d Enter",__func__, __LINE__);
34671
34672 /*-------------------------------------------------------------------------
34673 Sanity check
34674 -------------------------------------------------------------------------*/
34675 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34676 ( NULL == pEventData->pEventData))
34677 {
34678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34679 "%s: Invalid parameters", __func__);
34680 WDI_ASSERT(0);
34681 return WDI_STATUS_E_FAILURE;
34682 }
34683 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
34684
34685 /*-------------------------------------------------------------------------
34686 Extract response and send it to UMAC
34687 -------------------------------------------------------------------------*/
34688 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34689
34690 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34691
34692 /*Notify UMAC*/
34693 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
34694 pWDICtx->pRspCBUserData);
34695
34696 return WDI_STATUS_SUCCESS;
34697}
34698
34699/**
34700 @brief Process FatalEventLogs Request
34701
34702 @param pWDICtx: pointer to the WLAN DAL context
34703 pEventData: pointer to the event information structure
34704
34705 @see
34706 @return Result of the function call
34707*/
34708
34709WDI_Status
34710WDI_ProcessFatalEventLogsReq
34711
34712(
34713 WDI_ControlBlockType* pWDICtx,
34714 WDI_EventInfoType* pEventData
34715)
34716{
34717 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
34718 wpt_uint8* pSendBuffer = NULL;
34719 wpt_uint16 usDataOffset = 0;
34720 wpt_uint16 usSendSize = 0;
34721 WDI_Status wdiStatus;
34722 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
34723 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
34724
34725
34726 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34727 "%s: %d Enter",__func__, __LINE__);
34728
34729 /*-------------------------------------------------------------------------
34730 Sanity check
34731 ------------------------------------------------------------------------*/
34732 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34733 ( NULL == pEventData->pEventData))
34734 {
34735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34736 "%s: Invalid parameters", __func__);
34737 WDI_ASSERT(0);
34738 return WDI_STATUS_E_FAILURE;
34739 }
34740 wdiFatalEventLogsReq =
34741 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
34742
34743 /*-----------------------------------------------------------------------
34744 Get message buffer
34745 -----------------------------------------------------------------------*/
34746 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34747 WDI_FATAL_EVENT_LOGGING_REQ,
34748 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
34749 &pSendBuffer, &usDataOffset, &usSendSize))||
34750 (usSendSize < (usDataOffset +
34751 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
34752 {
34753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34754 "Unable to get send buffer in Fatal Event Req");
34755 WDI_ASSERT(0);
34756 return WDI_STATUS_E_FAILURE;
34757 }
34758 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
34759 wdiFatalEventLogsReq->reason_code;
34760
34761 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
34762
34763 wpalMemoryCopy( pSendBuffer+usDataOffset,
34764 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
34765 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
34766
34767 /*-------------------------------------------------------------------------
34768 Send Mgmt Logging Init Request to HAL
34769 ------------------------------------------------------------------------*/
34770 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34771 wdiFatalEventLogsRspCb, pEventData->pUserData,
34772 WDI_FATAL_EVENT_LOGGING_RSP);
34773
34774 return wdiStatus;
34775
34776
34777}
34778
34779
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034780/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034781 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034782
34783 @param pWDICtx: pointer to the WLAN DAL context
34784 pEventData: pointer to the event information structure
34785
34786 @see
34787 @return Result of the function call
34788*/
34789WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034790WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034791(
34792 WDI_ControlBlockType* pWDICtx,
34793 WDI_EventInfoType* pEventData
34794)
34795{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034796 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034797 wpt_uint8* pSendBuffer = NULL;
34798 wpt_uint16 usDataOffset = 0;
34799 wpt_uint16 usSendSize = 0;
34800 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034801 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
34802 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034803
34804
34805 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34806 "%s: %d Enter",__func__, __LINE__);
34807
34808 /*-------------------------------------------------------------------------
34809 Sanity check
34810 ------------------------------------------------------------------------*/
34811 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34812 ( NULL == pEventData->pEventData))
34813 {
34814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34815 "%s: Invalid parameters", __func__);
34816 WDI_ASSERT(0);
34817 return WDI_STATUS_E_FAILURE;
34818 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034819 wdiFWLoggingInitReq =
34820 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034821
34822 /*-----------------------------------------------------------------------
34823 Get message buffer
34824 -----------------------------------------------------------------------*/
34825 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034826 WDI_FW_LOGGING_INIT_REQ,
34827 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034828 &pSendBuffer, &usDataOffset, &usSendSize))||
34829 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034830 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034831 {
34832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34833 "Unable to get send buffer in Process Mgmt Logging Init Req");
34834 WDI_ASSERT(0);
34835 return WDI_STATUS_E_FAILURE;
34836 }
34837
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034838 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
34839 wdiFWLoggingInitReq->enableFlag;
34840 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
34841 wdiFWLoggingInitReq->frameSize;
34842 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
34843 wdiFWLoggingInitReq->frameType;
34844 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
34845 wdiFWLoggingInitReq->bufferMode;
34846 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
34847 wdiFWLoggingInitReq->continuousFrameLogging;
34848 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
34849 wdiFWLoggingInitReq->minLogBufferSize;
34850 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
34851 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053034852 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
34853 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
34854 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
34855 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034856
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034857 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034858
34859 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034860 &halFWLoggingInitReq.tFWLoggingInitReqParams,
34861 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034862
34863 /*-------------------------------------------------------------------------
34864 Send Mgmt Logging Init Request to HAL
34865 ------------------------------------------------------------------------*/
34866 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034867 wdiFWLoggingInitRspCb, pEventData->pUserData,
34868 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034869
34870 return wdiStatus;
34871}
34872
34873/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034874 @brief WDI_EncryptMsgReq
34875
34876 @param pwdiEncryptMsgParams: Req parameter for the FW
34877 wdiEncryptMsgCbRsp: callback for passing back the response
34878 of the Req operation received from the device
34879 pUserData: user data will be passed back with the callback
34880
34881 @return SUCCESS or FAIL
34882*/
34883WDI_Status
34884WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
34885 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
34886 void* pUserData)
34887{
34888 WDI_EventInfoType wdiEventData;
34889
34890 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34891 "%s: %d Enter" ,__func__, __LINE__);
34892 /*------------------------------------------------------------------------
34893 Sanity Check
34894 ------------------------------------------------------------------------*/
34895 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34896 {
34897 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34898 "WDI API call before module is initialized - Fail request");
34899
34900 return WDI_STATUS_E_NOT_ALLOWED;
34901 }
34902
34903 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
34904 wdiEventData.pEventData = pwdiEncryptMsgParams;
34905 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
34906 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
34907 wdiEventData.pUserData = pUserData;
34908
34909 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34910}
34911
34912/*
34913 * FUNCTION: WDI_ProcessEncryptMsgReq
34914 * Request to WDI to encrypt the given message.
34915 *
34916 * @param pWDICtx: pointer to the WLAN DAL context
34917 * pEventData: pointer to the event information structure
34918 *
34919 * @return Result of the function call
34920 */
34921
34922WDI_Status
34923WDI_ProcessEncryptMsgReq
34924(
34925 WDI_ControlBlockType* pWDICtx,
34926 WDI_EventInfoType* pEventData
34927)
34928{
34929 wpt_uint8* pSendBuffer = NULL;
34930 wpt_uint16 usDataOffset = 0;
34931 wpt_uint16 usSendSize = 0;
34932 WDI_EncryptMsgRspCb* wdiEncMsgCb;
34933 tSetEncryptedDataParams *pHalEncryptDataReq;
34934 wpt_pkt80211 *pkt = NULL;
34935
34936 /*-------------------------------------------------------------------------
34937 Sanity check
34938 -------------------------------------------------------------------------*/
34939 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
34940 ( NULL == pEventData->pCBfnc ) )
34941 {
34942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34943 "%s: Invalid parameters", __func__);
34944 WDI_ASSERT(0);
34945 return WDI_STATUS_E_FAILURE;
34946 }
34947
34948 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
34949
34950 /*-----------------------------------------------------------------------
34951 Get message buffer
34952 -----------------------------------------------------------------------*/
34953 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34954 pWDICtx, WDI_ENCRYPT_MSG_REQ,
34955 sizeof(tSetEncryptedDataReqMsg),
34956 &pSendBuffer, &usDataOffset, &usSendSize)) ||
34957 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
34958 {
34959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34960 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
34961 pEventData);
34962 WDI_ASSERT(0);
34963 return WDI_STATUS_E_FAILURE;
34964 }
34965
34966 pWDICtx->wdiReqStatusCB = NULL;
34967 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34968 pkt = (wpt_pkt80211 *)pEventData->pEventData;
34969
34970 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
34971 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
34972
34973 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
34974
34975 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
34976 pkt->encParams.keyParams.key[0].keyId;
34977
34978 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
34979 &pkt->encParams.keyParams.key[0].key[0], 16);
34980
34981 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
34982
34983 pHalEncryptDataReq->data.length = pkt->data.length;
34984 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
34985
34986 /*-------------------------------------------------------------------------
34987 Send Get STA Request to HAL
34988 -------------------------------------------------------------------------*/
34989 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
34990 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
34991}
34992
34993/*
34994 * FUNCTION: WDI_ProcessEncryptMsgRsp
34995 * Receives the encrypted message from the firmware
34996 * @param pWDICtx: pointer to the WLAN DAL context
34997 * pEventData: pointer to the event information structure
34998 *
34999 * @return Result of the function call
35000 */
35001WDI_Status
35002WDI_ProcessEncryptMsgRsp
35003(
35004 WDI_ControlBlockType* pWDICtx,
35005 WDI_EventInfoType* pEventData
35006)
35007{
35008 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
35009 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
35010
35011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35012 "In %s",__func__);
35013
35014 /*-------------------------------------------------------------------------
35015 Sanity check
35016 -------------------------------------------------------------------------*/
35017 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35018 ( NULL == pEventData->pEventData))
35019 {
35020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35021 "%s: Invalid parameters", __func__);
35022 WDI_ASSERT(0);
35023 return WDI_STATUS_E_FAILURE;
35024 }
35025
35026 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
35027
35028 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
35029
35030 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
35031 pEventData->pEventData,
35032 pWDICtx->pRspCBUserData);
35033 return WDI_STATUS_SUCCESS;
35034}
Srinivas Dasari32a79262015-02-19 13:04:49 +053035035
35036WDI_Status
35037WDI_NanRequest
35038(
35039 WDI_NanRequestType *pwdiNanRequest,
35040 void *usrData
35041)
35042{
35043 WDI_EventInfoType wdiEventData;
35044
35045 /*------------------------------------------------------------------------
35046 Sanity Check
35047 ------------------------------------------------------------------------*/
35048 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35049 {
35050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35051 "WDI API call before module is initialized - Fail request");
35052
35053 return WDI_STATUS_E_NOT_ALLOWED;
35054 }
35055
35056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35057 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
35058 pwdiNanRequest->request_data_len);
35059
35060 /*------------------------------------------------------------------------
35061 Fill in Event data and post to the Main FSM
35062 ------------------------------------------------------------------------*/
35063 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
35064 wdiEventData.pEventData = pwdiNanRequest;
35065 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
35066 + pwdiNanRequest->request_data_len;
35067 wdiEventData.pUserData = usrData;
35068 wdiEventData.pCBfnc = NULL;
35069
35070
35071 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35072}
35073
35074WDI_Status
35075WDI_ProcessNanRequest
35076(
35077 WDI_ControlBlockType* pWDICtx,
35078 WDI_EventInfoType* pEventData
35079)
35080{
35081 WDI_NanRequestType *pwdiNanRequest = NULL;
35082 wpt_uint8* pSendBuffer = NULL;
35083 wpt_uint16 usDataOffset = 0;
35084 wpt_uint16 usSendSize = 0;
35085
35086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35087 "WDI_ProcessNanRequest");
35088
35089 /*-------------------------------------------------------------------------
35090 Sanity check
35091 -------------------------------------------------------------------------*/
35092 if (( NULL == pEventData ) ||
35093 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
35094 {
35095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35096 "%s: Invalid parameters", __FUNCTION__);
35097 WDI_ASSERT(0);
35098 return WDI_STATUS_E_FAILURE;
35099 }
35100
35101 /*-----------------------------------------------------------------------
35102 Get message buffer
35103 -----------------------------------------------------------------------*/
35104 if (( WDI_STATUS_SUCCESS
35105 != WDI_GetMessageBuffer( pWDICtx,
35106 WDI_NAN_REQUEST,
35107 pwdiNanRequest->request_data_len,
35108 &pSendBuffer,
35109 &usDataOffset,
35110 &usSendSize))||
35111 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
35112 {
35113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35114 "Unable to get send buffer in NAN request %p %p",
35115 pEventData, pwdiNanRequest);
35116 WDI_ASSERT(0);
35117 return WDI_STATUS_E_FAILURE;
35118 }
35119
35120 wpalMemoryCopy( pSendBuffer+usDataOffset,
35121 pwdiNanRequest->request_data,
35122 pwdiNanRequest->request_data_len);
35123
35124 pWDICtx->pReqStatusUserData = NULL;
35125 pWDICtx->pfncRspCB = NULL;
35126 vos_mem_free( pEventData->pUserData);
35127
35128 /*-------------------------------------------------------------------------
35129 Send NAN Request to HAL
35130 -------------------------------------------------------------------------*/
35131 return WDI_SendMsg( pWDICtx,
35132 pSendBuffer,
35133 usSendSize,
35134 NULL,
35135 NULL,
35136 WDI_NAN_RESPONSE);
35137}
35138
35139/**
35140 @brief Process NAN Response function (called when a
35141 response is being received over the bus from HAL)
35142
35143 @param pWDICtx: pointer to the WLAN DAL context
35144 pEventData: pointer to the event information structure
35145
35146 @see
35147 @return Result of the function call
35148*/
35149WDI_Status
35150WDI_ProcessNanResponse
35151(
35152 WDI_ControlBlockType* pWDICtx,
35153 WDI_EventInfoType* pEventData
35154)
35155{
35156 WDI_Status wdiStatus;
35157 eHalStatus halStatus;
35158
35159 /*-------------------------------------------------------------------------
35160 Sanity check
35161 -------------------------------------------------------------------------*/
35162 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35163 ( NULL == pEventData->pEventData))
35164 {
35165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35166 "%s: Invalid parameters", __func__);
35167 WDI_ASSERT(0);
35168 return WDI_STATUS_E_FAILURE;
35169 }
35170
35171 halStatus = *((eHalStatus*)pEventData->pEventData);
35172 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
35173
35174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35175 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
35176
35177 return WDI_STATUS_SUCCESS;
35178}/*WDI_ProcessNanResponse*/
35179
35180
35181/**
35182 @brief Process NAN Event function (called when
35183 an indication is being received over the
35184 bus from HAL)
35185
35186 @param pWDICtx: pointer to the WLAN DAL context
35187 pEventData: pointer to the event information structure
35188
35189 @see
35190 @return Result of the function call
35191*/
35192WDI_Status
35193WDI_ProcessNanEvent
35194(
35195 WDI_ControlBlockType* pWDICtx,
35196 WDI_EventInfoType* pEventData
35197)
35198{
35199 WDI_LowLevelIndType wdiInd;
35200
35201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35202
35203 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35204 ( NULL == pEventData->pEventData ))
35205 {
35206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35207 "%s: Invalid parameters", __func__);
35208 WDI_ASSERT( 0 );
35209 return WDI_STATUS_E_FAILURE;
35210 }
35211
35212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35213 "%s: Received NAN event", __func__);
35214 /*-------------------------------------------------------------------------
35215 Extract indication and send it to UMAC
35216 -------------------------------------------------------------------------*/
35217 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
35218 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
35219 pEventData->uEventDataSize;
35220 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
35221 pEventData->pEventData;
35222
35223 /*Notify UMAC*/
35224 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
35225
35226 return WDI_STATUS_SUCCESS;
35227}/*WDI_ProcessNanEvent*/
35228
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053035229
35230
35231WDI_Status
35232WDI_Process_LostLinkParamInd
35233(
35234 WDI_ControlBlockType* pWDICtx,
35235 WDI_EventInfoType* pEventData
35236)
35237{
35238 WDI_LowLevelIndType wdiInd;
35239 tHalLostLinkParametersIndParams halLostLinkParamInd;
35240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35241
35242 /*-------------------------------------------------------------------------
35243 Sanity check
35244 -------------------------------------------------------------------------*/
35245 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35246 ( NULL == pEventData->pEventData))
35247 {
35248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35249 "%s: Invalid parameters", __func__);
35250 WDI_ASSERT(0);
35251 return WDI_STATUS_E_FAILURE;
35252 }
35253
35254 /*-------------------------------------------------------------------------
35255 Extract indication and send it to UMAC
35256 -------------------------------------------------------------------------*/
35257 wpalMemoryCopy( (void *)&halLostLinkParamInd,
35258 pEventData->pEventData,
35259 sizeof(tHalLostLinkParametersIndParams));
35260
35261
35262 /*Fill in the indication parameters*/
35263 wdiInd.wdiIndicationType = WDI_LOST_LINK_PARAMS_IND;
35264 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiLostLinkParamsInd,
35265 (void *)&halLostLinkParamInd,
35266 sizeof(WDI_LostLinkParamsIndType));
35267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35268 "%s: bssIdx %d, rssi : %d, selfMacAddr: " MAC_ADDRESS_STR", linkFlCnt: %d,"
35269 "linkFlTx : %d,lastDataRate : %d", __func__,
35270 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.bssIdx,
35271 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.rssi,
35272 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiLostLinkParamsInd.selfMacAddr),
35273 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlCnt,
35274 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlTx,
35275 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.lastDataRate);
35276 /*Notify UMAC*/
35277 if (pWDICtx->wdiLowLevelIndCB)
35278 {
35279 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
35280 }
35281
35282 return WDI_STATUS_SUCCESS;
35283
35284}
35285
Abhishek Singh41988ba2015-05-25 19:42:29 +053035286WDI_Status
35287WDI_ProcessSetRtsCtsHtvhtInd
35288(
35289 WDI_ControlBlockType* pWDICtx,
35290 WDI_EventInfoType* pEventData
35291)
35292{
35293 wpt_uint8* pSendBuffer = NULL;
35294 wpt_uint16 usDataOffset = 0;
35295 wpt_uint16 usSendSize = 0;
35296 wpt_uint32 *rtsCtsVal;
35297 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
35298 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
35299
35300
35301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35302
35303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35304 "%s", __func__);
35305
35306 /*-------------------------------------------------------------------------
35307 Sanity check
35308 -------------------------------------------------------------------------*/
35309 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
35310 {
35311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35312 "%s: Invalid parameters", __func__);
35313 WDI_ASSERT(0);
35314 return WDI_STATUS_E_FAILURE;
35315 }
35316 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
35317 /*-----------------------------------------------------------------------
35318 Get message buffer
35319 -----------------------------------------------------------------------*/
35320
35321 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35322 WDI_SET_RTS_CTS_HTVHT_IND,
35323 sizeof(tHalRtsCtsHtvhtIndParams),
35324 &pSendBuffer, &usDataOffset, &usSendSize))||
35325 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
35326 {
35327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35328 "Unable to get send buffer in RTS CTS ind %p ",
35329 pEventData);
35330 WDI_ASSERT(0);
35331 return WDI_STATUS_E_FAILURE;
35332 }
35333 rtsCtsHtvhtIndParams =
35334 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
35335 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
35336
35337 pWDICtx->pReqStatusUserData = NULL;
35338 pWDICtx->pfncRspCB = NULL;
35339 /*-------------------------------------------------------------------------
35340 Send SET_RTS_CTS_HTVHT Indication to HAL
35341 -------------------------------------------------------------------------*/
35342 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35343 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35344}
35345
35346WDI_Status
35347WDI_SetRtsCtsHTVhtInd
35348(
35349 wpt_uint32 rtsCtsVal
35350)
35351{
35352 WDI_EventInfoType wdiEventData;
35353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35354
35355 /*------------------------------------------------------------------------
35356 Sanity Check
35357 ------------------------------------------------------------------------*/
35358 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35359 {
35360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35361 "WDI API call before module is initialized - Fail request");
35362 return WDI_STATUS_E_NOT_ALLOWED;
35363 }
35364
35365 /*------------------------------------------------------------------------
35366 Fill in Event data and post to the Main FSM
35367 ------------------------------------------------------------------------*/
35368 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
35369 wdiEventData.pEventData = (void *) &rtsCtsVal;
35370 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
35371 wdiEventData.pCBfnc = NULL;
35372 wdiEventData.pUserData = NULL;
35373
35374 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35375
35376}/* WDI_SetRtsCtsHTVhtInd */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053035377
35378WDI_Status
35379WDI_ProcessEnableDisableCAEventInd
35380(
35381 WDI_ControlBlockType* pWDICtx,
35382 WDI_EventInfoType* pEventData
35383)
35384{
35385 wpt_uint8* pSendBuffer = NULL;
35386 wpt_uint16 usDataOffset = 0;
35387 wpt_uint16 usSendSize = 0;
35388 wpt_uint32 *val;
35389 tHalAvoidFreqRangeCtrlParam *avoidFreqRangeCtrlParam;
35390 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
35391
35392
35393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35394
35395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35396 "%s", __func__);
35397
35398 /*-------------------------------------------------------------------------
35399 Sanity check
35400 -------------------------------------------------------------------------*/
35401 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
35402 {
35403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35404 "%s: Invalid parameters", __func__);
35405 WDI_ASSERT(0);
35406 return WDI_STATUS_E_FAILURE;
35407 }
35408 val = (wpt_uint32*)pEventData->pEventData;
35409 /*-----------------------------------------------------------------------
35410 Get message buffer
35411 -----------------------------------------------------------------------*/
35412
35413 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35414 WDI_SEND_FREQ_RANGE_CONTROL_IND,
35415 sizeof(tHalAvoidFreqRangeCtrlParam),
35416 &pSendBuffer, &usDataOffset, &usSendSize))||
35417 ( usSendSize < (usDataOffset + sizeof(tHalAvoidFreqRangeCtrlParam) )))
35418 {
35419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35420 "Unable to get send buffer in Channel Avoidance Ind %p ",
35421 pEventData);
35422 WDI_ASSERT(0);
35423 return WDI_STATUS_E_FAILURE;
35424 }
35425 avoidFreqRangeCtrlParam =
35426 (tHalAvoidFreqRangeCtrlParam*)(pSendBuffer + usDataOffset);
35427 avoidFreqRangeCtrlParam->status = *val;
35428
35429 pWDICtx->pReqStatusUserData = NULL;
35430 pWDICtx->pfncRspCB = NULL;
35431 /*-------------------------------------------------------------------------
35432 Send AVOID_FREQ_RANGE_CONTROL_IND Indication to HAL
35433 -------------------------------------------------------------------------*/
35434 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35435 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35436}
35437
35438WDI_Status
35439WDI_EnableDisableCAEventInd
35440(
35441 wpt_uint32 val
35442)
35443{
35444 WDI_EventInfoType wdiEventData;
35445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35446
35447 /*------------------------------------------------------------------------
35448 Sanity Check
35449 ------------------------------------------------------------------------*/
35450 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35451 {
35452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35453 "WDI API call before module is initialized - Fail request");
35454 return WDI_STATUS_E_NOT_ALLOWED;
35455 }
35456
35457 /*------------------------------------------------------------------------
35458 Fill in Event data and post to the Main FSM
35459 ------------------------------------------------------------------------*/
35460 wdiEventData.wdiRequest = WDI_SEND_FREQ_RANGE_CONTROL_IND;
35461 wdiEventData.pEventData = (void *) &val;
35462 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
35463 wdiEventData.pCBfnc = NULL;
35464 wdiEventData.pUserData = NULL;
35465
35466 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35467
35468} /* WDI_EnableDisableCAEventInd */