blob: 7fb1aacf302142b0ed41b889351b1a35035b9355 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05302 * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved.
Kiet Lam1ed83fc2014-02-19 01:15:45 -08003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*
Kiet Lama7f454d2014-07-24 12:04:06 -070023 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
Kiet Lam1ed83fc2014-02-19 01:15:45 -080026 */
27
Jeff Johnson295189b2012-06-20 16:38:30 -070028
Kiet Lama7f454d2014-07-24 12:04:06 -070029
30
Jeff Johnson295189b2012-06-20 16:38:30 -070031/*===========================================================================
32
33 W L A N _ Q C T _ W D I. C
34
35 OVERVIEW:
36
Jeff Johnsone7245742012-09-05 17:12:55 -070037 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070038 Layer Interface.
39
Jeff Johnsone7245742012-09-05 17:12:55 -070040 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070041 MAC implementation that wishes to use the WLAN Device.
42
43 DEPENDENCIES:
44
45 Are listed for each API below.
46
47
Jeff Johnson295189b2012-06-20 16:38:30 -070048===========================================================================*/
49
50/*===========================================================================
51
52 EDIT HISTORY FOR FILE
53
54
55 This section contains comments describing changes made to the module.
56 Notice that changes are listed in reverse chronological order.
57
58
59 $Header$$DateTime$$Author$
60
61
62 when who what, where, why
63---------- --- --------------------------------------------------------
6410/05/11 hap Adding support for Keep Alive
652010-08-09 lti Created module
66
67===========================================================================*/
68
69/*----------------------------------------------------------------------------
70 * Include Files
71 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070072#include "wlan_qct_wdi.h"
73#include "wlan_qct_wdi_i.h"
74#include "wlan_qct_wdi_sta.h"
75#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070076
Jeff Johnsone7245742012-09-05 17:12:55 -070077#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070078
79#include "wlan_qct_pal_api.h"
80#include "wlan_qct_pal_type.h"
81#include "wlan_qct_pal_status.h"
82#include "wlan_qct_pal_sync.h"
83#include "wlan_qct_pal_msg.h"
84#include "wlan_qct_pal_trace.h"
85#include "wlan_qct_pal_packet.h"
86
Jeff Johnsone7245742012-09-05 17:12:55 -070087#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070088
89#include "wlan_hal_msg.h"
90
Jeff Johnson295189b2012-06-20 16:38:30 -070091#include "pttMsgApi.h"
Srikant Kuppa64eae792013-08-29 15:27:56 -070092#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070093
Girish Gowli55caa852015-01-19 16:09:49 +053094#include "vos_api.h"
Girish Gowli55caa852015-01-19 16:09:49 +053095
Jeff Johnson295189b2012-06-20 16:38:30 -070096/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070097 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -070098 ===========================================================================*/
99#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
102#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
103
Yue Mad8cac142013-03-28 11:33:46 -0700104#define FEATURE_NOT_SUPPORTED 127
Sachin Ahuja69bfa982015-04-24 17:02:57 +0530105#define MAX_FW_HOST_CAP_SIZE 1024
Jeff Johnson295189b2012-06-20 16:38:30 -0700106#ifdef FEATURE_WLAN_SCAN_PNO
107#define WDI_PNO_VERSION_MASK 0x8000
108#endif
109
110/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700111static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700112/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700113static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700114/* array of features supported. Need to add a new feature
115 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
116 */
117static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800118 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -0800119#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700120 ,SAP32STA //5
Yathish9f22e662012-12-10 14:21:35 -0800121#else
122 ,FEATURE_NOT_SUPPORTED
123#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800124#ifdef FEATURE_WLAN_TDLS
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700125 ,TDLS //6
Yathish9f22e662012-12-10 14:21:35 -0800126#else
127 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800128#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700129 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathish9f22e662012-12-10 14:21:35 -0800130#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700131 ,WLANACTIVE_OFFLOAD //8
Yathish9f22e662012-12-10 14:21:35 -0800132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700135 ,FEATURE_NOT_SUPPORTED //9
136 ,FEATURE_NOT_SUPPORTED //10
137 ,FEATURE_NOT_SUPPORTED //11
138 ,FEATURE_NOT_SUPPORTED //12
139 ,FEATURE_NOT_SUPPORTED //13
140 ,FEATURE_NOT_SUPPORTED //14
141 ,FEATURE_NOT_SUPPORTED //15
142 ,FEATURE_NOT_SUPPORTED //16
143 ,FEATURE_NOT_SUPPORTED //17
144 ,FEATURE_NOT_SUPPORTED //18
145 ,FEATURE_NOT_SUPPORTED //19
146 ,FEATURE_NOT_SUPPORTED //20
147 ,FEATURE_NOT_SUPPORTED //21
Yue Ma55855df2013-08-26 10:59:03 -0700148 ,WOW //22
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700149#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Ma55855df2013-08-26 10:59:03 -0700150 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700151#else
152 ,FEATURE_NOT_SUPPORTED
153#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700154 ,FEATURE_NOT_SUPPORTED //24
155 ,FEATURE_NOT_SUPPORTED //25
156 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Ma55855df2013-08-26 10:59:03 -0700157 ,FEATURE_NOT_SUPPORTED //27
158 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudice419872013-09-13 19:36:52 +0530159#ifdef FEATURE_WLAN_TDLS
160 ,ADVANCE_TDLS //29
161#else
162 ,FEATURE_NOT_SUPPORTED //29
163#endif
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530164 ,FEATURE_NOT_SUPPORTED //30
165 ,FW_IN_TX_PATH //31
Sandeep Puligilla60342762014-01-30 21:05:37 +0530166 ,EXTENDED_NSOFFLOAD_SLOT //32
167 ,CH_SWITCH_V1 //33
168 ,HT40_OBSS_SCAN //34
169 ,UPDATE_CHANNEL_LIST //35
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +0530170 ,FEATURE_NOT_SUPPORTED //36
171 ,FEATURE_NOT_SUPPORTED //37
172 ,FEATURE_NOT_SUPPORTED //38
173#ifdef FEATURE_WLAN_TDLS
174 ,TDLS_SCAN_COEXISTENCE //39
175#else
176 ,FEATURE_NOT_SUPPORTED //39
177#endif
Dino Mycledf0a5d92014-07-04 09:41:55 +0530178#ifdef WLAN_FEATURE_LINK_LAYER_STATS
179 ,LINK_LAYER_STATS_MEAS //40
180#else
181 ,FEATURE_NOT_SUPPORTED //40
182#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +0530183 ,MU_MIMO //41
Dino Myclee8843b32014-07-04 14:21:45 +0530184#ifdef WLAN_FEATURE_EXTSCAN
185 ,EXTENDED_SCAN //42
186#else
187 ,FEATURE_NOT_SUPPORTED //42
188#endif
Mihir Shetec34258c2014-07-30 17:50:27 +0530189 ,DYNAMIC_WMM_PS //43
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800190
Siddharth Bhal171788a2014-09-29 21:02:40 +0530191 ,MAC_SPOOFED_SCAN //44
Sachin Ahuja825082e2014-11-25 17:34:36 +0530192 ,FEATURE_NOT_SUPPORTED //45
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530193 ,DISA //46
Abhishek Singh85b74712014-10-08 11:38:19 +0530194 ,FW_STATS //47
Sachin Ahuja825082e2014-11-25 17:34:36 +0530195 ,WPS_PRBRSP_TMPL //48
Abhishek Singh5fef4042014-11-25 18:33:00 +0530196 ,BCN_IE_FLT_DELTA //49
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +0530197 ,FEATURE_NOT_SUPPORTED //50
198#ifdef FEATURE_WLAN_TDLS
199 ,TDLS_OFF_CHANNEL //51
200#else
201 ,FEATURE_NOT_SUPPORTED //51
202#endif
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530203 ,FEATURE_NOT_SUPPORTED //52
204 ,MGMT_FRAME_LOGGING //53
Ganesh Kondabattinib18b3292015-03-16 16:59:26 +0530205 ,ENHANCED_TXBD_COMPLETION //54
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530206 ,LOGGING_ENHANCEMENT //55
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530207};
Jeff Johnson295189b2012-06-20 16:38:30 -0700208
209/*--------------------------------------------------------------------------
210 WLAN DAL State Machine
211 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700212WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700213{
214 /*WDI_INIT_ST*/
215 {{
216 WDI_MainStart, /*WDI_START_EVENT*/
217 NULL, /*WDI_STOP_EVENT*/
218 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
219 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
220 WDI_MainClose, /*WDI_CLOSE_EVENT*/
221 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
222 }},
223
224 /*WDI_STARTED_ST*/
225 {{
226 WDI_MainStartStarted, /*WDI_START_EVENT*/
227 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
228 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
229 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
230 NULL, /*WDI_CLOSE_EVENT*/
231 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
232 }},
233
234 /*WDI_STOPPED_ST*/
235 {{
236 WDI_MainStart, /*WDI_START_EVENT*/
237 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
238 NULL, /*WDI_REQUEST_EVENT*/
239 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
240 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700241 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700242 }},
243
244 /*WDI_BUSY_ST*/
245 {{
246 WDI_MainStartBusy, /*WDI_START_EVENT*/
247 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
248 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
249 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
250 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
251 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
252 }}
253};
254
Jeff Johnsone7245742012-09-05 17:12:55 -0700255/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700256 DAL Request Processing Array - the functions in this table will only be
257 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700258 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700259 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700260WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700261{
262 /*INIT*/
263 WDI_ProcessStartReq, /* WDI_START_REQ */
264 WDI_ProcessStopReq, /* WDI_STOP_REQ */
265 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
266
267 /*SCAN*/
268 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
269 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
270 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
271 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
272
273 /*ASSOCIATION*/
274 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
275 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
276 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
277 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
278 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
279
280 /* Security */
281 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
282 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
283 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
284 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
285
286 /* QoS and BA APIs */
287 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
288 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
289 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
290 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
291 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
292
293 /* Miscellaneous Control APIs */
294 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
295 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
296 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
297 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
298 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
299
300 /*BA APIs*/
301 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
302 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
303
304 /*Beacon processing APIs*/
305 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
306 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
307
308 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
309 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
310 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
311 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700313 /* PowerSave APIs */
314 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
315 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
316 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
317 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
318 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
319 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
320 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
321 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
322 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
323 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
324 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
325 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
326 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
327 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
328 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
329 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
330 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
331 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
332 /*NV Download APIs*/
333 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
334 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
335 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
336#ifdef WLAN_FEATURE_VOWIFI_11R
337 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
338#else
339 NULL,
340#endif /* WLAN_FEATURE_VOWIFI_11R */
341 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
342 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700343 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700344
345#ifdef FEATURE_OEM_DATA_SUPPORT
346 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
347#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700348 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700349#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700350 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700351
352 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700353
354#ifdef FEATURE_WLAN_SCAN_PNO
355 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
356 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
357 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
358#else
359 NULL,
360 NULL,
361 NULL,
362#endif /* FEATURE_WLAN_SCAN_PNO */
363
364 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700365
Jeff Johnson295189b2012-06-20 16:38:30 -0700366#ifdef WLAN_FEATURE_PACKET_FILTERING
367 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700368 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700369 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700370 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700371 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700372 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700373 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700374 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700375#else
376 NULL,
377 NULL,
378 NULL,
379 NULL,
380#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700381 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700382 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
383 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
384
385 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800386#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700387 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
388#else
389 NULL,
390#endif
391
392#ifdef WLAN_FEATURE_GTK_OFFLOAD
393 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
394 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
395#else
396 NULL,
397 NULL,
398#endif // WLAN_FEATURE_GTK_OFFLOAD
399
400 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
401 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700402#ifdef WLAN_FEATURE_11AC
403 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800404#else
405 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700406#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800407#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800408 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
409#else
schang86c22c42013-03-13 18:41:24 -0700410 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800411#endif
schang86c22c42013-03-13 18:41:24 -0700412 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700413#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700414 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700415#else
416 NULL,
417#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530418#ifdef FEATURE_WLAN_TDLS
419 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
420#else
421 NULL,
422#endif
Leo Chang9056f462013-08-01 19:21:11 -0700423#ifdef FEATURE_WLAN_LPHB
424 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
425#else
426 NULL,
427#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530428
429#ifdef FEATURE_WLAN_BATCH_SCAN
430 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
431#else
432 NULL,
433#endif /* FEATURE_WLAN_BATCH_SCAN */
434
Arif Hussaina5ebce02013-08-09 15:09:58 -0700435 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800436
437 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530438
439 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530440
441#ifdef WLAN_FEATURE_LINK_LAYER_STATS
442 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
443 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
444 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
445#else
446 NULL,
447 NULL,
448 NULL,
449#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530450#ifdef WLAN_FEATURE_EXTSCAN
451 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
452 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
453 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
454 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
455 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
456 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
457 WDI_ProcessEXTScanSetSignifRSSIChangeReq, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ */
458 WDI_ProcessEXTScanResetSignfRSSIChangeReq, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ */
459#else
460 NULL,
461 NULL,
462 NULL,
463 NULL,
464 NULL,
465 NULL,
466 NULL,
467 NULL,
468#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530469 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
Abhishek Singh85b74712014-10-08 11:38:19 +0530470
471 WDI_ProcessGetFwStatsReq, /*WDI_GET_FW_STATS_REQ*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530472
473 WDI_ProcessEncryptMsgReq, /* WDI_ENCRYPT_MSG_REQ*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530474
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530475 WDI_ProcessFWLoggingInitReq, /* WDI_FW_LOGGING_INIT_REQ*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530476 WDI_ProcessGetFrameLogReq, /* WDI_GET_FRAME_LOG_REQ*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530477
478 WDI_ProcessNanRequest, /* WDI_NAN_REQUEST*/
479
Katya Nigamf0511f62015-05-05 16:40:57 +0530480 WDI_ProcessMonStartReq, /* WDI_MON_START_REQ */
481 WDI_ProcessMonStopReq, /* WDI_MON_STOP_REQ */
schang86c22c42013-03-13 18:41:24 -0700482 /*-------------------------------------------------------------------------
483 Indications
484 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700485 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800486 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530487 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
488 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700489#ifdef WLAN_FEATURE_11W
490 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
491#else
492 NULL,
493#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700494 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
495 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530496#ifdef FEATURE_WLAN_BATCH_SCAN
497 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
498 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
499#else
500 NULL,
501 NULL,
502#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700503 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800504
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530505 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800506 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
507
508 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530509#ifdef FEATURE_WLAN_TDLS
510 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
511#else
512 NULL,
513#endif
Abhishek Singh41988ba2015-05-25 19:42:29 +0530514 WDI_ProcessSetRtsCtsHtvhtInd, /* WDI_SET_RTS_CTS_HTVHT_IND */
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530515 WDI_ProcessFWLoggingDXEdoneInd, /* WDI_FW_LOGGING_DXE_DONE_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700516};
517
518
Jeff Johnsone7245742012-09-05 17:12:55 -0700519/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700520 DAL Request Processing Array - the functions in this table will only be
521 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700522 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700523 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700524WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700525{
526 /*INIT*/
527 WDI_ProcessStartRsp, /* WDI_START_RESP */
528 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
529 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
530
531 /*SCAN*/
532 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
533 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
534 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
535 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
536
537 /* ASSOCIATION*/
538 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
539 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
540 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
541 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
542 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
543
544 /* Security */
545 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
546 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
547 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
548 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
549
550 /* QoS and BA APIs */
551 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
552 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
553 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
554 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
555 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
556
557 /* Miscellaneous Control APIs */
558 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
559 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
560 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
561 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
562 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
563
564 /* BA APIs*/
565 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
566 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700567
Jeff Johnson295189b2012-06-20 16:38:30 -0700568 /* IBSS APIs*/
569 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
570 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
571
572 /*Soft AP APIs*/
573 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
574 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
575 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
576 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
577
578 /* PowerSave APIs */
579 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
580 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
581 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
582 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
583 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
584 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
585 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
586 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
587 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
588 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
589 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
590 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
591 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
592 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
593 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
594 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
595 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
596 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700597
Jeff Johnson295189b2012-06-20 16:38:30 -0700598
599 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
600
601 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
602 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
603#ifdef WLAN_FEATURE_VOWIFI_11R
604 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
605#else
606 NULL,
607#endif /* WLAN_FEATURE_VOWIFI_11R */
608 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
609 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700610#ifdef FEATURE_OEM_DATA_SUPPORT
611 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
612#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700613 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700614#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700615 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
616
Jeff Johnson295189b2012-06-20 16:38:30 -0700617 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700618
Jeff Johnson295189b2012-06-20 16:38:30 -0700619 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700620
Jeff Johnsone7245742012-09-05 17:12:55 -0700621 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
622
Jeff Johnson295189b2012-06-20 16:38:30 -0700623#ifdef FEATURE_WLAN_SCAN_PNO
624 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
625 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
626 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
627#else
628 NULL,
629 NULL,
630 NULL,
631#endif // FEATURE_WLAN_SCAN_PNO
632
633 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700634 /*---------------------------------------------------------------------
635 Indications
636 ---------------------------------------------------------------------*/
637#ifdef WLAN_FEATURE_PACKET_FILTERING
638 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700639 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700640 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700641 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700642 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700643 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700644 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700645 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700646#else
647 NULL,
648 NULL,
649 NULL,
650 NULL,
651#endif // WLAN_FEATURE_PACKET_FILTERING
652
653 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
654 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
655
656 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800657#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700658 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
659#else
660 NULL,
661#endif
662
663#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700664 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
665 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700666#else
667 NULL,
668 NULL,
669#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700670 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
671 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700672#ifdef WLAN_FEATURE_11AC
673 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700674#else
675 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700676#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800677#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800678 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
679#else
680 NULL,
681#endif
schang86c22c42013-03-13 18:41:24 -0700682 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700683#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700684 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700685#else
686 NULL,
687#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530688#ifdef FEATURE_WLAN_TDLS
689 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
690#else
691 NULL,
692#endif
Leo Chang9056f462013-08-01 19:21:11 -0700693#ifdef FEATURE_WLAN_LPHB
694 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
695#else
696 NULL,
697#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530698
699#ifdef FEATURE_WLAN_BATCH_SCAN
700 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
701#else
702 NULL,
703#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800704 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530705
c_hpothu92367912014-05-01 15:18:17 +0530706 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800707
c_hpothu92367912014-05-01 15:18:17 +0530708 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
709
710 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800711
Sunil Duttbd736ed2014-05-26 21:19:41 +0530712
713#ifdef WLAN_FEATURE_LINK_LAYER_STATS
714 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
715 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
716 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
717#else
718 NULL,
719 NULL,
720 NULL,
721#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530722#ifdef WLAN_FEATURE_EXTSCAN
723 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
724 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
725 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
726 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
727 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
728 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
729 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
730 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
731#else
732 NULL,
733 NULL,
734 NULL,
735 NULL,
736 NULL,
737 NULL,
738 NULL,
739 NULL,
740#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530741 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530742
743 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530744
745 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530746 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530747 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530748
Srinivas Dasari32a79262015-02-19 13:04:49 +0530749 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
750
Katya Nigamf0511f62015-05-05 16:40:57 +0530751 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
752 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700753 /*---------------------------------------------------------------------
754 Indications
755 ---------------------------------------------------------------------*/
756 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
757 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
758 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
759 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
760 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
761 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
762
763 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
764
765 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
766
Jeff Johnson295189b2012-06-20 16:38:30 -0700767 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700768
769#ifdef FEATURE_WLAN_SCAN_PNO
770 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
771#else
772 NULL,
773#endif // FEATURE_WLAN_SCAN_PNO
774
775#ifdef WLAN_WAKEUP_EVENTS
776 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
777#else // WLAN_WAKEUP_EVENTS
778 NULL,
779#endif // WLAN_WAKEUP_EVENTS
780
781 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800782
Viral Modid86bde22012-12-10 13:09:21 -0800783 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530784#ifdef FEATURE_WLAN_TDLS
785 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
786#else
787 NULL,
788#endif
Leo Chang9056f462013-08-01 19:21:11 -0700789
790#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700791 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700792#else
793 NULL,
794#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700795
796 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700797
798 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530799
800#ifdef FEATURE_WLAN_BATCH_SCAN
801 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
802#else
803 NULL,
804#endif
805
Leo Chang0b0e45a2013-12-15 15:18:55 -0800806#ifdef FEATURE_WLAN_CH_AVOID
807 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
808#else
809 NULL,
810#endif /* FEATURE_WLAN_CH_AVOID */
811
Sunil Duttbd736ed2014-05-26 21:19:41 +0530812 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
813#ifdef WLAN_FEATURE_LINK_LAYER_STATS
814 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
815#else
816 NULL,
817#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530818#ifdef WLAN_FEATURE_EXTSCAN
819 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
820 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
821 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
822 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
823 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
824#else
825 NULL,
826 NULL,
827 NULL,
828 NULL,
829 NULL,
830#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530831#ifdef FEATURE_WLAN_TDLS
832 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
833#else
834 NULL,
835#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530836 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530837 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Jeff Johnson295189b2012-06-20 16:38:30 -0700838};
839
840
Jeff Johnsone7245742012-09-05 17:12:55 -0700841/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700842 WLAN DAL Global Control Block
843 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700844WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700845static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
846
Jeff Johnsone7245742012-09-05 17:12:55 -0700847const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700848
849/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700850WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700851void* WDI_GET_PAL_CTX( void )
852{
Jeff Johnsone7245742012-09-05 17:12:55 -0700853 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700854}/*WDI_GET_PAL_CTX*/
855
Jeff Johnsone7245742012-09-05 17:12:55 -0700856/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700857 Helper inline converters
858 ============================================================================*/
859/*Convert WDI driver type into HAL driver type*/
860WPT_STATIC WPT_INLINE WDI_Status
861WDI_HAL_2_WDI_STATUS
862(
863 eHalStatus halStatus
864);
865
866/*Convert WDI request type into HAL request type*/
867WPT_STATIC WPT_INLINE tHalHostMsgType
868WDI_2_HAL_REQ_TYPE
869(
870 WDI_RequestEnumType wdiReqType
871);
872
873/*Convert WDI response type into HAL response type*/
874WPT_STATIC WPT_INLINE WDI_ResponseEnumType
875HAL_2_WDI_RSP_TYPE
876(
877 tHalHostMsgType halMsg
878);
879
880/*Convert WDI driver type into HAL driver type*/
881WPT_STATIC WPT_INLINE tDriverType
882WDI_2_HAL_DRV_TYPE
883(
884 WDI_DriverType wdiDriverType
885);
886
887/*Convert WDI stop reason into HAL stop reason*/
888WPT_STATIC WPT_INLINE tHalStopType
889WDI_2_HAL_STOP_REASON
890(
891 WDI_StopType wdiStopType
892);
893
894/*Convert WDI scan mode type into HAL scan mode type*/
895WPT_STATIC WPT_INLINE eHalSysMode
896WDI_2_HAL_SCAN_MODE
897(
898 WDI_ScanMode wdiScanMode
899);
900
901/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700902WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700903WDI_2_HAL_SEC_CH_OFFSET
904(
905 WDI_HTSecondaryChannelOffset wdiSecChOffset
906);
907
908/*Convert WDI BSS type into HAL BSS type*/
909WPT_STATIC WPT_INLINE tSirBssType
910WDI_2_HAL_BSS_TYPE
911(
912 WDI_BssType wdiBSSType
913);
914
915/*Convert WDI NW type into HAL NW type*/
916WPT_STATIC WPT_INLINE tSirNwType
917WDI_2_HAL_NW_TYPE
918(
919 WDI_NwType wdiNWType
920);
921
922/*Convert WDI chanel bonding type into HAL cb type*/
923WPT_STATIC WPT_INLINE ePhyChanBondState
924WDI_2_HAL_CB_STATE
925(
926 WDI_PhyChanBondState wdiCbState
927);
928
929/*Convert WDI chanel bonding type into HAL cb type*/
930WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
931WDI_2_HAL_HT_OPER_MODE
932(
933 WDI_HTOperatingMode wdiHTOperMode
934);
935
936/*Convert WDI mimo PS type into HAL mimo PS type*/
937WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
938WDI_2_HAL_MIMO_PS
939(
940 WDI_HTMIMOPowerSaveState wdiHTOperMode
941);
942
943/*Convert WDI ENC type into HAL ENC type*/
944WPT_STATIC WPT_INLINE tAniEdType
945WDI_2_HAL_ENC_TYPE
946(
947 WDI_EncryptType wdiEncType
948);
949
950/*Convert WDI WEP type into HAL WEP type*/
951WPT_STATIC WPT_INLINE tAniWepType
952WDI_2_HAL_WEP_TYPE
953(
954 WDI_WepType wdiWEPType
955);
956
957/*Convert WDI Link State into HAL Link State*/
958WPT_STATIC WPT_INLINE tSirLinkState
959WDI_2_HAL_LINK_STATE
960(
961 WDI_LinkStateType wdiLinkState
962);
963
Jeff Johnsone7245742012-09-05 17:12:55 -0700964/*Translate a STA Context from WDI into HAL*/
965WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700966void
967WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700968(
Jeff Johnson295189b2012-06-20 16:38:30 -0700969 tConfigStaParams* phalConfigSta,
970 WDI_ConfigStaReqInfoType* pwdiConfigSta
971);
Jeff Johnsone7245742012-09-05 17:12:55 -0700972
973/*Translate a Rate set info from WDI into HAL*/
974WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700975WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700976(
Jeff Johnson295189b2012-06-20 16:38:30 -0700977 tSirMacRateSet* pHalRateSet,
978 WDI_RateSet* pwdiRateSet
979);
980
981/*Translate an EDCA Parameter Record from WDI into HAL*/
982WPT_STATIC WPT_INLINE void
983WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700984(
Jeff Johnson295189b2012-06-20 16:38:30 -0700985 tSirMacEdcaParamRecord* phalEdcaParam,
986 WDI_EdcaParamRecord* pWDIEdcaParam
987);
988
989/*Copy a management frame header from WDI fmt into HAL fmt*/
990WPT_STATIC WPT_INLINE void
991WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
992(
993 tSirMacMgmtHdr* pmacMgmtHdr,
994 WDI_MacMgmtHdr* pwdiMacMgmtHdr
995);
996
997/*Copy config bss parameters from WDI fmt into HAL fmt*/
998WPT_STATIC WPT_INLINE void
999WDI_CopyWDIConfigBSSToHALConfigBSS
1000(
1001 tConfigBssParams* phalConfigBSS,
1002 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1003);
1004
Jeff Johnsone7245742012-09-05 17:12:55 -07001005/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001006 pointed to by user data */
1007WPT_STATIC WPT_INLINE void
1008WDI_ExtractRequestCBFromEvent
1009(
1010 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001011 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001012 void** ppUserData
1013);
1014
1015wpt_uint8
1016WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001017(
Jeff Johnson295189b2012-06-20 16:38:30 -07001018 WDI_ControlBlockType* pWDICtx,
1019 WDI_BSSSessionType** ppSession
1020);
1021
1022void
1023WDI_AddBcastSTAtoSTATable
1024(
1025 WDI_ControlBlockType* pWDICtx,
1026 WDI_AddStaParams * staParams,
1027 wpt_uint16 usBcastStaIdx
1028);
1029
1030WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001031(
Jeff Johnson295189b2012-06-20 16:38:30 -07001032 WDI_ControlBlockType* pWDICtx,
1033 WDI_EventInfoType* pEventData
1034);
1035
1036void
1037WDI_SetPowerStateCb
1038(
1039 wpt_status status,
1040 unsigned int dxePhyAddr,
1041 void *pContext
1042);
1043
Jeff Johnson295189b2012-06-20 16:38:30 -07001044/**
1045 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001046
1047 @param wdiReqMsgId: WDI Message request Id
1048
1049 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001050 @return Result of the function call
1051*/
1052static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1053{
1054 switch (wdiReqMsgId)
1055 {
1056 CASE_RETURN_STRING( WDI_START_REQ );
1057 CASE_RETURN_STRING( WDI_STOP_REQ );
1058 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1059 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1060 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1061 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1062 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1063 CASE_RETURN_STRING( WDI_JOIN_REQ );
1064 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1065 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1066 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1067 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1068 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1069 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1070 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1071 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1072 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1073 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1074 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1075 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1076 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1077 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001078 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001079 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1080 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1081 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1082 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1083 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1084 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1085 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1086 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1087 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1088 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1089 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1090 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001091 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001092 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301093#ifdef FEATURE_WLAN_TDLS
1094 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301095 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301096#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001097 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1098 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1099 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1100 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1101 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1102 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1103 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1104 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1105 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1106 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1107 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1108 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1109 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1110 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1111 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1112 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1113 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1114 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1115 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1116 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1117 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1118 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1119 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1120 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1121 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001122 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001123 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1124 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1125 #ifdef FEATURE_WLAN_SCAN_PNO
1126 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1127 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1128 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1129 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001130#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001131 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001132#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001133 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1134 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1135 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1136 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1137 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1138 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1139 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1140 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1141 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301142 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001143 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001144 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001145#ifdef WLAN_FEATURE_11W
1146 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1147#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301148#ifdef FEATURE_WLAN_BATCH_SCAN
1149 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1150 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1151 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1152#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301153 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1154 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001155 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301156#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1157 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1158 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1159 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1160#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301161#ifdef WLAN_FEATURE_EXTSCAN
1162 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1163 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1164 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1165 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1166 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1167 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1168 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1169 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1170#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301171 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301172 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301173 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301174 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301175 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301176 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301177 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301178 CASE_RETURN_STRING( WDI_MON_START_REQ );
1179 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001180 default:
1181 return "Unknown WDI MessageId";
1182 }
1183}
1184
1185
1186
1187/**
1188 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001189
1190 @param wdiRespMsgId: WDI Message response Id
1191
1192 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001193 @return Result of the function call
1194*/
1195static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1196{
1197 switch (wdiRespMsgId)
1198 {
1199 CASE_RETURN_STRING( WDI_START_RESP );
1200 CASE_RETURN_STRING( WDI_STOP_RESP );
1201 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1202 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1203 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1204 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1205 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1206 CASE_RETURN_STRING( WDI_JOIN_RESP );
1207 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1208 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1209 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1210 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1211 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1212 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1213 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1214 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1215 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1216 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1217 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1218 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1219 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1220 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1221 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1222 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1223 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1224 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1225 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1226 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1227 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1228 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1229 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1230 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1231 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1232 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1233 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301234#ifdef FEATURE_WLAN_TDLS
1235 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301236 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301237 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1238#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001239 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1240 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1241 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1242 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1243 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1244 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1245 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1246 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1247 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1248 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1249 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1250 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1251 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1252 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1253 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1254 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1255 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1256 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1257 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1258 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1259 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1260 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1261 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1262 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1263 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001264 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001265 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1266 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1267 #ifdef FEATURE_WLAN_SCAN_PNO
1268 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1269 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1270 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1271 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001272#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001273 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001274#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001275 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1276 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1277 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1278 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1279 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1280 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1281 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1282 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001283 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301284#ifdef FEATURE_WLAN_BATCH_SCAN
1285 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1286#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001287 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301288 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301289 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301290#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1291 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1292 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1293 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1294#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301295#ifdef WLAN_FEATURE_EXTSCAN
1296 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1297 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1298 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1299 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1300 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1301 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1302 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1303 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1304 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1305 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1306 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1307 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1308 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1309
1310#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301311 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301312 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301313 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301314 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001315 default:
1316 return "Unknown WDI MessageId";
1317 }
1318}
1319
1320/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301321 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1322 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301323 @param capabilityBitmap - Base address of a 4 element Bitmap array
1324 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301325 @see
1326 @returns None
1327 */
1328void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1329{
Abhishek Singh08b60122014-02-04 18:05:23 +05301330 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301331 char *pTempCapStr = NULL;
1332 char *pCapStr = NULL;
1333 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1334 if (NULL == pTempCapStr)
1335 {
1336 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1337 "Memory allocation failed for CapStr");
1338 return;
1339 }
1340
1341 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301342 for (j = 0; j < 4; j++) {
1343 for (i = 0; i < 32; i++) {
1344 if ((*(capabilityBitmap + j) & (1 << i))) {
1345 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301346 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1347 pCapStr += strlen("MCC");
1348 break;
1349 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1350 pCapStr += strlen("P2P");
1351 break;
1352 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1353 pCapStr += strlen("DOT11AC");
1354 break;
1355 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1356 pCapStr += strlen("SLM_SESSIONIZATION");
1357 break;
1358 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1359 pCapStr += strlen("DOT11AC_OPMODE");
1360 break;
1361 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1362 pCapStr += strlen("SAP32STA");
1363 break;
1364 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1365 pCapStr += strlen("TDLS");
1366 break;
1367 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1368 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1369 break;
1370 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1371 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1372 break;
1373 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1374 pCapStr += strlen("BEACON_OFFLOAD");
1375 break;
1376 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1377 pCapStr += strlen("SCAN_OFFLOAD");
1378 break;
1379 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1380 pCapStr += strlen("ROAM_OFFLOAD");
1381 break;
1382 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1383 pCapStr += strlen("BCN_MISS_OFFLOAD");
1384 break;
1385 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1386 pCapStr += strlen("STA_POWERSAVE");
1387 break;
1388 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1389 pCapStr += strlen("AP_UAPSD");
1390 break;
1391 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1392 pCapStr += strlen("AP_DFS");
1393 break;
1394 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1395 pCapStr += strlen("BLOCKACK");
1396 break;
1397 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1398 pCapStr += strlen("PHY_ERR");
1399 break;
1400 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1401 pCapStr += strlen("BCN_FILTER");
1402 break;
1403 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1404 pCapStr += strlen("RTT");
1405 break;
1406 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1407 pCapStr += strlen("RATECTRL");
1408 break;
1409 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1410 pCapStr += strlen("WOW");
1411 break;
1412 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1413 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1414 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301415 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1416 pCapStr += strlen("FW_IN_TX_PATH");
1417 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301418 case HT40_OBSS_SCAN:
1419 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1420 "%s", "HT40_OBSS_SCAN");
1421 pCapStr += strlen("HT40_OBSS_SCAN");
1422 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301423 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1424 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1425 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1426 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1427 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301428 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1429 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1430 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301431 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1432 pCapStr += strlen("CH_SWITCH_V1");
1433 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301434#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1435 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1436 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1437 break;
1438#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301439#ifdef WLAN_FEATURE_EXTSCAN
1440 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1441 pCapStr += strlen("EXTENDED_SCAN");
1442 break;
1443#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301444 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1445 pCapStr += strlen("MU_MIMO");
1446 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301447
Mihir Shetec34258c2014-07-30 17:50:27 +05301448 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1449 pCapStr += strlen("DYNAMIC_WMM_PS");
1450 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301451 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1452 pCapStr += strlen("FW_STATS");
1453 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301454 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1455 pCapStr += strlen("MAC_SPOOFED_SCAN");
1456 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301457 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1458 pCapStr += strlen("WPS_PRBRSP_TMPL");
1459 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301460 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1461 pCapStr += strlen("BCN_IE_FLT_DELTA");
1462 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301463 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1464 pCapStr += strlen("MGMT_FRAME_LOGGING");
1465 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301466 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1467 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1468 break;
1469
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301470 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1471 pCapStr += strlen("DISA");
1472 break;
1473
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301474 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1475 pCapStr += strlen("TDLS_OFF_CHANNEL");
1476 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301477 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1478 pCapStr += strlen("LOGGING_ENHANCEMENT");
1479 break;
1480
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301481
Abhishek Singh08b60122014-02-04 18:05:23 +05301482 }
1483 *pCapStr++ = ',';
1484 *pCapStr++ = ' ';
1485 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301486 }
1487 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301488 pCapStr -= 2;
1489 *pCapStr = '\0';
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pTempCapStr);
1491 if (pTempCapStr)
1492 {
1493 vos_mem_free(pTempCapStr);
1494 pTempCapStr = NULL;
1495 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301496}
1497
1498/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001499 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001500
1501 @param halStatusId: HAL status Id
1502
1503 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001504 @return Result of the function call
1505*/
1506static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1507{
1508 switch (halStatusId)
1509 {
1510 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1511 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1512 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1513 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1514 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1515 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1516 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1517 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1518 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1519 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1520 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1521 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1522 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1523 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1524 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1525 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1526 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1527 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1528 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1529 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1530 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1531 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1532 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1533 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1534 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1535 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1536 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1537 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1538 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1539 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1540 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1541 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1542 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1543 default:
1544 return "Unknown HAL status";
1545 }
1546}
1547
Jeff Johnsone7245742012-09-05 17:12:55 -07001548/*========================================================================
1549
Jeff Johnson295189b2012-06-20 16:38:30 -07001550 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001551
Jeff Johnson295189b2012-06-20 16:38:30 -07001552==========================================================================*/
1553
1554/**
1555 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001556
Jeff Johnson295189b2012-06-20 16:38:30 -07001557 DAL will allocate all the resources it needs. It will open PAL, it will also
1558 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001559 DXE/SMD or any other drivers that they need.
1560
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301561 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001562 ppWDIGlobalCtx: output pointer of Global Context
1563 pWdiDevCapability: output pointer of device capability
1564
1565 @return Result of the function call
1566*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001567WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001568WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001569(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301570 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001571 void** ppWDIGlobalCtx,
1572 WDI_DeviceCapabilityType* pWdiDevCapability,
1573 unsigned int driverType
1574)
1575{
1576 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001577 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001578 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001579 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1581
1582 /*---------------------------------------------------------------------
1583 Sanity check
1584 ---------------------------------------------------------------------*/
1585 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1586 {
1587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1588 "Invalid input parameters in WDI_Init");
1589
Jeff Johnsone7245742012-09-05 17:12:55 -07001590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001591 }
1592
1593 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001594 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001595 ---------------------------------------------------------------------*/
1596 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1597 {
1598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1599 "WDI module already initialized - return");
1600
Jeff Johnsone7245742012-09-05 17:12:55 -07001601 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001602 }
1603
1604 /*Module is now initialized - this flag is to ensure the fact that multiple
1605 init will not happen on WDI
1606 !! - potential race does exist because read and set are not atomic,
1607 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001608 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001609
1610 /*Setup the control block */
1611 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301612 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001613
1614 /*Setup the STA Table*/
1615 wdiStatus = WDI_STATableInit(&gWDICb);
1616 if ( WDI_STATUS_SUCCESS != wdiStatus )
1617 {
1618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1619 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001620 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001621 goto fail_STATableInit;
1622 }
1623
1624 /*------------------------------------------------------------------------
1625 Open the PAL
1626 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301627 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001628 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1629 {
1630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1631 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001632 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001633 goto fail_wpalOpen;
1634 }
1635
1636 /*Initialize main synchro mutex - it will be used to ensure integrity of
1637 the main WDI Control Block*/
1638 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1639 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1640 {
1641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1642 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001643 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001644 goto fail_mutex;
1645 }
1646
1647 /*Initialize the response timer - it will be used to time all messages
1648 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001649 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1650 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001651 &gWDICb);
1652 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1653 {
1654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1655 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001656 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001657 goto fail_timer;
1658 }
1659
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001660 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1661 WDI_SsrTimerCB,
1662 &gWDICb);
1663 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1664 {
1665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1666 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001667 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001668 goto fail_timer2;
1669 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001670 /* Initialize the WDI Pending Request Queue*/
1671 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1672 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1673 {
1674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1675 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001676 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001677 goto fail_pend_queue;
1678 }
1679
1680 /*Init WDI Pending Assoc Id Queue */
1681 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1682 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1683 {
1684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1685 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001686 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001687 goto fail_assoc_queue;
1688 }
1689
1690 /*Initialize the BSS sessions pending Queue */
1691 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1692 {
1693 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1694 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1695 {
1696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1697 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001698 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001699 goto fail_bss_queue;
1700 }
1701 }
1702
1703 /*Indicate the control block is sufficiently initialized for callbacks*/
1704 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1705
1706 /*------------------------------------------------------------------------
1707 Initialize the Data Path Utility Module
1708 ------------------------------------------------------------------------*/
1709 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1710 if ( WDI_STATUS_SUCCESS != wdiStatus )
1711 {
1712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1713 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001714 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001715 goto fail_dp_util_init;
1716 }
1717
1718 /* Init Set power state event */
1719 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001720 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001721 {
1722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1723 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001724 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001725 goto fail_power_event;
1726 }
1727
1728 /* Init WCTS action event */
1729 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001730 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001731 {
1732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1733 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001734 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001735 goto fail_wcts_event;
1736 }
1737
1738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001739 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001740 ------------------------------------------------------------------------*/
1741 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1742 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001743 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001744 wctsCBs.wctsRxMsgCBData = &gWDICb;
1745
Jeff Johnsone7245742012-09-05 17:12:55 -07001746 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001748 WDI_CT_CHANNEL_SIZE,
1749 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001750
1751 if ( NULL == gWDICb.wctsHandle )
1752 {
1753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001754 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001755 goto fail_wcts_open;
1756 }
1757
1758 gWDICb.driverMode = (tDriverType)driverType;
1759 /* FTM mode not need to open Transport Driver */
1760 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001761 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 /*------------------------------------------------------------------------
1763 Open the Data Transport
1764 ------------------------------------------------------------------------*/
1765 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1766 {
1767 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001768 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 goto fail_wdts_open;
1770 }
1771 }
1772
1773 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001774 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301775 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001776 /*Send the context as a ptr to the global WDI Control Block*/
1777 *ppWDIGlobalCtx = &gWDICb;
1778
1779 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001780 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001781 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1782 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1783 return WDI_STATUS_SUCCESS;
1784
1785 /* ERROR handlers
1786 Undo everything that completed successfully */
1787
1788 fail_wdts_open:
1789 {
1790 wpt_status eventStatus;
1791
1792 /* Closing WCTS in this scenario is tricky since it has to close
1793 the SMD channel and then we get notified asynchronously when
1794 the channel has been closed. So we take some of the logic from
1795 the "normal" close procedure in WDI_Close()
1796 */
1797
1798 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001799 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001800 {
1801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001802 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001803 }
1804
1805 WCTS_CloseTransport(gWDICb.wctsHandle);
1806
1807 /* Wait for WCTS to close the control transport. If we were able
1808 to reset the event flag, then we'll wait for the event,
1809 otherwise we'll wait for a maximum amount of time required for
1810 the channel to be closed */
1811 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1812 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001813 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001814 WDI_WCTS_ACTION_TIMEOUT);
1815 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1816 {
1817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001818 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001819 }
1820 }
1821 else
1822 {
1823 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1824 }
1825 }
1826 fail_wcts_open:
1827 wpalEventDelete(&gWDICb.wctsActionEvent);
1828 fail_wcts_event:
1829 wpalEventDelete(&gWDICb.setPowerStateEvent);
1830 fail_power_event:
1831 WDI_DP_UtilsExit(&gWDICb);
1832 fail_dp_util_init:
1833 gWDICb.magic = 0;
1834 fail_bss_queue:
1835 /* entries 0 thru i-1 were successfully initialized */
1836 while (0 < i)
1837 {
1838 i--;
1839 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1840 }
1841 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1842 fail_assoc_queue:
1843 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1844 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001845 wpalTimerDelete(&gWDICb.ssrTimer);
1846 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001847 wpalTimerDelete(&gWDICb.wptResponseTimer);
1848 fail_timer:
1849 wpalMutexDelete(&gWDICb.wptMutex);
1850 fail_mutex:
1851 wpalClose(gWDICb.pPALContext);
1852 fail_wpalOpen:
1853 WDI_STATableClose(&gWDICb);
1854 fail_STATableInit:
1855 gWDIInitialized = eWLAN_PAL_FALSE;
1856
1857 return WDI_STATUS_E_FAILURE;
1858
1859}/*WDI_Init*/;
1860
1861/**
1862 @brief WDI_Start will be called when the upper MAC is ready to
1863 commence operation with the WLAN Device. Upon the call
1864 of this API the WLAN DAL will pack and send a HAL Start
1865 message to the lower RIVA sub-system if the SMD channel
1866 has been fully opened and the RIVA subsystem is up.
1867
1868 If the RIVA sub-system is not yet up and running DAL
1869 will queue the request for Open and will wait for the
1870 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001871 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001872
1873 WDI_Init must have been called.
1874
Jeff Johnsone7245742012-09-05 17:12:55 -07001875 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001876 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001877
Jeff Johnson295189b2012-06-20 16:38:30 -07001878 wdiStartRspCb: callback for passing back the response of
1879 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001880
Jeff Johnson295189b2012-06-20 16:38:30 -07001881 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001882 callback
1883
Jeff Johnson295189b2012-06-20 16:38:30 -07001884 @see WDI_Start
1885 @return Result of the function call
1886*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001887WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001888WDI_Start
1889(
1890 WDI_StartReqParamsType* pwdiStartParams,
1891 WDI_StartRspCb wdiStartRspCb,
1892 void* pUserData
1893)
1894{
1895 WDI_EventInfoType wdiEventData;
1896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1897
1898 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001899 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001900 ------------------------------------------------------------------------*/
1901 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1902 {
1903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1904 "WDI API call before module is initialized - Fail request");
1905
Jeff Johnsone7245742012-09-05 17:12:55 -07001906 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001907 }
1908
1909 /*------------------------------------------------------------------------
1910 Fill in Event data and post to the Main FSM
1911 ------------------------------------------------------------------------*/
1912 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001913 wdiEventData.pEventData = pwdiStartParams;
1914 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1915 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001916 wdiEventData.pUserData = pUserData;
1917
1918 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1919
1920}/*WDI_Start*/
1921
1922/**
1923 @brief WDI_Stop will be called when the upper MAC is ready to
1924 stop any operation with the WLAN Device. Upon the call
1925 of this API the WLAN DAL will pack and send a HAL Stop
1926 message to the lower RIVA sub-system if the DAL Core is
1927 in started state.
1928
1929 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001930
1931 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001932
1933 WDI_Start must have been called.
1934
Jeff Johnsone7245742012-09-05 17:12:55 -07001935 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001936 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001937
Jeff Johnson295189b2012-06-20 16:38:30 -07001938 wdiStopRspCb: callback for passing back the response of
1939 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001940
Jeff Johnson295189b2012-06-20 16:38:30 -07001941 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001942 callback
1943
Jeff Johnson295189b2012-06-20 16:38:30 -07001944 @see WDI_Start
1945 @return Result of the function call
1946*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001947WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001948WDI_Stop
1949(
1950 WDI_StopReqParamsType* pwdiStopParams,
1951 WDI_StopRspCb wdiStopRspCb,
1952 void* pUserData
1953)
1954{
1955 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001956 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1958
1959 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001960 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 ------------------------------------------------------------------------*/
1962 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1963 {
1964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1965 "WDI API call before module is initialized - Fail request");
1966
Jeff Johnsone7245742012-09-05 17:12:55 -07001967 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001968 }
1969
Jeff Johnson43971f52012-07-17 12:26:56 -07001970 /*Access to the global state must be locked before cleaning */
1971 wpalMutexAcquire(&pWDICtx->wptMutex);
1972
1973 /*Clear all pending request*/
1974 WDI_ClearPendingRequests(pWDICtx);
1975
1976 /*We have completed cleaning unlock now*/
1977 wpalMutexRelease(&pWDICtx->wptMutex);
1978
Jeff Johnson295189b2012-06-20 16:38:30 -07001979 /* Free the global variables */
1980 wpalMemoryFree(gpHostWlanFeatCaps);
1981 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001982 gpHostWlanFeatCaps = NULL;
1983 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001984
1985 /*------------------------------------------------------------------------
1986 Fill in Event data and post to the Main FSM
1987 ------------------------------------------------------------------------*/
1988 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001989 wdiEventData.pEventData = pwdiStopParams;
1990 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1991 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001992 wdiEventData.pUserData = pUserData;
1993
1994 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1995
1996}/*WDI_Stop*/
1997
1998
1999
2000/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002001 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002002 needs to interact with DAL. DAL will free its control
2003 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002004
2005 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002006
2007 WDI_Stop must have been called.
2008
2009 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002010
Jeff Johnson295189b2012-06-20 16:38:30 -07002011 @see WDI_Stop
2012 @return Result of the function call
2013*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002014WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002015WDI_Close
2016(
2017 void
2018)
2019{
2020 wpt_uint8 i;
2021 WDI_EventInfoType wdiEventData;
2022 wpt_status wptStatus;
2023 wpt_status eventStatus;
2024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2025
2026 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002027 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002028 ------------------------------------------------------------------------*/
2029 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2030 {
2031 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2032 "WDI API call before module is initialized - Fail request");
2033
Jeff Johnsone7245742012-09-05 17:12:55 -07002034 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002035 }
2036
2037 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2038 (the control transport will be closed by the FSM and we'll want
2039 to wait until that completes)*/
2040 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002042 {
2043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002044 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002045 /* fall through and try to finish closing via the FSM */
2046 }
2047
2048 /*------------------------------------------------------------------------
2049 Fill in Event data and post to the Main FSM
2050 ------------------------------------------------------------------------*/
2051 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002052 wdiEventData.pEventData = NULL;
2053 wdiEventData.uEventDataSize = 0;
2054 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002055 wdiEventData.pUserData = NULL;
2056
2057 gWDIInitialized = eWLAN_PAL_FALSE;
2058
2059 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2060
2061 /*Wait for WCTS to close the control transport
2062 (but only if we were able to reset the event flag*/
2063 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2064 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002065 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002066 WDI_WCTS_ACTION_TIMEOUT);
2067 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2068 {
2069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002070 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002071 }
2072 }
2073
2074 /* Destroy the WCTS action event */
2075 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2076 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2077 {
2078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2079 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002080 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002081 }
2082
2083 /* Destroy the Set Power State event */
2084 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2085 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2086 {
2087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2088 "WDI Close failed to destroy an event");
2089
Jeff Johnsone7245742012-09-05 17:12:55 -07002090 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002091 }
2092
2093 /*------------------------------------------------------------------------
2094 Closes the Data Path Utility Module
2095 ------------------------------------------------------------------------*/
2096 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2097 {
2098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2099 "WDI Init failed to close the DP Util Module");
2100
Jeff Johnsone7245742012-09-05 17:12:55 -07002101 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002102 }
2103
2104 /*destroy the BSS sessions pending Queue */
2105 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2106 {
2107 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2108 }
2109
2110 /* destroy the WDI Pending Assoc Id Request Queue*/
2111 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2112
2113 /* destroy the WDI Pending Request Queue*/
2114 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002115
Jeff Johnson295189b2012-06-20 16:38:30 -07002116 /*destroy the response timer */
2117 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2118
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002119 /*destroy the SSR timer */
2120 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2121
Jeff Johnson295189b2012-06-20 16:38:30 -07002122 /*invalidate the main synchro mutex */
2123 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2124 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2125 {
2126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2127 "Failed to delete mutex %d", wptStatus);
2128 WDI_ASSERT(0);
2129 }
2130
2131 /*Clear control block. note that this will clear the "magic"
2132 which will inhibit all asynchronous callbacks*/
2133 WDI_CleanCB(&gWDICb);
2134
2135 return wptStatus;
2136
2137}/*WDI_Close*/
2138
2139/**
2140 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2141 This will do most of the WDI stop & close
2142 operations without doing any handshake with Riva
2143
2144 This will also make sure that the control transport
2145 will NOT be closed.
2146
2147 This request will not be queued.
2148
2149
2150 WDI_Start must have been called.
2151
2152 @param closeTransport: Close control channel if this is set
2153
2154 @return Result of the function call
2155*/
2156WDI_Status
2157WDI_Shutdown
2158(
2159 wpt_boolean closeTransport
2160)
2161{
2162 WDI_EventInfoType wdiEventData;
2163 wpt_status wptStatus;
2164 int i = 0;
2165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2166
2167 /*------------------------------------------------------------------------
2168 Sanity Check
2169 ------------------------------------------------------------------------*/
2170 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2171 {
2172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2173 "WDI API call before module is initialized - Fail request");
2174
2175 return WDI_STATUS_E_NOT_ALLOWED;
2176 }
2177
2178 /*------------------------------------------------------------------------
2179 Fill in Event data and post to the Main FSM
2180 ------------------------------------------------------------------------*/
2181 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2182 wdiEventData.pEventData = NULL;
2183 wdiEventData.uEventDataSize = 0;
2184
2185 /* Shutdown will not be queued, if the state is busy timer will be
2186 * stopped & this message will be processed.*/
2187 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2188 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2189 {
2190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002191 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002192 }
2193 /* Destroy the Set Power State event */
2194 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2195 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2196 {
2197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2198 "WDI Close failed to destroy an event");
2199
2200 WDI_ASSERT(0);
2201 }
2202 /*------------------------------------------------------------------------
2203 Closes the Data Path Utility Module
2204 ------------------------------------------------------------------------*/
2205 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2206 {
2207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2208 "WDI Init failed to close the DP Util Module");
2209
2210 WDI_ASSERT(0);
2211 }
2212 if ( closeTransport )
2213 {
2214 /* Close control transport, called from module unload */
2215 WCTS_CloseTransport(gWDICb.wctsHandle);
2216 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002217 else
2218 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002219 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002220 the pending messages in the transport queue */
2221 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2222 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002223 /*destroy the BSS sessions pending Queue */
2224 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2225 {
2226 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2227 }
2228
2229 /* destroy the WDI Pending Assoc Id Request Queue*/
2230 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2231 /* destroy the WDI Pending Request Queue*/
2232 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2233 /*destroy the response timer */
2234 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002235 /*destroy the SSR timer */
2236 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002237
2238 /*invalidate the main synchro mutex */
2239 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2240 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2241 {
2242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002243 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002244 WDI_ASSERT(0);
2245 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002246 /* Free the global variables */
2247 wpalMemoryFree(gpHostWlanFeatCaps);
2248 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002249 gpHostWlanFeatCaps = NULL;
2250 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002251 /*Clear control block. note that this will clear the "magic"
2252 which will inhibit all asynchronous callbacks*/
2253 WDI_CleanCB(&gWDICb);
2254 return wptStatus;
2255
2256}/*WDI_Shutdown*/
2257
2258
Jeff Johnsone7245742012-09-05 17:12:55 -07002259/*========================================================================
2260
Jeff Johnson295189b2012-06-20 16:38:30 -07002261 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002262
Jeff Johnson295189b2012-06-20 16:38:30 -07002263==========================================================================*/
2264
2265/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002266 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002267 the WLAN Device to get ready for a scan procedure. Upon
2268 the call of this API the WLAN DAL will pack and send a
2269 HAL Init Scan request message to the lower RIVA
2270 sub-system if DAL is in state STARTED.
2271
2272 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002273 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002274
2275 WDI_Start must have been called.
2276
2277 @param wdiInitScanParams: the init scan parameters as specified
2278 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002279
Jeff Johnson295189b2012-06-20 16:38:30 -07002280 wdiInitScanRspCb: callback for passing back the response
2281 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002282
Jeff Johnson295189b2012-06-20 16:38:30 -07002283 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002284 callback
2285
Jeff Johnson295189b2012-06-20 16:38:30 -07002286 @see WDI_Start
2287 @return Result of the function call
2288*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002289WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002290WDI_InitScanReq
2291(
2292 WDI_InitScanReqParamsType* pwdiInitScanParams,
2293 WDI_InitScanRspCb wdiInitScanRspCb,
2294 void* pUserData
2295)
2296{
2297 WDI_EventInfoType wdiEventData;
2298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2299
2300 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002301 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002302 ------------------------------------------------------------------------*/
2303 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2304 {
2305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2306 "WDI API call before module is initialized - Fail request");
2307
Jeff Johnsone7245742012-09-05 17:12:55 -07002308 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002309 }
2310
2311 /*------------------------------------------------------------------------
2312 Fill in Event data and post to the Main FSM
2313 ------------------------------------------------------------------------*/
2314 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002315 wdiEventData.pEventData = pwdiInitScanParams;
2316 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2317 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002318 wdiEventData.pUserData = pUserData;
2319
2320 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2321
2322}/*WDI_InitScanReq*/
2323
2324/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002325 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002326 wishes to change the Scan channel on the WLAN Device.
2327 Upon the call of this API the WLAN DAL will pack and
2328 send a HAL Start Scan request message to the lower RIVA
2329 sub-system if DAL is in state STARTED.
2330
2331 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002332 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002333
2334 WDI_InitScanReq must have been called.
2335
Jeff Johnsone7245742012-09-05 17:12:55 -07002336 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002337 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002338
Jeff Johnson295189b2012-06-20 16:38:30 -07002339 wdiStartScanRspCb: callback for passing back the
2340 response of the start scan operation received from the
2341 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002342
Jeff Johnson295189b2012-06-20 16:38:30 -07002343 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002344 callback
2345
Jeff Johnson295189b2012-06-20 16:38:30 -07002346 @see WDI_InitScanReq
2347 @return Result of the function call
2348*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002349WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002350WDI_StartScanReq
2351(
2352 WDI_StartScanReqParamsType* pwdiStartScanParams,
2353 WDI_StartScanRspCb wdiStartScanRspCb,
2354 void* pUserData
2355)
2356{
2357 WDI_EventInfoType wdiEventData;
2358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2359
2360 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002361 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002362 ------------------------------------------------------------------------*/
2363 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2364 {
2365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2366 "WDI API call before module is initialized - Fail request");
2367
Jeff Johnsone7245742012-09-05 17:12:55 -07002368 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002369 }
2370
2371 /*------------------------------------------------------------------------
2372 Fill in Event data and post to the Main FSM
2373 ------------------------------------------------------------------------*/
2374 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002375 wdiEventData.pEventData = pwdiStartScanParams;
2376 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2377 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002378 wdiEventData.pUserData = pUserData;
2379
2380 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2381
2382}/*WDI_StartScanReq*/
2383
2384
2385/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002386 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002387 wants to end scanning for a particular channel that it
2388 had set before by calling Scan Start on the WLAN Device.
2389 Upon the call of this API the WLAN DAL will pack and
2390 send a HAL End Scan request message to the lower RIVA
2391 sub-system if DAL is in state STARTED.
2392
2393 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002394 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002395
2396 WDI_StartScanReq must have been called.
2397
Jeff Johnsone7245742012-09-05 17:12:55 -07002398 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002399 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002400
Jeff Johnson295189b2012-06-20 16:38:30 -07002401 wdiEndScanRspCb: callback for passing back the response
2402 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002403
Jeff Johnson295189b2012-06-20 16:38:30 -07002404 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002405 callback
2406
Jeff Johnson295189b2012-06-20 16:38:30 -07002407 @see WDI_StartScanReq
2408 @return Result of the function call
2409*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002410WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002411WDI_EndScanReq
2412(
2413 WDI_EndScanReqParamsType* pwdiEndScanParams,
2414 WDI_EndScanRspCb wdiEndScanRspCb,
2415 void* pUserData
2416)
2417{
2418 WDI_EventInfoType wdiEventData;
2419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2420
2421 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002422 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002423 ------------------------------------------------------------------------*/
2424 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2425 {
2426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2427 "WDI API call before module is initialized - Fail request");
2428
Jeff Johnsone7245742012-09-05 17:12:55 -07002429 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 }
2431
2432 /*------------------------------------------------------------------------
2433 Fill in Event data and post to the Main FSM
2434 ------------------------------------------------------------------------*/
2435 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002436 wdiEventData.pEventData = pwdiEndScanParams;
2437 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2438 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002439 wdiEventData.pUserData = pUserData;
2440
2441 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2442
2443}/*WDI_EndScanReq*/
2444
2445
2446/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002447 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002448 completed the scan process on the WLAN Device. Upon the
2449 call of this API the WLAN DAL will pack and send a HAL
2450 Finish Scan Request request message to the lower RIVA
2451 sub-system if DAL is in state STARTED.
2452
2453 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002454 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002455
2456 WDI_InitScanReq must have been called.
2457
Jeff Johnsone7245742012-09-05 17:12:55 -07002458 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002459 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002460
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 wdiFinishScanRspCb: callback for passing back the
2462 response of the finish scan operation received from the
2463 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002464
Jeff Johnson295189b2012-06-20 16:38:30 -07002465 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002466 callback
2467
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 @see WDI_InitScanReq
2469 @return Result of the function call
2470*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002471WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002472WDI_FinishScanReq
2473(
2474 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2475 WDI_FinishScanRspCb wdiFinishScanRspCb,
2476 void* pUserData
2477)
2478{
2479 WDI_EventInfoType wdiEventData;
2480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2481
2482 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002483 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002484 ------------------------------------------------------------------------*/
2485 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2486 {
2487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2488 "WDI API call before module is initialized - Fail request");
2489
Jeff Johnsone7245742012-09-05 17:12:55 -07002490 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002491 }
2492
2493 /*------------------------------------------------------------------------
2494 Fill in Event data and post to the Main FSM
2495 ------------------------------------------------------------------------*/
2496 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 wdiEventData.pEventData = pwdiFinishScanParams;
2498 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2499 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002500 wdiEventData.pUserData = pUserData;
2501
2502 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2503
2504}/*WDI_FinishScanReq*/
2505
Jeff Johnsone7245742012-09-05 17:12:55 -07002506/*========================================================================
2507
Jeff Johnson295189b2012-06-20 16:38:30 -07002508 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002509
Jeff Johnson295189b2012-06-20 16:38:30 -07002510==========================================================================*/
2511
2512/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002513 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002514 to start an association procedure to a BSS. Upon the
2515 call of this API the WLAN DAL will pack and send a HAL
2516 Join request message to the lower RIVA sub-system if
2517 DAL is in state STARTED.
2518
2519 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002520 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002521
2522 WDI_Start must have been called.
2523
Jeff Johnsone7245742012-09-05 17:12:55 -07002524 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002525 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002526
Jeff Johnson295189b2012-06-20 16:38:30 -07002527 wdiJoinRspCb: callback for passing back the response of
2528 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002529
Jeff Johnson295189b2012-06-20 16:38:30 -07002530 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002531 callback
2532
Jeff Johnson295189b2012-06-20 16:38:30 -07002533 @see WDI_Start
2534 @return Result of the function call
2535*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002536WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002537WDI_JoinReq
2538(
2539 WDI_JoinReqParamsType* pwdiJoinParams,
2540 WDI_JoinRspCb wdiJoinRspCb,
2541 void* pUserData
2542)
2543{
2544 WDI_EventInfoType wdiEventData;
2545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2546
2547 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002548 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002549 ------------------------------------------------------------------------*/
2550 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2551 {
2552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2553 "WDI API call before module is initialized - Fail request");
2554
Jeff Johnsone7245742012-09-05 17:12:55 -07002555 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002556 }
2557
2558 /*------------------------------------------------------------------------
2559 Fill in Event data and post to the Main FSM
2560 ------------------------------------------------------------------------*/
2561 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002562 wdiEventData.pEventData = pwdiJoinParams;
2563 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2564 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002565 wdiEventData.pUserData = pUserData;
2566
2567 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2568
2569}/*WDI_JoinReq*/
2570
2571/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002572 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002573 wishes to configure the newly acquired or in process of
2574 being acquired BSS to the HW . Upon the call of this API
2575 the WLAN DAL will pack and send a HAL Config BSS request
2576 message to the lower RIVA sub-system if DAL is in state
2577 STARTED.
2578
2579 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002580 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002581
2582 WDI_JoinReq must have been called.
2583
Jeff Johnsone7245742012-09-05 17:12:55 -07002584 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002585 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002586
Jeff Johnson295189b2012-06-20 16:38:30 -07002587 wdiConfigBSSRspCb: callback for passing back the
2588 response of the config BSS operation received from the
2589 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002590
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002592 callback
2593
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 @see WDI_JoinReq
2595 @return Result of the function call
2596*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002597WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002598WDI_ConfigBSSReq
2599(
2600 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2601 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2602 void* pUserData
2603)
2604{
2605 WDI_EventInfoType wdiEventData;
2606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2607
2608 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002609 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002610 ------------------------------------------------------------------------*/
2611 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2612 {
2613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2614 "WDI API call before module is initialized - Fail request");
2615
Jeff Johnsone7245742012-09-05 17:12:55 -07002616 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002617 }
2618
2619 /*------------------------------------------------------------------------
2620 Fill in Event data and post to the Main FSM
2621 ------------------------------------------------------------------------*/
2622 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 wdiEventData.pEventData = pwdiConfigBSSParams;
2624 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2625 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002626 wdiEventData.pUserData = pUserData;
2627
2628 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2629
2630}/*WDI_ConfigBSSReq*/
2631
2632/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002633 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002634 disassociating from the BSS and wishes to notify HW.
2635 Upon the call of this API the WLAN DAL will pack and
2636 send a HAL Del BSS request message to the lower RIVA
2637 sub-system if DAL is in state STARTED.
2638
2639 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002640 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002641
2642 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2643
Jeff Johnsone7245742012-09-05 17:12:55 -07002644 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002646
Jeff Johnson295189b2012-06-20 16:38:30 -07002647 wdiDelBSSRspCb: callback for passing back the response
2648 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002649
Jeff Johnson295189b2012-06-20 16:38:30 -07002650 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002651 callback
2652
2653 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 @return Result of the function call
2655*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002656WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002657WDI_DelBSSReq
2658(
2659 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2660 WDI_DelBSSRspCb wdiDelBSSRspCb,
2661 void* pUserData
2662)
2663{
2664 WDI_EventInfoType wdiEventData;
2665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2666
2667 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002668 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002669 ------------------------------------------------------------------------*/
2670 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2671 {
2672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2673 "WDI API call before module is initialized - Fail request");
2674
Jeff Johnsone7245742012-09-05 17:12:55 -07002675 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002676 }
2677
2678 /*------------------------------------------------------------------------
2679 Fill in Event data and post to the Main FSM
2680 ------------------------------------------------------------------------*/
2681 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002682 wdiEventData.pEventData = pwdiDelBSSParams;
2683 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2684 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002685 wdiEventData.pUserData = pUserData;
2686
2687 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2688
2689}/*WDI_DelBSSReq*/
2690
2691/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002692 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002693 associated to a BSS and wishes to configure HW for
2694 associated state. Upon the call of this API the WLAN DAL
2695 will pack and send a HAL Post Assoc request message to
2696 the lower RIVA sub-system if DAL is in state STARTED.
2697
2698 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002699 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002700
2701 WDI_JoinReq must have been called.
2702
2703 @param wdiPostAssocReqParams: the assoc parameters as specified
2704 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002705
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 wdiPostAssocRspCb: callback for passing back the
2707 response of the post assoc operation received from the
2708 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002709
Jeff Johnson295189b2012-06-20 16:38:30 -07002710 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002711 callback
2712
Jeff Johnson295189b2012-06-20 16:38:30 -07002713 @see WDI_JoinReq
2714 @return Result of the function call
2715*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002716WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002717WDI_PostAssocReq
2718(
2719 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2720 WDI_PostAssocRspCb wdiPostAssocRspCb,
2721 void* pUserData
2722)
2723{
2724 WDI_EventInfoType wdiEventData;
2725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2726
2727 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002728 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002729 ------------------------------------------------------------------------*/
2730 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2731 {
2732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2733 "WDI API call before module is initialized - Fail request");
2734
Jeff Johnsone7245742012-09-05 17:12:55 -07002735 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002736 }
2737
2738 /*------------------------------------------------------------------------
2739 Fill in Event data and post to the Main FSM
2740 ------------------------------------------------------------------------*/
2741 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002742 wdiEventData.pEventData = pwdiPostAssocReqParams;
2743 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2744 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002745 wdiEventData.pUserData = pUserData;
2746
2747 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2748
2749}/*WDI_PostAssocReq*/
2750
2751/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002752 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002753 association with another STA has ended and the station
2754 must be deleted from HW. Upon the call of this API the
2755 WLAN DAL will pack and send a HAL Del STA request
2756 message to the lower RIVA sub-system if DAL is in state
2757 STARTED.
2758
2759 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002760 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002761
2762 WDI_PostAssocReq must have been called.
2763
Jeff Johnsone7245742012-09-05 17:12:55 -07002764 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002765 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002766
Jeff Johnson295189b2012-06-20 16:38:30 -07002767 wdiDelSTARspCb: callback for passing back the response
2768 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002769
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002771 callback
2772
Jeff Johnson295189b2012-06-20 16:38:30 -07002773 @see WDI_PostAssocReq
2774 @return Result of the function call
2775*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002776WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002777WDI_DelSTAReq
2778(
2779 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2780 WDI_DelSTARspCb wdiDelSTARspCb,
2781 void* pUserData
2782)
2783{
2784 WDI_EventInfoType wdiEventData;
2785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2786
2787 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002789 ------------------------------------------------------------------------*/
2790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2791 {
2792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2793 "WDI API call before module is initialized - Fail request");
2794
Jeff Johnsone7245742012-09-05 17:12:55 -07002795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002796 }
2797
2798 /*------------------------------------------------------------------------
2799 Fill in Event data and post to the Main FSM
2800 ------------------------------------------------------------------------*/
2801 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002802 wdiEventData.pEventData = pwdiDelSTAParams;
2803 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2804 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002805 wdiEventData.pUserData = pUserData;
2806
2807 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2808
2809}/*WDI_DelSTAReq*/
2810
Jeff Johnsone7245742012-09-05 17:12:55 -07002811/*========================================================================
2812
Jeff Johnson295189b2012-06-20 16:38:30 -07002813 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002814
Jeff Johnson295189b2012-06-20 16:38:30 -07002815==========================================================================*/
2816
2817/**
2818 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2819 install a BSS encryption key on the HW. Upon the call of this
2820 API the WLAN DAL will pack and send a Set BSS Key request
2821 message to the lower RIVA sub-system if DAL is in state
2822 STARTED.
2823
2824 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002825 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002826
2827 WDI_PostAssocReq must have been called.
2828
Jeff Johnsone7245742012-09-05 17:12:55 -07002829 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002830 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002831
Jeff Johnson295189b2012-06-20 16:38:30 -07002832 wdiSetBSSKeyRspCb: callback for passing back the
2833 response of the set BSS Key operation received from the
2834 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002835
Jeff Johnson295189b2012-06-20 16:38:30 -07002836 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002837 callback
2838
Jeff Johnson295189b2012-06-20 16:38:30 -07002839 @see WDI_PostAssocReq
2840 @return Result of the function call
2841*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002842WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002843WDI_SetBSSKeyReq
2844(
2845 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2846 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2847 void* pUserData
2848)
2849{
2850 WDI_EventInfoType wdiEventData;
2851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2852
2853 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002854 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002855 ------------------------------------------------------------------------*/
2856 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2857 {
2858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2859 "WDI API call before module is initialized - Fail request");
2860
Jeff Johnsone7245742012-09-05 17:12:55 -07002861 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002862 }
2863
2864 /*------------------------------------------------------------------------
2865 Fill in Event data and post to the Main FSM
2866 ------------------------------------------------------------------------*/
2867 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002868 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2869 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2870 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002871 wdiEventData.pUserData = pUserData;
2872
2873 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2874
2875}/*WDI_SetBSSKeyReq*/
2876
2877/**
2878 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2879 uninstall a BSS key from HW. Upon the call of this API the
2880 WLAN DAL will pack and send a HAL Remove BSS Key request
2881 message to the lower RIVA sub-system if DAL is in state
2882 STARTED.
2883
2884 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002885 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002886
2887 WDI_SetBSSKeyReq must have been called.
2888
Jeff Johnsone7245742012-09-05 17:12:55 -07002889 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002890 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002891
Jeff Johnson295189b2012-06-20 16:38:30 -07002892 wdiRemoveBSSKeyRspCb: callback for passing back the
2893 response of the remove BSS key operation received from
2894 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002895
Jeff Johnson295189b2012-06-20 16:38:30 -07002896 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002897 callback
2898
Jeff Johnson295189b2012-06-20 16:38:30 -07002899 @see WDI_SetBSSKeyReq
2900 @return Result of the function call
2901*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002902WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002903WDI_RemoveBSSKeyReq
2904(
2905 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2906 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2907 void* pUserData
2908)
2909{
2910 WDI_EventInfoType wdiEventData;
2911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2912
2913 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002914 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002915 ------------------------------------------------------------------------*/
2916 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2917 {
2918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2919 "WDI API call before module is initialized - Fail request");
2920
Jeff Johnsone7245742012-09-05 17:12:55 -07002921 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002922 }
2923
2924 /*------------------------------------------------------------------------
2925 Fill in Event data and post to the Main FSM
2926 ------------------------------------------------------------------------*/
2927 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002928 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2929 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2930 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002931 wdiEventData.pUserData = pUserData;
2932
2933 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2934
2935}/*WDI_RemoveBSSKeyReq*/
2936
2937
2938/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002939 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002940 ready to install a STA(ast) encryption key in HW. Upon
2941 the call of this API the WLAN DAL will pack and send a
2942 HAL Set STA Key request message to the lower RIVA
2943 sub-system if DAL is in state STARTED.
2944
2945 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002946 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002947
2948 WDI_PostAssocReq must have been called.
2949
Jeff Johnsone7245742012-09-05 17:12:55 -07002950 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002951 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002952
Jeff Johnson295189b2012-06-20 16:38:30 -07002953 wdiSetSTAKeyRspCb: callback for passing back the
2954 response of the set STA key operation received from the
2955 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002956
Jeff Johnson295189b2012-06-20 16:38:30 -07002957 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002958 callback
2959
Jeff Johnson295189b2012-06-20 16:38:30 -07002960 @see WDI_PostAssocReq
2961 @return Result of the function call
2962*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002963WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002964WDI_SetSTAKeyReq
2965(
2966 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2967 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2968 void* pUserData
2969)
2970{
2971 WDI_EventInfoType wdiEventData;
2972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2973
2974 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002975 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002976 ------------------------------------------------------------------------*/
2977 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2978 {
2979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2980 "WDI API call before module is initialized - Fail request");
2981
Jeff Johnsone7245742012-09-05 17:12:55 -07002982 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002983 }
2984
2985 /*------------------------------------------------------------------------
2986 Fill in Event data and post to the Main FSM
2987 ------------------------------------------------------------------------*/
2988 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002989 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2990 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2991 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002992 wdiEventData.pUserData = pUserData;
2993
2994 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2995
2996}/*WDI_SetSTAKeyReq*/
2997
2998
2999/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003000 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003001 wants to uninstall a previously set STA key in HW. Upon
3002 the call of this API the WLAN DAL will pack and send a
3003 HAL Remove STA Key request message to the lower RIVA
3004 sub-system if DAL is in state STARTED.
3005
3006 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003007 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003008
3009 WDI_SetSTAKeyReq must have been called.
3010
Jeff Johnsone7245742012-09-05 17:12:55 -07003011 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003012 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003013
Jeff Johnson295189b2012-06-20 16:38:30 -07003014 wdiRemoveSTAKeyRspCb: callback for passing back the
3015 response of the remove STA key operation received from
3016 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003017
Jeff Johnson295189b2012-06-20 16:38:30 -07003018 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003019 callback
3020
Jeff Johnson295189b2012-06-20 16:38:30 -07003021 @see WDI_SetSTAKeyReq
3022 @return Result of the function call
3023*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003024WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003025WDI_RemoveSTAKeyReq
3026(
3027 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3028 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3029 void* pUserData
3030)
3031{
3032 WDI_EventInfoType wdiEventData;
3033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3034
3035 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003036 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003037 ------------------------------------------------------------------------*/
3038 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3039 {
3040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3041 "WDI API call before module is initialized - Fail request");
3042
Jeff Johnsone7245742012-09-05 17:12:55 -07003043 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003044 }
3045
3046 /*------------------------------------------------------------------------
3047 Fill in Event data and post to the Main FSM
3048 ------------------------------------------------------------------------*/
3049 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003050 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3051 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3052 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003053 wdiEventData.pUserData = pUserData;
3054
3055 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3056
3057}/*WDI_RemoveSTAKeyReq*/
3058
3059
3060/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003061 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003062 wants to install a STA Bcast encryption key on the HW.
3063 Upon the call of this API the WLAN DAL will pack and
3064 send a HAL Start request message to the lower RIVA
3065 sub-system if DAL is in state STARTED.
3066
3067 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003068 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003069
3070 WDI_PostAssocReq must have been called.
3071
Jeff Johnsone7245742012-09-05 17:12:55 -07003072 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003073 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003074
Jeff Johnson295189b2012-06-20 16:38:30 -07003075 wdiSetSTABcastKeyRspCb: callback for passing back the
3076 response of the set BSS Key operation received from the
3077 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003078
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003080 callback
3081
Jeff Johnson295189b2012-06-20 16:38:30 -07003082 @see WDI_PostAssocReq
3083 @return Result of the function call
3084*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003085WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003086WDI_SetSTABcastKeyReq
3087(
3088 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3089 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3090 void* pUserData
3091)
3092
3093{
3094 WDI_EventInfoType wdiEventData;
3095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3096
3097 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003098 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003099 ------------------------------------------------------------------------*/
3100 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3101 {
3102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3103 "WDI API call before module is initialized - Fail request");
3104
Jeff Johnsone7245742012-09-05 17:12:55 -07003105 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003106 }
3107
3108 /*------------------------------------------------------------------------
3109 Fill in Event data and post to the Main FSM
3110 ------------------------------------------------------------------------*/
3111 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003112 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3113 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3114 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003115 wdiEventData.pUserData = pUserData;
3116
3117 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3118
3119}/*WDI_SetSTABcastKeyReq*/
3120
3121/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003122 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003123 MAC wants to uninstall a STA Bcast key from HW. Upon the
3124 call of this API the WLAN DAL will pack and send a HAL
3125 Remove STA Bcast Key request message to the lower RIVA
3126 sub-system if DAL is in state STARTED.
3127
3128 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003129 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003130
3131 WDI_SetSTABcastKeyReq must have been called.
3132
Jeff Johnsone7245742012-09-05 17:12:55 -07003133 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003134 parameters as specified by the Device
3135 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003136
Jeff Johnson295189b2012-06-20 16:38:30 -07003137 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3138 response of the remove STA Bcast key operation received
3139 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003140
Jeff Johnson295189b2012-06-20 16:38:30 -07003141 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003142 callback
3143
Jeff Johnson295189b2012-06-20 16:38:30 -07003144 @see WDI_SetSTABcastKeyReq
3145 @return Result of the function call
3146*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003147WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003148WDI_RemoveSTABcastKeyReq
3149(
3150 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3151 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3152 void* pUserData
3153)
3154{
3155 WDI_EventInfoType wdiEventData;
3156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3157
3158 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003159 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003160 ------------------------------------------------------------------------*/
3161 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3162 {
3163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3164 "WDI API call before module is initialized - Fail request");
3165
Jeff Johnsone7245742012-09-05 17:12:55 -07003166 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003167 }
3168
3169 /*------------------------------------------------------------------------
3170 Fill in Event data and post to the Main FSM
3171 ------------------------------------------------------------------------*/
3172 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003173 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3174 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3175 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003176 wdiEventData.pUserData = pUserData;
3177
3178 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3179
3180}/*WDI_RemoveSTABcastKeyReq*/
3181
3182/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003183 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003184 MAC wants to set Max Tx Power to HW. Upon the
3185 call of this API the WLAN DAL will pack and send a HAL
3186 Remove STA Bcast Key request message to the lower RIVA
3187 sub-system if DAL is in state STARTED.
3188
3189 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003190 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003191
3192 WDI_SetSTABcastKeyReq must have been called.
3193
Jeff Johnsone7245742012-09-05 17:12:55 -07003194 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003195 parameters as specified by the Device
3196 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003197
Jeff Johnson295189b2012-06-20 16:38:30 -07003198 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3199 response of the remove STA Bcast key operation received
3200 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003201
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003203 callback
3204
Jeff Johnson295189b2012-06-20 16:38:30 -07003205 @see WDI_SetMaxTxPowerReq
3206 @return Result of the function call
3207*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003208WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003209WDI_SetMaxTxPowerReq
3210(
3211 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3212 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3213 void* pUserData
3214)
3215{
3216 WDI_EventInfoType wdiEventData;
3217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3218
3219 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003220 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003221 ------------------------------------------------------------------------*/
3222 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3223 {
3224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3225 "WDI API call before module is initialized - Fail request");
3226
Jeff Johnsone7245742012-09-05 17:12:55 -07003227 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003228 }
3229
3230 /*------------------------------------------------------------------------
3231 Fill in Event data and post to the Main FSM
3232 ------------------------------------------------------------------------*/
3233 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003234 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3235 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3236 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003237 wdiEventData.pUserData = pUserData;
3238
3239 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3240}
3241
schang86c22c42013-03-13 18:41:24 -07003242/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003243 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3244 MAC wants to set Max Tx Power to HW for specific band.
3245
3246 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3247
3248 wdiReqStatusCb: callback for passing back the
3249 response msg from the device
3250
3251 pUserData: user data will be passed back with the
3252 callback
3253
3254 @see WDI_SetMaxTxPowerPerBandReq
3255 @return Result of the function call
3256*/
3257WDI_Status
3258WDI_SetMaxTxPowerPerBandReq
3259(
3260 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3261 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3262 void* pUserData
3263)
3264{
3265 WDI_EventInfoType wdiEventData;
3266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3267
3268 /*------------------------------------------------------------------------
3269 Sanity Check
3270 ------------------------------------------------------------------------*/
3271 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3272 {
3273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3274 "WDI API call before module is initialized - Fail request");
3275
3276 return WDI_STATUS_E_NOT_ALLOWED;
3277 }
3278
3279 /*------------------------------------------------------------------------
3280 Fill in Event data and post to the Main FSM
3281 ------------------------------------------------------------------------*/
3282 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3283 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3284 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3285 wdiEventData.pCBfnc = wdiReqStatusCb;
3286 wdiEventData.pUserData = pUserData;
3287
3288 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3289}
3290
3291/**
schang86c22c42013-03-13 18:41:24 -07003292 @brief WDI_SetTxPowerReq will be called when the upper
3293 MAC wants to set Tx Power to HW.
3294 In state BUSY this request will be queued. Request won't
3295 be allowed in any other state.
3296
3297
3298 @param pwdiSetTxPowerParams: set TS Power parameters
3299 BSSID and target TX Power with dbm included
3300
3301 wdiReqStatusCb: callback for passing back the response
3302
3303 pUserData: user data will be passed back with the
3304 callback
3305
3306 @return Result of the function call
3307*/
3308WDI_Status
3309WDI_SetTxPowerReq
3310(
3311 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3312 WDA_SetTxPowerRspCb wdiReqStatusCb,
3313 void* pUserData
3314)
3315{
3316 WDI_EventInfoType wdiEventData;
3317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3318
3319 /*------------------------------------------------------------------------
3320 Sanity Check
3321 ------------------------------------------------------------------------*/
3322 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3323 {
3324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3325 "WDI API call before module is initialized - Fail request");
3326
3327 return WDI_STATUS_E_NOT_ALLOWED;
3328 }
3329
3330 /*------------------------------------------------------------------------
3331 Fill in Event data and post to the Main FSM
3332 ------------------------------------------------------------------------*/
3333 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3334 wdiEventData.pEventData = pwdiSetTxPowerParams;
3335 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3336 wdiEventData.pCBfnc = wdiReqStatusCb;
3337 wdiEventData.pUserData = pUserData;
3338
3339 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3340}
3341
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003342#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003343WDI_Status
3344WDI_TSMStatsReq
3345(
3346 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3347 WDI_TsmRspCb wdiReqStatusCb,
3348 void* pUserData
3349)
3350{
3351 WDI_EventInfoType wdiEventData;
3352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003353 /*------------------------------------------------------------------------
3354 Sanity Check
3355 ------------------------------------------------------------------------*/
3356 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3357 {
3358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3359 "WDI API call before module is initialized - Fail request");
3360
3361 return WDI_STATUS_E_NOT_ALLOWED;
3362 }
3363
3364 /*------------------------------------------------------------------------
3365 Fill in Event data and post to the Main FSM
3366 ------------------------------------------------------------------------*/
3367 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3368 wdiEventData.pEventData = pwdiTsmReqParams;
3369 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3370 wdiEventData.pCBfnc = wdiReqStatusCb;
3371 wdiEventData.pUserData = pUserData;
3372
3373 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3374
3375}
3376#endif
3377
3378/*========================================================================
3379
3380 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003381
Jeff Johnson295189b2012-06-20 16:38:30 -07003382==========================================================================*/
3383
3384/**
3385 @brief WDI_AddTSReq will be called when the upper MAC to inform
3386 the device of a successful add TSpec negotiation. HW
3387 needs to receive the TSpec Info from the UMAC in order
3388 to configure properly the QoS data traffic. Upon the
3389 call of this API the WLAN DAL will pack and send a HAL
3390 Add TS request message to the lower RIVA sub-system if
3391 DAL is in state STARTED.
3392
3393 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003394 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003395
3396 WDI_PostAssocReq must have been called.
3397
3398 @param wdiAddTsReqParams: the add TS parameters as specified by
3399 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003400
Jeff Johnson295189b2012-06-20 16:38:30 -07003401 wdiAddTsRspCb: callback for passing back the response of
3402 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003403
Jeff Johnson295189b2012-06-20 16:38:30 -07003404 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003405 callback
3406
Jeff Johnson295189b2012-06-20 16:38:30 -07003407 @see WDI_PostAssocReq
3408 @return Result of the function call
3409*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003410WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003411WDI_AddTSReq
3412(
3413 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3414 WDI_AddTsRspCb wdiAddTsRspCb,
3415 void* pUserData
3416)
3417{
3418 WDI_EventInfoType wdiEventData;
3419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3420
3421 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003422 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003423 ------------------------------------------------------------------------*/
3424 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3425 {
3426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3427 "WDI API call before module is initialized - Fail request");
3428
Jeff Johnsone7245742012-09-05 17:12:55 -07003429 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003430 }
3431
3432 /*------------------------------------------------------------------------
3433 Fill in Event data and post to the Main FSM
3434 ------------------------------------------------------------------------*/
3435 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003436 wdiEventData.pEventData = pwdiAddTsReqParams;
3437 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3438 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003439 wdiEventData.pUserData = pUserData;
3440
3441 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3442
3443}/*WDI_AddTSReq*/
3444
3445
3446
3447/**
3448 @brief WDI_DelTSReq will be called when the upper MAC has ended
3449 admission on a specific AC. This is to inform HW that
3450 QoS traffic parameters must be rest. Upon the call of
3451 this API the WLAN DAL will pack and send a HAL Del TS
3452 request message to the lower RIVA sub-system if DAL is
3453 in state STARTED.
3454
3455 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003456 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003457
3458 WDI_AddTSReq must have been called.
3459
3460 @param wdiDelTsReqParams: the del TS parameters as specified by
3461 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003462
Jeff Johnson295189b2012-06-20 16:38:30 -07003463 wdiDelTsRspCb: callback for passing back the response of
3464 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003465
Jeff Johnson295189b2012-06-20 16:38:30 -07003466 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003467 callback
3468
Jeff Johnson295189b2012-06-20 16:38:30 -07003469 @see WDI_AddTSReq
3470 @return Result of the function call
3471*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003472WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003473WDI_DelTSReq
3474(
3475 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3476 WDI_DelTsRspCb wdiDelTsRspCb,
3477 void* pUserData
3478)
3479{
3480 WDI_EventInfoType wdiEventData;
3481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3482
3483 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003484 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003485 ------------------------------------------------------------------------*/
3486 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3487 {
3488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3489 "WDI API call before module is initialized - Fail request");
3490
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003492 }
3493
3494 /*------------------------------------------------------------------------
3495 Fill in Event data and post to the Main FSM
3496 ------------------------------------------------------------------------*/
3497 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003498 wdiEventData.pEventData = pwdiDelTsReqParams;
3499 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3500 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 wdiEventData.pUserData = pUserData;
3502
3503 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3504
3505}/*WDI_DelTSReq*/
3506
3507
3508
3509/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003510 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003511 wishes to update the EDCA parameters used by HW for QoS
3512 data traffic. Upon the call of this API the WLAN DAL
3513 will pack and send a HAL Update EDCA Params request
3514 message to the lower RIVA sub-system if DAL is in state
3515 STARTED.
3516
3517 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003518 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003519
3520 WDI_PostAssocReq must have been called.
3521
Jeff Johnsone7245742012-09-05 17:12:55 -07003522 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003523 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003524
Jeff Johnson295189b2012-06-20 16:38:30 -07003525 wdiUpdateEDCAParamsRspCb: callback for passing back the
3526 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003527
Jeff Johnson295189b2012-06-20 16:38:30 -07003528 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003529 callback
3530
Jeff Johnson295189b2012-06-20 16:38:30 -07003531 @see WDI_PostAssocReq
3532 @return Result of the function call
3533*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003534WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003535WDI_UpdateEDCAParams
3536(
3537 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3538 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3539 void* pUserData
3540)
3541{
3542 WDI_EventInfoType wdiEventData;
3543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3544
3545 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003546 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003547 ------------------------------------------------------------------------*/
3548 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3549 {
3550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3551 "WDI API call before module is initialized - Fail request");
3552
Jeff Johnsone7245742012-09-05 17:12:55 -07003553 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003554 }
3555
3556 /*------------------------------------------------------------------------
3557 Fill in Event data and post to the Main FSM
3558 ------------------------------------------------------------------------*/
3559 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003560 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3561 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3562 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003563 wdiEventData.pUserData = pUserData;
3564
3565 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3566
3567}/*WDI_UpdateEDCAParams*/
3568
3569
3570/**
3571 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3572 successfully a BA session and needs to notify the HW for
3573 the appropriate settings to take place. Upon the call of
3574 this API the WLAN DAL will pack and send a HAL Add BA
3575 request message to the lower RIVA sub-system if DAL is
3576 in state STARTED.
3577
3578 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003580
3581 WDI_PostAssocReq must have been called.
3582
3583 @param wdiAddBAReqParams: the add BA parameters as specified by
3584 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003585
Jeff Johnson295189b2012-06-20 16:38:30 -07003586 wdiAddBARspCb: callback for passing back the response of
3587 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003588
Jeff Johnson295189b2012-06-20 16:38:30 -07003589 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003590 callback
3591
Jeff Johnson295189b2012-06-20 16:38:30 -07003592 @see WDI_PostAssocReq
3593 @return Result of the function call
3594*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003595WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003596WDI_AddBASessionReq
3597(
3598 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3599 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3600 void* pUserData
3601)
3602{
3603 WDI_EventInfoType wdiEventData;
3604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3605
3606 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003607 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003608 ------------------------------------------------------------------------*/
3609 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3610 {
3611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3612 "WDI API call before module is initialized - Fail request");
3613
Jeff Johnsone7245742012-09-05 17:12:55 -07003614 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003615 }
3616
3617 /*------------------------------------------------------------------------
3618 Fill in Event data and post to the Main FSM
3619 ------------------------------------------------------------------------*/
3620 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003621 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3622 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3623 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003624 wdiEventData.pUserData = pUserData;
3625
3626 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3627
3628}/*WDI_AddBASessionReq*/
3629
3630/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003631 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003632 inform HW that it has deleted a previously created BA
3633 session. Upon the call of this API the WLAN DAL will
3634 pack and send a HAL Del BA request message to the lower
3635 RIVA sub-system if DAL is in state STARTED.
3636
3637 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003638 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003639
3640 WDI_AddBAReq must have been called.
3641
3642 @param wdiDelBAReqParams: the del BA parameters as specified by
3643 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003644
Jeff Johnson295189b2012-06-20 16:38:30 -07003645 wdiDelBARspCb: callback for passing back the response of
3646 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003647
Jeff Johnson295189b2012-06-20 16:38:30 -07003648 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003649 callback
3650
Jeff Johnson295189b2012-06-20 16:38:30 -07003651 @see WDI_AddBAReq
3652 @return Result of the function call
3653*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003654WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003655WDI_DelBAReq
3656(
3657 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3658 WDI_DelBARspCb wdiDelBARspCb,
3659 void* pUserData
3660)
3661{
3662 WDI_EventInfoType wdiEventData;
3663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3664
3665 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003666 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003667 ------------------------------------------------------------------------*/
3668 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3669 {
3670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3671 "WDI API call before module is initialized - Fail request");
3672
Jeff Johnsone7245742012-09-05 17:12:55 -07003673 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003674 }
3675
3676 /*------------------------------------------------------------------------
3677 Fill in Event data and post to the Main FSM
3678 ------------------------------------------------------------------------*/
3679 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003680 wdiEventData.pEventData = pwdiDelBAReqParams;
3681 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3682 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003683 wdiEventData.pUserData = pUserData;
3684
3685 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3686
3687}/*WDI_DelBAReq*/
3688
Jeff Johnsone7245742012-09-05 17:12:55 -07003689/*========================================================================
3690
Jeff Johnson295189b2012-06-20 16:38:30 -07003691 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003692
Jeff Johnson295189b2012-06-20 16:38:30 -07003693==========================================================================*/
3694
3695/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003696 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003697 wants to set the power save related configurations of
3698 the WLAN Device. Upon the call of this API the WLAN DAL
3699 will pack and send a HAL Update CFG request message to
3700 the lower RIVA sub-system if DAL is in state STARTED.
3701
3702 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003703 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003704
3705 WDI_Start must have been called.
3706
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003708 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003709
Jeff Johnson295189b2012-06-20 16:38:30 -07003710 wdiSetPwrSaveCfgCb: callback for passing back the
3711 response of the set power save cfg operation received
3712 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003713
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003715 callback
3716
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003718 @return Result of the function call
3719*/
3720WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003721WDI_SetPwrSaveCfgReq
3722(
3723 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3724 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3725 void* pUserData
3726)
3727{
3728 WDI_EventInfoType wdiEventData;
3729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3730
3731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003733 ------------------------------------------------------------------------*/
3734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3735 {
3736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3737 "WDI API call before module is initialized - Fail request");
3738
Jeff Johnsone7245742012-09-05 17:12:55 -07003739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003740 }
3741
3742 /*------------------------------------------------------------------------
3743 Fill in Event data and post to the Main FSM
3744 ------------------------------------------------------------------------*/
3745 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003746 wdiEventData.pEventData = pwdiPowerSaveCfg;
3747 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3748 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003749 wdiEventData.pUserData = pUserData;
3750
3751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3752
3753}/*WDI_SetPwrSaveCfgReq*/
3754
3755/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003756 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003757 request the device to get into IMPS power state. Upon
3758 the call of this API the WLAN DAL will send a HAL Enter
3759 IMPS request message to the lower RIVA sub-system if DAL
3760 is in state STARTED.
3761
3762 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003763 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003764
Jeff Johnsone7245742012-09-05 17:12:55 -07003765
3766 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003767 response of the Enter IMPS operation received from the
3768 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003769
Jeff Johnson295189b2012-06-20 16:38:30 -07003770 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003771 callback
3772
Jeff Johnson295189b2012-06-20 16:38:30 -07003773 @see WDI_Start
3774 @return Result of the function call
3775*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003776WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003777WDI_EnterImpsReq
3778(
Mihir Shetea4306052014-03-25 00:02:54 +05303779 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003780 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3781 void* pUserData
3782)
3783{
3784 WDI_EventInfoType wdiEventData;
3785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3786
3787 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003789 ------------------------------------------------------------------------*/
3790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3791 {
3792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3793 "WDI API call before module is initialized - Fail request");
3794
Jeff Johnsone7245742012-09-05 17:12:55 -07003795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003796 }
3797
3798 /*------------------------------------------------------------------------
3799 Fill in Event data and post to the Main FSM
3800 ------------------------------------------------------------------------*/
3801 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303802 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3803 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003804 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003805 wdiEventData.pUserData = pUserData;
3806
3807 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3808
3809}/*WDI_EnterImpsReq*/
3810
3811/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003812 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003813 request the device to get out of IMPS power state. Upon
3814 the call of this API the WLAN DAL will send a HAL Exit
3815 IMPS request message to the lower RIVA sub-system if DAL
3816 is in state STARTED.
3817
3818 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003820
Jeff Johnson295189b2012-06-20 16:38:30 -07003821
Jeff Johnsone7245742012-09-05 17:12:55 -07003822
3823 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003825
Jeff Johnson295189b2012-06-20 16:38:30 -07003826 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003827 callback
3828
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 @see WDI_Start
3830 @return Result of the function call
3831*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003832WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003833WDI_ExitImpsReq
3834(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303835 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003836 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3837 void* pUserData
3838)
3839{
3840 WDI_EventInfoType wdiEventData;
3841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3842
3843 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003844 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003845 ------------------------------------------------------------------------*/
3846 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3847 {
3848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3849 "WDI API call before module is initialized - Fail request");
3850
Jeff Johnsone7245742012-09-05 17:12:55 -07003851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 }
3853
3854 /*------------------------------------------------------------------------
3855 Fill in Event data and post to the Main FSM
3856 ------------------------------------------------------------------------*/
3857 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303858 wdiEventData.pEventData = pwdiExitImpsReqParams;
3859 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003860 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003861 wdiEventData.pUserData = pUserData;
3862
3863 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3864
3865}/*WDI_ExitImpsReq*/
3866
3867/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003868 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003869 request the device to get into BMPS power state. Upon
3870 the call of this API the WLAN DAL will pack and send a
3871 HAL Enter BMPS request message to the lower RIVA
3872 sub-system if DAL is in state STARTED.
3873
3874 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003876
3877 WDI_PostAssocReq must have been called.
3878
Jeff Johnsone7245742012-09-05 17:12:55 -07003879 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003880 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003881
Jeff Johnson295189b2012-06-20 16:38:30 -07003882 wdiEnterBmpsRspCb: callback for passing back the
3883 response of the Enter BMPS operation received from the
3884 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003885
Jeff Johnson295189b2012-06-20 16:38:30 -07003886 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003887 callback
3888
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 @see WDI_PostAssocReq
3890 @return Result of the function call
3891*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003892WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003893WDI_EnterBmpsReq
3894(
3895 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3896 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3897 void* pUserData
3898)
3899{
3900 WDI_EventInfoType wdiEventData;
3901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3902
3903 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003904 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003905 ------------------------------------------------------------------------*/
3906 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3907 {
3908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3909 "WDI API call before module is initialized - Fail request");
3910
Jeff Johnsone7245742012-09-05 17:12:55 -07003911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003912 }
3913
3914 /*------------------------------------------------------------------------
3915 Fill in Event data and post to the Main FSM
3916 ------------------------------------------------------------------------*/
3917 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003918 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3919 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3920 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003921 wdiEventData.pUserData = pUserData;
3922
3923 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3924
3925}/*WDI_EnterBmpsReq*/
3926
3927/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003928 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003929 request the device to get out of BMPS power state. Upon
3930 the call of this API the WLAN DAL will pack and send a
3931 HAL Exit BMPS request message to the lower RIVA
3932 sub-system if DAL is in state STARTED.
3933
3934 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003935 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003936
3937 WDI_PostAssocReq must have been called.
3938
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003940 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003941
Jeff Johnson295189b2012-06-20 16:38:30 -07003942 wdiExitBmpsRspCb: callback for passing back the response
3943 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003944
Jeff Johnson295189b2012-06-20 16:38:30 -07003945 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003946 callback
3947
Jeff Johnson295189b2012-06-20 16:38:30 -07003948 @see WDI_PostAssocReq
3949 @return Result of the function call
3950*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003951WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003952WDI_ExitBmpsReq
3953(
3954 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3955 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3956 void* pUserData
3957)
3958{
3959 WDI_EventInfoType wdiEventData;
3960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3961
3962 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003963 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003964 ------------------------------------------------------------------------*/
3965 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3966 {
3967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3968 "WDI API call before module is initialized - Fail request");
3969
Jeff Johnsone7245742012-09-05 17:12:55 -07003970 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003971 }
3972
3973 /*------------------------------------------------------------------------
3974 Fill in Event data and post to the Main FSM
3975 ------------------------------------------------------------------------*/
3976 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003977 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3978 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3979 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003980 wdiEventData.pUserData = pUserData;
3981
3982 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3983
3984}/*WDI_ExitBmpsReq*/
3985
3986/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003987 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003988 request the device to get into UAPSD power state. Upon
3989 the call of this API the WLAN DAL will pack and send a
3990 HAL Enter UAPSD request message to the lower RIVA
3991 sub-system if DAL is in state STARTED.
3992
3993 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003994 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003995
3996 WDI_PostAssocReq must have been called.
3997 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003998
3999 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004000 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004001
Jeff Johnson295189b2012-06-20 16:38:30 -07004002 wdiEnterUapsdRspCb: callback for passing back the
4003 response of the Enter UAPSD operation received from the
4004 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004005
Jeff Johnson295189b2012-06-20 16:38:30 -07004006 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004007 callback
4008
Jeff Johnson295189b2012-06-20 16:38:30 -07004009 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4010 @return Result of the function call
4011*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004012WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004013WDI_EnterUapsdReq
4014(
4015 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4016 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4017 void* pUserData
4018)
4019{
4020 WDI_EventInfoType wdiEventData;
4021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4022
4023 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004024 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004025 ------------------------------------------------------------------------*/
4026 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4027 {
4028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4029 "WDI API call before module is initialized - Fail request");
4030
Jeff Johnsone7245742012-09-05 17:12:55 -07004031 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004032 }
4033
4034 /*------------------------------------------------------------------------
4035 Fill in Event data and post to the Main FSM
4036 ------------------------------------------------------------------------*/
4037 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004038 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4039 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4040 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004041 wdiEventData.pUserData = pUserData;
4042
4043 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4044
4045}/*WDI_EnterUapsdReq*/
4046
4047/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004048 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004049 request the device to get out of UAPSD power state. Upon
4050 the call of this API the WLAN DAL will send a HAL Exit
4051 UAPSD request message to the lower RIVA sub-system if
4052 DAL is in state STARTED.
4053
4054 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004055 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004056
4057 WDI_PostAssocReq must have been called.
4058
Jeff Johnsone7245742012-09-05 17:12:55 -07004059 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004060 response of the Exit UAPSD operation received from the
4061 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004062
Jeff Johnson295189b2012-06-20 16:38:30 -07004063 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004064 callback
4065
Jeff Johnson295189b2012-06-20 16:38:30 -07004066 @see WDI_PostAssocReq
4067 @return Result of the function call
4068*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004069WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004070WDI_ExitUapsdReq
4071(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004072 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004073 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4074 void* pUserData
4075)
4076{
4077 WDI_EventInfoType wdiEventData;
4078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4079
4080 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004081 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004082 ------------------------------------------------------------------------*/
4083 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4084 {
4085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4086 "WDI API call before module is initialized - Fail request");
4087
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 }
4090
4091 /*------------------------------------------------------------------------
4092 Fill in Event data and post to the Main FSM
4093 ------------------------------------------------------------------------*/
4094 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004095 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4096 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004097 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004098 wdiEventData.pUserData = pUserData;
4099
4100 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4101
4102}/*WDI_ExitUapsdReq*/
4103
4104/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004105 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004106 MAC wants to set the UAPSD related configurations
4107 of an associated STA (while acting as an AP) to the WLAN
4108 Device. Upon the call of this API the WLAN DAL will pack
4109 and send a HAL Update UAPSD params request message to
4110 the lower RIVA sub-system if DAL is in state STARTED.
4111
4112 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004113 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004114
4115 WDI_ConfigBSSReq must have been called.
4116
Jeff Johnsone7245742012-09-05 17:12:55 -07004117 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004118 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004119
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 wdiUpdateUapsdParamsCb: callback for passing back the
4121 response of the update UAPSD params operation received
4122 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004123
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004125 callback
4126
Jeff Johnson295189b2012-06-20 16:38:30 -07004127 @see WDI_ConfigBSSReq
4128 @return Result of the function call
4129*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004130WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004131WDI_UpdateUapsdParamsReq
4132(
4133 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4134 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4135 void* pUserData
4136)
4137{
4138 WDI_EventInfoType wdiEventData;
4139 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4140
4141 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004142 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004143 ------------------------------------------------------------------------*/
4144 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4145 {
4146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4147 "WDI API call before module is initialized - Fail request");
4148
Jeff Johnsone7245742012-09-05 17:12:55 -07004149 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004150 }
4151
4152 /*------------------------------------------------------------------------
4153 Fill in Event data and post to the Main FSM
4154 ------------------------------------------------------------------------*/
4155 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004156 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004157 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004158 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004159 wdiEventData.pUserData = pUserData;
4160
4161 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4162
4163}/*WDI_UpdateUapsdParamsReq*/
4164
4165/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004166 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004167 MAC wants to set the UAPSD related configurations before
4168 requesting for enter UAPSD power state to the WLAN
4169 Device. Upon the call of this API the WLAN DAL will pack
4170 and send a HAL Set UAPSD params request message to
4171 the lower RIVA sub-system if DAL is in state STARTED.
4172
4173 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004174 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004175
4176 WDI_PostAssocReq must have been called.
4177
4178 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4179 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004180
Jeff Johnson295189b2012-06-20 16:38:30 -07004181 wdiSetUapsdAcParamsCb: callback for passing back the
4182 response of the set UAPSD params operation received from
4183 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004184
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004186 callback
4187
Jeff Johnson295189b2012-06-20 16:38:30 -07004188 @see WDI_PostAssocReq
4189 @return Result of the function call
4190*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004191WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004192WDI_SetUapsdAcParamsReq
4193(
4194 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4195 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4196 void* pUserData
4197)
4198{
4199 WDI_EventInfoType wdiEventData;
4200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4201
4202 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004203 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004204 ------------------------------------------------------------------------*/
4205 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4206 {
4207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4208 "WDI API call before module is initialized - Fail request");
4209
Jeff Johnsone7245742012-09-05 17:12:55 -07004210 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004211 }
4212
4213 /*------------------------------------------------------------------------
4214 Fill in Event data and post to the Main FSM
4215 ------------------------------------------------------------------------*/
4216 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004217 wdiEventData.pEventData = pwdiUapsdInfo;
4218 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4219 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004220 wdiEventData.pUserData = pUserData;
4221
4222 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4223
4224}/*WDI_SetUapsdAcParamsReq*/
4225
4226/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304227 @brief WDI_FWLoggingDXEdoneInd
4228
4229 FW Logging DXE done Indication from the upper layer will be sent
4230 down to HAL
4231
4232 @param WDI_FWLoggingDXEdoneIndInfoType
4233
4234 @see
4235
4236 @return Status of the request
4237*/
4238WDI_Status
4239WDI_FWLoggingDXEdoneInd
4240(
4241 WDI_FWLoggingDXEdoneIndInfoType* pwdiFWLoggingDXEdoneInd
4242)
4243{
4244
4245 WDI_EventInfoType wdiEventData;
4246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4247
4248 /*------------------------------------------------------------------------
4249 Sanity Check
4250 ------------------------------------------------------------------------*/
4251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4252 {
4253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4254 "WDI API call before module is initialized - Fail request");
4255
4256 return WDI_STATUS_E_NOT_ALLOWED;
4257 }
4258
4259 /*------------------------------------------------------------------------
4260 Fill in Event data and post to the Main FSM
4261 ------------------------------------------------------------------------*/
4262 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
4263 wdiEventData.pEventData = pwdiFWLoggingDXEdoneInd;
4264 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingDXEdoneInd);
4265 wdiEventData.pCBfnc = NULL;
4266 wdiEventData.pUserData = NULL;
4267
4268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4269
4270}/*WDI_FWLoggingDXEdoneInd*/
4271
4272/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304273 @brief WDI_GetFrameLogReq will be called when the upper
4274 MAC wants to initialize frame logging. Upon the call of
4275 this API the WLAN DAL will pack and send a HAL
4276 Frame logging init request message to
4277 the lower RIVA sub-system.
4278
4279 In state BUSY this request will be queued. Request won't
4280 be allowed in any other state.
4281
4282
4283 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4284 as specified by the Device Interface
4285
4286 wdiGetFrameLogRspCb: callback for passing back the
4287 response of the frame logging init operation received
4288 from the device
4289
4290 pUserData: user data will be passed back with the
4291 callback
4292
4293 @return Result of the function call
4294*/
4295WDI_Status
4296WDI_GetFrameLogReq
4297(
4298 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4299 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4300 void* pUserData
4301)
4302{
4303 WDI_EventInfoType wdiEventData;
4304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4305
4306 /*------------------------------------------------------------------------
4307 Sanity Check
4308 ------------------------------------------------------------------------*/
4309 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4310 {
4311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4312 "WDI API call before module is initialized - Fail request");
4313
4314 return WDI_STATUS_E_NOT_ALLOWED;
4315 }
4316
4317 /*------------------------------------------------------------------------
4318 Fill in Event data and post to the Main FSM
4319 ------------------------------------------------------------------------*/
4320 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4321 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4322 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4323 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4324 wdiEventData.pUserData = pUserData;
4325
4326 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4327}
4328/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304329 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304330 MAC wants to initialize frame logging. Upon the call of
4331 this API the WLAN DAL will pack and send a HAL
4332 Frame logging init request message to
4333 the lower RIVA sub-system.
4334
4335 In state BUSY this request will be queued. Request won't
4336 be allowed in any other state.
4337
4338
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304339 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304340 as specified by the Device Interface
4341
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304342 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304343 response of the frame logging init operation received
4344 from the device
4345
4346 pUserData: user data will be passed back with the
4347 callback
4348
4349 @return Result of the function call
4350*/
4351WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304352WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304353(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304354 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4355 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304356 void* pUserData
4357)
4358{
4359 WDI_EventInfoType wdiEventData;
4360
4361 /*------------------------------------------------------------------------
4362 Sanity Check
4363 ------------------------------------------------------------------------*/
4364 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4365 {
4366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4367 "WDI API call before module is initialized - Fail request");
4368
4369 return WDI_STATUS_E_NOT_ALLOWED;
4370 }
4371
4372 /*------------------------------------------------------------------------
4373 Fill in Event data and post to the Main FSM
4374 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304375 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4376 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4377 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4378 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304379 wdiEventData.pUserData = pUserData;
4380
4381 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4382}
4383
4384/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004385 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004386 MAC wants to set/reset the RXP filters for received pkts
4387 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4388 and send a HAL configure RXP filter request message to
4389 the lower RIVA sub-system.
4390
4391 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004392 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004393
Jeff Johnsone7245742012-09-05 17:12:55 -07004394
4395 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004396 filter as specified by the Device
4397 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004398
Jeff Johnson295189b2012-06-20 16:38:30 -07004399 wdiConfigureRxpFilterCb: callback for passing back the
4400 response of the configure RXP filter operation received
4401 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004402
Jeff Johnson295189b2012-06-20 16:38:30 -07004403 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004404 callback
4405
Jeff Johnson295189b2012-06-20 16:38:30 -07004406 @return Result of the function call
4407*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004408WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004409WDI_ConfigureRxpFilterReq
4410(
4411 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4412 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4413 void* pUserData
4414)
4415{
4416 WDI_EventInfoType wdiEventData;
4417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4418
4419 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004420 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004421 ------------------------------------------------------------------------*/
4422 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4423 {
4424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4425 "WDI API call before module is initialized - Fail request");
4426
Jeff Johnsone7245742012-09-05 17:12:55 -07004427 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004428 }
4429
4430 /*------------------------------------------------------------------------
4431 Fill in Event data and post to the Main FSM
4432 ------------------------------------------------------------------------*/
4433 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004434 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4435 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4436 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004437 wdiEventData.pUserData = pUserData;
4438
4439 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4440}/*WDI_ConfigureRxpFilterReq*/
4441
4442/**
4443 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4444 wants to set the beacon filters while in power save.
4445 Upon the call of this API the WLAN DAL will pack and
4446 send a Beacon filter request message to the
4447 lower RIVA sub-system.
4448
4449 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004450 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004451
Jeff Johnsone7245742012-09-05 17:12:55 -07004452
4453 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004454 filter as specified by the Device
4455 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004456
Jeff Johnson295189b2012-06-20 16:38:30 -07004457 wdiBeaconFilterCb: callback for passing back the
4458 response of the set beacon filter operation received
4459 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004460
Jeff Johnson295189b2012-06-20 16:38:30 -07004461 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004462 callback
4463
Jeff Johnson295189b2012-06-20 16:38:30 -07004464 @return Result of the function call
4465*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004466WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004467WDI_SetBeaconFilterReq
4468(
4469 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4470 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4471 void* pUserData
4472)
4473{
4474 WDI_EventInfoType wdiEventData;
4475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4476
4477 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004478 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004479 ------------------------------------------------------------------------*/
4480 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4481 {
4482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4483 "WDI API call before module is initialized - Fail request");
4484
Jeff Johnsone7245742012-09-05 17:12:55 -07004485 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004486 }
4487
4488 /*------------------------------------------------------------------------
4489 Fill in Event data and post to the Main FSM
4490 ------------------------------------------------------------------------*/
4491 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004492 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004493 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004494 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004495 wdiEventData.pUserData = pUserData;
4496
4497 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4498}/*WDI_SetBeaconFilterReq*/
4499
4500/**
4501 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4502 wants to remove the beacon filter for particular IE
4503 while in power save. Upon the call of this API the WLAN
4504 DAL will pack and send a remove Beacon filter request
4505 message to the lower RIVA sub-system.
4506
4507 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004508 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004509
Jeff Johnsone7245742012-09-05 17:12:55 -07004510
4511 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004512 filter as specified by the Device
4513 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004514
Jeff Johnson295189b2012-06-20 16:38:30 -07004515 wdiBeaconFilterCb: callback for passing back the
4516 response of the remove beacon filter operation received
4517 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004518
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004520 callback
4521
Jeff Johnson295189b2012-06-20 16:38:30 -07004522 @return Result of the function call
4523*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004524WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004525WDI_RemBeaconFilterReq
4526(
4527 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4528 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4529 void* pUserData
4530)
4531{
4532 WDI_EventInfoType wdiEventData;
4533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4534
4535 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004536 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004537 ------------------------------------------------------------------------*/
4538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4539 {
4540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4541 "WDI API call before module is initialized - Fail request");
4542
Jeff Johnsone7245742012-09-05 17:12:55 -07004543 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004544 }
4545
4546 /*------------------------------------------------------------------------
4547 Fill in Event data and post to the Main FSM
4548 ------------------------------------------------------------------------*/
4549 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004550 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004551 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004552 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004553 wdiEventData.pUserData = pUserData;
4554
4555 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4556}/*WDI_RemBeaconFilterReq*/
4557
4558/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004559 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004560 MAC wants to set the RSSI thresholds related
4561 configurations while in power save. Upon the call of
4562 this API the WLAN DAL will pack and send a HAL Set RSSI
4563 thresholds request message to the lower RIVA
4564 sub-system if DAL is in state STARTED.
4565
4566 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004567 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004568
4569 WDI_PostAssocReq must have been called.
4570
4571 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4572 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004573
Jeff Johnson295189b2012-06-20 16:38:30 -07004574 wdiSetUapsdAcParamsCb: callback for passing back the
4575 response of the set UAPSD params operation received from
4576 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004577
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004579 callback
4580
Jeff Johnson295189b2012-06-20 16:38:30 -07004581 @see WDI_PostAssocReq
4582 @return Result of the function call
4583*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004584WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004585WDI_SetRSSIThresholdsReq
4586(
4587 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4588 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4589 void* pUserData
4590)
4591{
4592 WDI_EventInfoType wdiEventData;
4593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4594
4595 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004596 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004597 ------------------------------------------------------------------------*/
4598 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4599 {
4600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4601 "WDI API call before module is initialized - Fail request");
4602
Jeff Johnsone7245742012-09-05 17:12:55 -07004603 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004604 }
4605
4606 /*------------------------------------------------------------------------
4607 Fill in Event data and post to the Main FSM
4608 ------------------------------------------------------------------------*/
4609 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004610 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004611 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004612 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004613 wdiEventData.pUserData = pUserData;
4614
4615 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4616}/* WDI_SetRSSIThresholdsReq*/
4617
4618/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004619 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004620 wants to set the filter to minimize unnecessary host
4621 wakeup due to broadcast traffic while in power save.
4622 Upon the call of this API the WLAN DAL will pack and
4623 send a HAL host offload request message to the
4624 lower RIVA sub-system if DAL is in state STARTED.
4625
4626 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004627 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004628
4629 WDI_PostAssocReq must have been called.
4630
Jeff Johnsone7245742012-09-05 17:12:55 -07004631 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004632 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004633
Jeff Johnson295189b2012-06-20 16:38:30 -07004634 wdiHostOffloadCb: callback for passing back the response
4635 of the host offload operation received from the
4636 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004637
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004639 callback
4640
Jeff Johnson295189b2012-06-20 16:38:30 -07004641 @see WDI_PostAssocReq
4642 @return Result of the function call
4643*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004644WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004645WDI_HostOffloadReq
4646(
4647 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4648 WDI_HostOffloadCb wdiHostOffloadCb,
4649 void* pUserData
4650)
4651{
4652 WDI_EventInfoType wdiEventData;
4653 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4654
4655 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004656 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004657 ------------------------------------------------------------------------*/
4658 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4659 {
4660 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4661 "WDI API call before module is initialized - Fail request");
4662
Jeff Johnsone7245742012-09-05 17:12:55 -07004663 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004664 }
4665
4666 /*------------------------------------------------------------------------
4667 Fill in Event data and post to the Main FSM
4668 ------------------------------------------------------------------------*/
4669 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004670 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004671 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004672 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004673 wdiEventData.pUserData = pUserData;
4674
4675 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4676}/*WDI_HostOffloadReq*/
4677
4678/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004679 @brief WDI_KeepAliveReq will be called when the upper MAC
4680 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004681 and minimize unnecessary host wakeups due to while in power save.
4682 Upon the call of this API the WLAN DAL will pack and
4683 send a HAL Keep Alive request message to the
4684 lower RIVA sub-system if DAL is in state STARTED.
4685
4686 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004687 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004688
4689 WDI_PostAssocReq must have been called.
4690
Jeff Johnsone7245742012-09-05 17:12:55 -07004691 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004692 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004693
Jeff Johnson295189b2012-06-20 16:38:30 -07004694 wdiKeepAliveCb: callback for passing back the response
4695 of the Keep Alive operation received from the
4696 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004697
Jeff Johnson295189b2012-06-20 16:38:30 -07004698 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004699 callback
4700
Jeff Johnson295189b2012-06-20 16:38:30 -07004701 @see WDI_PostAssocReq
4702 @return Result of the function call
4703*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004704WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004705WDI_KeepAliveReq
4706(
4707 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4708 WDI_KeepAliveCb wdiKeepAliveCb,
4709 void* pUserData
4710)
4711{
4712 WDI_EventInfoType wdiEventData;
4713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4714
4715 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004716 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004717 ------------------------------------------------------------------------*/
4718 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4719 {
4720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4721 "WDI_KeepAliveReq: WDI API call before module "
4722 "is initialized - Fail request");
4723
Jeff Johnsone7245742012-09-05 17:12:55 -07004724 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004725 }
4726
4727 /*------------------------------------------------------------------------
4728 Fill in Event data and post to the Main FSM
4729 ------------------------------------------------------------------------*/
4730 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004731 wdiEventData.pEventData = pwdiKeepAliveParams;
4732 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4733 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004734 wdiEventData.pUserData = pUserData;
4735
4736 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4737}/*WDI_KeepAliveReq*/
4738
4739/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004740 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004741 wants to set the Wowl Bcast ptrn to minimize unnecessary
4742 host wakeup due to broadcast traffic while in power
4743 save. Upon the call of this API the WLAN DAL will pack
4744 and send a HAL Wowl Bcast ptrn request message to the
4745 lower RIVA sub-system if DAL is in state STARTED.
4746
4747 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004748 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004749
4750 WDI_PostAssocReq must have been called.
4751
Jeff Johnsone7245742012-09-05 17:12:55 -07004752 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004753 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004754
Jeff Johnson295189b2012-06-20 16:38:30 -07004755 wdiWowlAddBcPtrnCb: callback for passing back the
4756 response of the add Wowl bcast ptrn operation received
4757 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004758
Jeff Johnson295189b2012-06-20 16:38:30 -07004759 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004760 callback
4761
Jeff Johnson295189b2012-06-20 16:38:30 -07004762 @see WDI_PostAssocReq
4763 @return Result of the function call
4764*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004765WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004766WDI_WowlAddBcPtrnReq
4767(
4768 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4769 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4770 void* pUserData
4771)
4772{
4773 WDI_EventInfoType wdiEventData;
4774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4775
4776 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004777 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004778 ------------------------------------------------------------------------*/
4779 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4780 {
4781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4782 "WDI API call before module is initialized - Fail request");
4783
Jeff Johnsone7245742012-09-05 17:12:55 -07004784 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004785 }
4786
4787 /*------------------------------------------------------------------------
4788 Fill in Event data and post to the Main FSM
4789 ------------------------------------------------------------------------*/
4790 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004791 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004792 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004793 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004794 wdiEventData.pUserData = pUserData;
4795
4796 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4797}/*WDI_WowlAddBcPtrnReq*/
4798
4799/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004800 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004801 wants to clear the Wowl Bcast ptrn. Upon the call of
4802 this API the WLAN DAL will pack and send a HAL delete
4803 Wowl Bcast ptrn request message to the lower RIVA
4804 sub-system if DAL is in state STARTED.
4805
4806 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004807 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004808
4809 WDI_WowlAddBcPtrnReq must have been called.
4810
Jeff Johnsone7245742012-09-05 17:12:55 -07004811 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004812 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004813
Jeff Johnson295189b2012-06-20 16:38:30 -07004814 wdiWowlDelBcPtrnCb: callback for passing back the
4815 response of the del Wowl bcast ptrn operation received
4816 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004817
Jeff Johnson295189b2012-06-20 16:38:30 -07004818 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004819 callback
4820
Jeff Johnson295189b2012-06-20 16:38:30 -07004821 @see WDI_WowlAddBcPtrnReq
4822 @return Result of the function call
4823*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004824WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004825WDI_WowlDelBcPtrnReq
4826(
4827 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4828 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4829 void* pUserData
4830)
4831{
4832 WDI_EventInfoType wdiEventData;
4833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4834
4835 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004836 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004837 ------------------------------------------------------------------------*/
4838 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4839 {
4840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4841 "WDI API call before module is initialized - Fail request");
4842
Jeff Johnsone7245742012-09-05 17:12:55 -07004843 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004844 }
4845
4846 /*------------------------------------------------------------------------
4847 Fill in Event data and post to the Main FSM
4848 ------------------------------------------------------------------------*/
4849 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004850 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004851 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004852 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004853 wdiEventData.pUserData = pUserData;
4854
4855 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4856}/*WDI_WowlDelBcPtrnReq*/
4857
4858/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004859 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004860 wants to enter the Wowl state to minimize unnecessary
4861 host wakeup while in power save. Upon the call of this
4862 API the WLAN DAL will pack and send a HAL Wowl enter
4863 request message to the lower RIVA sub-system if DAL is
4864 in state STARTED.
4865
4866 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004867 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004868
4869 WDI_PostAssocReq must have been called.
4870
Jeff Johnsone7245742012-09-05 17:12:55 -07004871 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004872 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004873
Jeff Johnson295189b2012-06-20 16:38:30 -07004874 wdiWowlEnterReqCb: callback for passing back the
4875 response of the enter Wowl operation received from the
4876 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004877
Jeff Johnson295189b2012-06-20 16:38:30 -07004878 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004879 callback
4880
Jeff Johnson295189b2012-06-20 16:38:30 -07004881 @see WDI_PostAssocReq
4882 @return Result of the function call
4883*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004884WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004885WDI_WowlEnterReq
4886(
4887 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4888 WDI_WowlEnterReqCb wdiWowlEnterCb,
4889 void* pUserData
4890)
4891{
4892 WDI_EventInfoType wdiEventData;
4893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4894
4895 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004896 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004897 ------------------------------------------------------------------------*/
4898 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4899 {
4900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4901 "WDI API call before module is initialized - Fail request");
4902
Jeff Johnsone7245742012-09-05 17:12:55 -07004903 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004904 }
4905
4906 /*------------------------------------------------------------------------
4907 Fill in Event data and post to the Main FSM
4908 ------------------------------------------------------------------------*/
4909 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004910 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004911 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004912 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004913 wdiEventData.pUserData = pUserData;
4914
4915 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4916}/*WDI_WowlEnterReq*/
4917
4918/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004919 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004920 wants to exit the Wowl state. Upon the call of this API
4921 the WLAN DAL will pack and send a HAL Wowl exit request
4922 message to the lower RIVA sub-system if DAL is in state
4923 STARTED.
4924
4925 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004926 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004927
4928 WDI_WowlEnterReq must have been called.
4929
Jeff Johnsone7245742012-09-05 17:12:55 -07004930 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004931 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004932
Jeff Johnson295189b2012-06-20 16:38:30 -07004933 wdiWowlExitReqCb: callback for passing back the response
4934 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004935
Jeff Johnson295189b2012-06-20 16:38:30 -07004936 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004937 callback
4938
Jeff Johnson295189b2012-06-20 16:38:30 -07004939 @see WDI_WowlEnterReq
4940 @return Result of the function call
4941*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004942WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004943WDI_WowlExitReq
4944(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004945 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004946 WDI_WowlExitReqCb wdiWowlExitCb,
4947 void* pUserData
4948)
4949{
4950 WDI_EventInfoType wdiEventData;
4951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4952
4953 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004954 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004955 ------------------------------------------------------------------------*/
4956 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4957 {
4958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4959 "WDI API call before module is initialized - Fail request");
4960
Jeff Johnsone7245742012-09-05 17:12:55 -07004961 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004962 }
4963
4964 /*------------------------------------------------------------------------
4965 Fill in Event data and post to the Main FSM
4966 ------------------------------------------------------------------------*/
4967 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004968 wdiEventData.pEventData = pwdiWowlExitParams;
4969 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004970 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004971 wdiEventData.pUserData = pUserData;
4972
4973 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4974}/*WDI_WowlExitReq*/
4975
4976/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004977 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004978 the upper MAC wants to dynamically adjusts the listen
4979 interval based on the WLAN/MSM activity. Upon the call
4980 of this API the WLAN DAL will pack and send a HAL
4981 configure Apps Cpu Wakeup State request message to the
4982 lower RIVA sub-system.
4983
4984 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004985 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004986
Jeff Johnsone7245742012-09-05 17:12:55 -07004987
4988 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004989 Apps Cpu Wakeup State as specified by the
4990 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004991
Jeff Johnson295189b2012-06-20 16:38:30 -07004992 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4993 back the response of the configure Apps Cpu Wakeup State
4994 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004995
Jeff Johnson295189b2012-06-20 16:38:30 -07004996 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004997 callback
4998
Jeff Johnson295189b2012-06-20 16:38:30 -07004999 @return Result of the function call
5000*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005001WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005002WDI_ConfigureAppsCpuWakeupStateReq
5003(
5004 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5005 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5006 void* pUserData
5007)
5008{
5009 WDI_EventInfoType wdiEventData;
5010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5011
5012 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005013 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005014 ------------------------------------------------------------------------*/
5015 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5016 {
5017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5018 "WDI API call before module is initialized - Fail request");
5019
Jeff Johnsone7245742012-09-05 17:12:55 -07005020 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005021 }
5022
5023 /*------------------------------------------------------------------------
5024 Fill in Event data and post to the Main FSM
5025 ------------------------------------------------------------------------*/
5026 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005027 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5028 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5029 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005030 wdiEventData.pUserData = pUserData;
5031
5032 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5033}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5034/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005035 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005036 to to perform a flush operation on a given AC. Upon the
5037 call of this API the WLAN DAL will pack and send a HAL
5038 Flush AC request message to the lower RIVA sub-system if
5039 DAL is in state STARTED.
5040
5041 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005042 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005043
5044 WDI_AddBAReq must have been called.
5045
Jeff Johnsone7245742012-09-05 17:12:55 -07005046 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005047 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005048
Jeff Johnson295189b2012-06-20 16:38:30 -07005049 wdiFlushAcRspCb: callback for passing back the response
5050 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005051
Jeff Johnson295189b2012-06-20 16:38:30 -07005052 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005053 callback
5054
Jeff Johnson295189b2012-06-20 16:38:30 -07005055 @see WDI_AddBAReq
5056 @return Result of the function call
5057*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005058WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005059WDI_FlushAcReq
5060(
5061 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5062 WDI_FlushAcRspCb wdiFlushAcRspCb,
5063 void* pUserData
5064)
5065{
5066 WDI_EventInfoType wdiEventData;
5067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5068
5069 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005070 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005071 ------------------------------------------------------------------------*/
5072 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5073 {
5074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5075 "WDI API call before module is initialized - Fail request");
5076
Jeff Johnsone7245742012-09-05 17:12:55 -07005077 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005078 }
5079
5080 /*------------------------------------------------------------------------
5081 Fill in Event data and post to the Main FSM
5082 ------------------------------------------------------------------------*/
5083 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005084 wdiEventData.pEventData = pwdiFlushAcReqParams;
5085 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5086 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 wdiEventData.pUserData = pUserData;
5088
5089 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5090
5091}/*WDI_FlushAcReq*/
5092
5093/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005094 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005095 wants to notify the lower mac on a BT AMP event. This is
5096 to inform BTC-SLM that some BT AMP event occurred. Upon
5097 the call of this API the WLAN DAL will pack and send a
5098 HAL BT AMP event request message to the lower RIVA
5099 sub-system if DAL is in state STARTED.
5100
5101 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005102 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005103
Jeff Johnsone7245742012-09-05 17:12:55 -07005104
5105 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005106 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005107
Jeff Johnson295189b2012-06-20 16:38:30 -07005108 wdiBtAmpEventRspCb: callback for passing back the
5109 response of the BT AMP event operation received from the
5110 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005111
Jeff Johnson295189b2012-06-20 16:38:30 -07005112 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005113 callback
5114
Jeff Johnson295189b2012-06-20 16:38:30 -07005115 @return Result of the function call
5116*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005117WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005118WDI_BtAmpEventReq
5119(
5120 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5121 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5122 void* pUserData
5123)
5124{
5125 WDI_EventInfoType wdiEventData;
5126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5127
5128 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005129 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005130 ------------------------------------------------------------------------*/
5131 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5132 {
5133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5134 "WDI API call before module is initialized - Fail request");
5135
Jeff Johnsone7245742012-09-05 17:12:55 -07005136 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005137 }
5138
5139 /*------------------------------------------------------------------------
5140 Fill in Event data and post to the Main FSM
5141 ------------------------------------------------------------------------*/
5142 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005143 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5144 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5145 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005146 wdiEventData.pUserData = pUserData;
5147
5148 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5149
5150}/*WDI_BtAmpEventReq*/
5151
Jeff Johnsone7245742012-09-05 17:12:55 -07005152#ifdef FEATURE_OEM_DATA_SUPPORT
5153/**
5154 @brief WDI_Start Oem Data Req will be called when the upper MAC
5155 wants to notify the lower mac on a oem data Req event.Upon
5156 the call of this API the WLAN DAL will pack and send a
5157 HAL OEM Data Req event request message to the lower RIVA
5158 sub-system if DAL is in state STARTED.
5159
5160 In state BUSY this request will be queued. Request won't
5161 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005162
5163
Jeff Johnsone7245742012-09-05 17:12:55 -07005164
5165 @param pwdiOemDataReqParams: the Oem Data Req as
5166 specified by the Device Interface
5167
5168 wdiStartOemDataRspCb: callback for passing back the
5169 response of the Oem Data Req received from the
5170 device
5171
5172 pUserData: user data will be passed back with the
5173 callback
5174
5175 @return Result of the function call
5176*/
5177WDI_Status
5178WDI_StartOemDataReq
5179(
5180 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5181 WDI_oemDataRspCb wdiOemDataRspCb,
5182 void* pUserData
5183)
5184{
5185 WDI_EventInfoType wdiEventData;
5186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5187
5188 /*------------------------------------------------------------------------
5189 Sanity Check
5190 ------------------------------------------------------------------------*/
5191 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5192 {
5193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5194 "WDI API call before module is initialized - Fail request");
5195
5196 return WDI_STATUS_E_NOT_ALLOWED;
5197 }
5198
5199 /*------------------------------------------------------------------------
5200 Fill in Event data and post to the Main FSM
5201 ------------------------------------------------------------------------*/
5202 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5203 wdiEventData.pEventData = pwdiOemDataReqParams;
5204 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5205 wdiEventData.pCBfnc = wdiOemDataRspCb;
5206 wdiEventData.pUserData = pUserData;
5207
5208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5209
5210
5211}
5212
5213#endif
5214
5215
5216/*========================================================================
5217
Jeff Johnson295189b2012-06-20 16:38:30 -07005218 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005219
Jeff Johnson295189b2012-06-20 16:38:30 -07005220==========================================================================*/
5221/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005222 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005223 the WLAN HW to change the current channel of operation.
5224 Upon the call of this API the WLAN DAL will pack and
5225 send a HAL Start request message to the lower RIVA
5226 sub-system if DAL is in state STARTED.
5227
5228 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005229 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005230
5231 WDI_Start must have been called.
5232
Jeff Johnsone7245742012-09-05 17:12:55 -07005233 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005234 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005235
Jeff Johnson295189b2012-06-20 16:38:30 -07005236 wdiSwitchChRspCb: callback for passing back the response
5237 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005238
Jeff Johnson295189b2012-06-20 16:38:30 -07005239 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005240 callback
5241
Jeff Johnson295189b2012-06-20 16:38:30 -07005242 @see WDI_Start
5243 @return Result of the function call
5244*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005245WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005246WDI_SwitchChReq
5247(
5248 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5249 WDI_SwitchChRspCb wdiSwitchChRspCb,
5250 void* pUserData
5251)
5252{
5253 WDI_EventInfoType wdiEventData;
5254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5255
5256 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005257 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005258 ------------------------------------------------------------------------*/
5259 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5260 {
5261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5262 "WDI API call before module is initialized - Fail request");
5263
Jeff Johnsone7245742012-09-05 17:12:55 -07005264 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005265 }
5266
5267 /*------------------------------------------------------------------------
5268 Fill in Event data and post to the Main FSM
5269 ------------------------------------------------------------------------*/
5270 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005271 wdiEventData.pEventData = pwdiSwitchChReqParams;
5272 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5273 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005274 wdiEventData.pUserData = pUserData;
5275
5276 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5277
5278}/*WDI_SwitchChReq*/
5279
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005280/**
5281 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5282 the WLAN HW to change the current channel of operation.
5283 Upon the call of this API the WLAN DAL will pack and
5284 send a HAL Start request message to the lower RIVA
5285 sub-system if DAL is in state STARTED.
5286 This request message also includes source of channel switch,
5287 like CSA,
5288
5289 In state BUSY this request will be queued. Request won't
5290 be allowed in any other state.
5291
5292 WDI_Start must have been called.
5293
5294 @param wdiSwitchChReqParams: the switch ch parameters as
5295 specified by the Device Interface
5296
5297 wdiSwitchChRspCb: callback for passing back the response
5298 of the switch ch operation received from the device
5299
5300 pUserData: user data will be passed back with the
5301 callback
5302
5303 @see WDI_Start
5304 @return Result of the function call
5305*/
5306WDI_Status
5307WDI_SwitchChReq_V1
5308(
5309 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5310 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5311 void* pUserData
5312)
5313{
5314 WDI_EventInfoType wdiEventData;
5315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5317 "WDI API call WDI_SwitchChReq_V1");
5318 /*------------------------------------------------------------------------
5319 Sanity Check
5320 ------------------------------------------------------------------------*/
5321 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5322 {
5323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5324 "WDI API call before module is initialized - Fail request");
5325
5326 return WDI_STATUS_E_NOT_ALLOWED;
5327 }
5328
5329 /*------------------------------------------------------------------------
5330 Fill in Event data and post to the Main FSM
5331 ------------------------------------------------------------------------*/
5332 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5333 wdiEventData.pEventData = pwdiSwitchChReqParams;
5334 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5335 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5336 wdiEventData.pUserData = pUserData;
5337
5338 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5339
5340}/*WDI_SwitchChReq_V1*/
5341
Jeff Johnson295189b2012-06-20 16:38:30 -07005342
5343/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005344 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 wishes to add or update a STA in HW. Upon the call of
5346 this API the WLAN DAL will pack and send a HAL Start
5347 message request message to the lower RIVA sub-system if
5348 DAL is in state STARTED.
5349
5350 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005351 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005352
5353 WDI_Start must have been called.
5354
Jeff Johnsone7245742012-09-05 17:12:55 -07005355 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005356 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005357
Jeff Johnson295189b2012-06-20 16:38:30 -07005358 wdiConfigSTARspCb: callback for passing back the
5359 response of the config STA operation received from the
5360 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005361
Jeff Johnson295189b2012-06-20 16:38:30 -07005362 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005363 callback
5364
Jeff Johnson295189b2012-06-20 16:38:30 -07005365 @see WDI_Start
5366 @return Result of the function call
5367*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005368WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005369WDI_ConfigSTAReq
5370(
5371 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5372 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5373 void* pUserData
5374)
5375{
5376 WDI_EventInfoType wdiEventData;
5377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5378
5379 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005380 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005381 ------------------------------------------------------------------------*/
5382 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5383 {
5384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5385 "WDI API call before module is initialized - Fail request");
5386
Jeff Johnsone7245742012-09-05 17:12:55 -07005387 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005388 }
5389
5390 /*------------------------------------------------------------------------
5391 Fill in Event data and post to the Main FSM
5392 ------------------------------------------------------------------------*/
5393 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005394 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5395 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5396 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005397 wdiEventData.pUserData = pUserData;
5398
5399 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5400
5401}/*WDI_ConfigSTAReq*/
5402
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005403 /**
5404 @brief WDI_UpdateChannelReq will be called when the upper MAC
5405 wants to update the channel list on change in country code.
5406
5407 In state BUSY this request will be queued. Request won't
5408 be allowed in any other state.
5409
5410 WDI_UpdateChannelReq must have been called.
5411
5412 @param wdiUpdateChannelReqParams: the updated channel parameters
5413 as specified by the Device Interface
5414
5415 wdiUpdateChannelRspCb: callback for passing back the
5416 response of the update channel operation received from
5417 the device
5418
5419 pUserData: user data will be passed back with the
5420 callback
5421
5422 @return Result of the function call
5423*/
5424WDI_Status
5425WDI_UpdateChannelReq
5426(
5427 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5428 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5429 void* pUserData
5430)
5431{
5432 WDI_EventInfoType wdiEventData = {{0}};
5433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5434
5435 /*------------------------------------------------------------------------
5436 Sanity Check
5437 ------------------------------------------------------------------------*/
5438 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5439 {
5440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5441 "WDI API call before module is initialized - Fail request");
5442
5443 return WDI_STATUS_E_NOT_ALLOWED;
5444 }
5445
5446 /*------------------------------------------------------------------------
5447 Fill in Event data and post to the Main FSM
5448 ------------------------------------------------------------------------*/
5449 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5450 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5451 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5452 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5453 wdiEventData.pUserData = pUserData;
5454
5455 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5456
5457}/*WDI_UpdateChannelReq*/
5458
Jeff Johnson295189b2012-06-20 16:38:30 -07005459/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005460 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005461 wants to change the state of an ongoing link. Upon the
5462 call of this API the WLAN DAL will pack and send a HAL
5463 Start message request message to the lower RIVA
5464 sub-system if DAL is in state STARTED.
5465
5466 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005467 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005468
5469 WDI_JoinStartReq must have been called.
5470
Jeff Johnsone7245742012-09-05 17:12:55 -07005471 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005472 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005473
Jeff Johnson295189b2012-06-20 16:38:30 -07005474 wdiSetLinkStateRspCb: callback for passing back the
5475 response of the set link state operation received from
5476 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005477
Jeff Johnson295189b2012-06-20 16:38:30 -07005478 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005479 callback
5480
Jeff Johnson295189b2012-06-20 16:38:30 -07005481 @see WDI_JoinStartReq
5482 @return Result of the function call
5483*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005484WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005485WDI_SetLinkStateReq
5486(
5487 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5488 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5489 void* pUserData
5490)
5491{
5492 WDI_EventInfoType wdiEventData;
5493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5494
5495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005496 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005497 ------------------------------------------------------------------------*/
5498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5499 {
5500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5501 "WDI API call before module is initialized - Fail request");
5502
Jeff Johnsone7245742012-09-05 17:12:55 -07005503 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 }
5505
5506 /*------------------------------------------------------------------------
5507 Fill in Event data and post to the Main FSM
5508 ------------------------------------------------------------------------*/
5509 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005510 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5511 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5512 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005513 wdiEventData.pUserData = pUserData;
5514
5515 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5516
5517}/*WDI_SetLinkStateReq*/
5518
5519
5520/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005521 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005522 to get statistics (MIB counters) from the device. Upon
5523 the call of this API the WLAN DAL will pack and send a
5524 HAL Start request message to the lower RIVA sub-system
5525 if DAL is in state STARTED.
5526
5527 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005528 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005529
5530 WDI_Start must have been called.
5531
Jeff Johnsone7245742012-09-05 17:12:55 -07005532 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005533 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005534
Jeff Johnson295189b2012-06-20 16:38:30 -07005535 wdiGetStatsRspCb: callback for passing back the response
5536 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005537
Jeff Johnson295189b2012-06-20 16:38:30 -07005538 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005539 callback
5540
Jeff Johnson295189b2012-06-20 16:38:30 -07005541 @see WDI_Start
5542 @return Result of the function call
5543*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005544WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005545WDI_GetStatsReq
5546(
5547 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5548 WDI_GetStatsRspCb wdiGetStatsRspCb,
5549 void* pUserData
5550)
5551{
5552 WDI_EventInfoType wdiEventData;
5553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5554
5555 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005556 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005557 ------------------------------------------------------------------------*/
5558 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5559 {
5560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5561 "WDI API call before module is initialized - Fail request");
5562
Jeff Johnsone7245742012-09-05 17:12:55 -07005563 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005564 }
5565
5566 /*------------------------------------------------------------------------
5567 Fill in Event data and post to the Main FSM
5568 ------------------------------------------------------------------------*/
5569 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005570 wdiEventData.pEventData = pwdiGetStatsReqParams;
5571 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5572 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005573 wdiEventData.pUserData = pUserData;
5574
5575 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5576
5577}/*WDI_GetStatsReq*/
5578
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005579#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005580/**
5581 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5582 to get roam rssi from the device. Upon
5583 the call of this API the WLAN DAL will pack and send a
5584 HAL Start request message to the lower RIVA sub-system
5585 if DAL is in state STARTED.
5586
5587 In state BUSY this request will be queued. Request won't
5588 be allowed in any other state.
5589
5590 WDI_Start must have been called.
5591
5592 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5593 specified by the Device Interface
5594
5595 wdiGetRoamRssiRspCb: callback for passing back the response
5596 of the get stats operation received from the device
5597
5598 pUserData: user data will be passed back with the
5599 callback
5600
5601 @see WDI_Start
5602 @return Result of the function call
5603*/
5604WDI_Status
5605WDI_GetRoamRssiReq
5606(
5607 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5608 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5609 void* pUserData
5610)
5611{
5612 WDI_EventInfoType wdiEventData;
5613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5614
5615 /*------------------------------------------------------------------------
5616 Sanity Check
5617 ------------------------------------------------------------------------*/
5618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5619 {
5620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5621 "WDI API call before module is initialized - Fail request");
5622
5623 return WDI_STATUS_E_NOT_ALLOWED;
5624 }
5625 /*------------------------------------------------------------------------
5626 Fill in Event data and post to the Main FSM
5627 ------------------------------------------------------------------------*/
5628 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5629 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5630 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5631 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5632 wdiEventData.pUserData = pUserData;
5633
5634 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5635
5636}/*WDI_GetRoamRssiReq*/
5637#endif
5638
Jeff Johnson295189b2012-06-20 16:38:30 -07005639
5640/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005641 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005642 it wishes to change the configuration of the WLAN
5643 Device. Upon the call of this API the WLAN DAL will pack
5644 and send a HAL Update CFG request message to the lower
5645 RIVA sub-system if DAL is in state STARTED.
5646
5647 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005648 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005649
5650 WDI_Start must have been called.
5651
Jeff Johnsone7245742012-09-05 17:12:55 -07005652 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005653 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005654
Jeff Johnson295189b2012-06-20 16:38:30 -07005655 wdiUpdateCfgsRspCb: callback for passing back the
5656 response of the update cfg operation received from the
5657 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005658
Jeff Johnson295189b2012-06-20 16:38:30 -07005659 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005660 callback
5661
Jeff Johnson295189b2012-06-20 16:38:30 -07005662 @see WDI_Start
5663 @return Result of the function call
5664*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005665WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005666WDI_UpdateCfgReq
5667(
5668 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5669 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5670 void* pUserData
5671)
5672{
5673 WDI_EventInfoType wdiEventData;
5674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5675
5676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 ------------------------------------------------------------------------*/
5679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5680 {
5681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5682 "WDI API call before module is initialized - Fail request");
5683
Jeff Johnsone7245742012-09-05 17:12:55 -07005684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 }
5686
5687 /*------------------------------------------------------------------------
5688 Fill in Event data and post to the Main FSM
5689 ------------------------------------------------------------------------*/
5690 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005691 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5692 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5693 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005694 wdiEventData.pUserData = pUserData;
5695
5696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5697
5698}/*WDI_UpdateCfgReq*/
5699
5700
5701
5702/**
5703 @brief WDI_AddBAReq will be called when the upper MAC has setup
5704 successfully a BA session and needs to notify the HW for
5705 the appropriate settings to take place. Upon the call of
5706 this API the WLAN DAL will pack and send a HAL Add BA
5707 request message to the lower RIVA sub-system if DAL is
5708 in state STARTED.
5709
5710 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005711 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005712
5713 WDI_PostAssocReq must have been called.
5714
5715 @param wdiAddBAReqParams: the add BA parameters as specified by
5716 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005717
Jeff Johnson295189b2012-06-20 16:38:30 -07005718 wdiAddBARspCb: callback for passing back the response of
5719 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005720
Jeff Johnson295189b2012-06-20 16:38:30 -07005721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005722 callback
5723
Jeff Johnson295189b2012-06-20 16:38:30 -07005724 @see WDI_PostAssocReq
5725 @return Result of the function call
5726*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005727WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005728WDI_AddBAReq
5729(
5730 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5731 WDI_AddBARspCb wdiAddBARspCb,
5732 void* pUserData
5733)
5734{
5735 WDI_EventInfoType wdiEventData;
5736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5737
5738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005740 ------------------------------------------------------------------------*/
5741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5742 {
5743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5744 "WDI API call before module is initialized - Fail request");
5745
Jeff Johnsone7245742012-09-05 17:12:55 -07005746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005747 }
5748
5749 /*------------------------------------------------------------------------
5750 Fill in Event data and post to the Main FSM
5751 ------------------------------------------------------------------------*/
5752 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005753 wdiEventData.pEventData = pwdiAddBAReqParams;
5754 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5755 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005756 wdiEventData.pUserData = pUserData;
5757
5758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5759
5760}/*WDI_AddBAReq*/
5761
5762
5763/**
5764 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5765 successfully a BA session and needs to notify the HW for
5766 the appropriate settings to take place. Upon the call of
5767 this API the WLAN DAL will pack and send a HAL Add BA
5768 request message to the lower RIVA sub-system if DAL is
5769 in state STARTED.
5770
5771 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005772 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005773
5774 WDI_PostAssocReq must have been called.
5775
5776 @param wdiAddBAReqParams: the add BA parameters as specified by
5777 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005778
Jeff Johnson295189b2012-06-20 16:38:30 -07005779 wdiAddBARspCb: callback for passing back the response of
5780 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005781
Jeff Johnson295189b2012-06-20 16:38:30 -07005782 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005783 callback
5784
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 @see WDI_PostAssocReq
5786 @return Result of the function call
5787*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005788WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005789WDI_TriggerBAReq
5790(
5791 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5792 WDI_TriggerBARspCb wdiTriggerBARspCb,
5793 void* pUserData
5794)
5795{
5796 WDI_EventInfoType wdiEventData;
5797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5798
5799 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005800 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005801 ------------------------------------------------------------------------*/
5802 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5803 {
5804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5805 "WDI API call before module is initialized - Fail request");
5806
Jeff Johnsone7245742012-09-05 17:12:55 -07005807 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005808 }
5809
5810 /*------------------------------------------------------------------------
5811 Fill in Event data and post to the Main FSM
5812 ------------------------------------------------------------------------*/
5813 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005814 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5815 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5816 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005817 wdiEventData.pUserData = pUserData;
5818
5819 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5820
5821}/*WDI_AddBAReq*/
5822
5823/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005824 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005825 wishes to update any of the Beacon parameters used by HW.
5826 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5827 message to the lower RIVA sub-system if DAL is in state
5828 STARTED.
5829
5830 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005831 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005832
5833 WDI_PostAssocReq must have been called.
5834
Jeff Johnsone7245742012-09-05 17:12:55 -07005835 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005836 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005837
Jeff Johnson295189b2012-06-20 16:38:30 -07005838 wdiUpdateBeaconParamsRspCb: callback for passing back the
5839 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005840
Jeff Johnson295189b2012-06-20 16:38:30 -07005841 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005842 callback
5843
Jeff Johnson295189b2012-06-20 16:38:30 -07005844 @see WDI_PostAssocReq
5845 @return Result of the function call
5846*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005847WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005848WDI_UpdateBeaconParamsReq
5849(
5850 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5851 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5852 void* pUserData
5853)
5854{
5855 WDI_EventInfoType wdiEventData;
5856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5857
5858 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005859 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005860 ------------------------------------------------------------------------*/
5861 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5862 {
5863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5864 "WDI API call before module is initialized - Fail request");
5865
Jeff Johnsone7245742012-09-05 17:12:55 -07005866 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005867 }
5868
5869 /*------------------------------------------------------------------------
5870 Fill in Event data and post to the Main FSM
5871 ------------------------------------------------------------------------*/
5872 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005873 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5874 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5875 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005876 wdiEventData.pUserData = pUserData;
5877
5878 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5879
5880}/*WDI_UpdateBeaconParamsReq*/
5881
5882/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005883 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005884 wishes to update the Beacon template used by HW.
5885 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5886 message to the lower RIVA sub-system if DAL is in state
5887 STARTED.
5888
5889 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005890 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005891
5892 WDI_PostAssocReq must have been called.
5893
Jeff Johnsone7245742012-09-05 17:12:55 -07005894 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005895 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005896
Jeff Johnson295189b2012-06-20 16:38:30 -07005897 wdiSendBeaconParamsRspCb: callback for passing back the
5898 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005899
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005901 callback
5902
Jeff Johnson295189b2012-06-20 16:38:30 -07005903 @see WDI_PostAssocReq
5904 @return Result of the function call
5905*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005906WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005907WDI_SendBeaconParamsReq
5908(
5909 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5910 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5911 void* pUserData
5912)
5913{
5914 WDI_EventInfoType wdiEventData;
5915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5916
5917 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005918 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005919 ------------------------------------------------------------------------*/
5920 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5921 {
5922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5923 "WDI API call before module is initialized - Fail request");
5924
Jeff Johnsone7245742012-09-05 17:12:55 -07005925 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005926 }
5927
5928 /*------------------------------------------------------------------------
5929 Fill in Event data and post to the Main FSM
5930 ------------------------------------------------------------------------*/
5931 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005932 wdiEventData.pEventData = pwdiSendBeaconParams;
5933 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5934 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005935 wdiEventData.pUserData = pUserData;
5936
5937 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5938
5939}/*WDI_SendBeaconParamsReq*/
5940
5941/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005942 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005943 upper MAC wants to update the probe response template to
5944 be transmitted as Soft AP
5945 Upon the call of this API the WLAN DAL will
5946 pack and send the probe rsp template message to the
5947 lower RIVA sub-system if DAL is in state STARTED.
5948
5949 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005950 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005951
5952
Jeff Johnsone7245742012-09-05 17:12:55 -07005953 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005954 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005955
Jeff Johnson295189b2012-06-20 16:38:30 -07005956 wdiSendBeaconParamsRspCb: callback for passing back the
5957 response of the Send Beacon Params operation received
5958 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005959
Jeff Johnson295189b2012-06-20 16:38:30 -07005960 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005961 callback
5962
Jeff Johnson295189b2012-06-20 16:38:30 -07005963 @see WDI_AddBAReq
5964 @return Result of the function call
5965*/
5966
Jeff Johnsone7245742012-09-05 17:12:55 -07005967WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005968WDI_UpdateProbeRspTemplateReq
5969(
5970 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5971 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5972 void* pUserData
5973)
5974{
5975 WDI_EventInfoType wdiEventData;
5976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5977
5978 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005979 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005980 ------------------------------------------------------------------------*/
5981 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5982 {
5983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5984 "WDI API call before module is initialized - Fail request");
5985
Jeff Johnsone7245742012-09-05 17:12:55 -07005986 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005987 }
5988
5989 /*------------------------------------------------------------------------
5990 Fill in Event data and post to the Main FSM
5991 ------------------------------------------------------------------------*/
5992 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005993 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5994 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5995 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005996 wdiEventData.pUserData = pUserData;
5997
5998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5999
6000}/*WDI_UpdateProbeRspTemplateReq*/
6001
6002/**
6003 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6004 to the NV memory.
6005
6006
6007 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6008 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006009
Jeff Johnson295189b2012-06-20 16:38:30 -07006010 wdiNvDownloadRspCb: callback for passing back the response of
6011 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006012
Jeff Johnson295189b2012-06-20 16:38:30 -07006013 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006014 callback
6015
Jeff Johnson295189b2012-06-20 16:38:30 -07006016 @see WDI_PostAssocReq
6017 @return Result of the function call
6018*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006019WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006020WDI_NvDownloadReq
6021(
6022 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6023 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6024 void* pUserData
6025)
6026{
6027 WDI_EventInfoType wdiEventData;
6028
6029 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006030 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006031 ------------------------------------------------------------------------*/
6032 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6033 {
6034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6035 "WDI API call before module is initialized - Fail request");
6036
Jeff Johnsone7245742012-09-05 17:12:55 -07006037 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006038 }
6039
6040 /*------------------------------------------------------------------------
6041 Fill in Event data and post to the Main FSM
6042 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006043 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6044 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6045 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6046 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006047 wdiEventData.pUserData = pUserData;
6048
6049 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6050
6051}/*WDI_NVDownloadReq*/
6052
Jeff Johnson295189b2012-06-20 16:38:30 -07006053/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006054 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006055 upper MAC wants to send Notice of Absence
6056 Upon the call of this API the WLAN DAL will
6057 pack and send the probe rsp template message to the
6058 lower RIVA sub-system if DAL is in state STARTED.
6059
6060 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006061 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006062
6063
Jeff Johnsone7245742012-09-05 17:12:55 -07006064 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006065 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006066
Jeff Johnson295189b2012-06-20 16:38:30 -07006067 wdiSendBeaconParamsRspCb: callback for passing back the
6068 response of the Send Beacon Params operation received
6069 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006070
Jeff Johnson295189b2012-06-20 16:38:30 -07006071 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006072 callback
6073
Jeff Johnson295189b2012-06-20 16:38:30 -07006074 @see WDI_AddBAReq
6075 @return Result of the function call
6076*/
6077WDI_Status
6078WDI_SetP2PGONOAReq
6079(
6080 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6081 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6082 void* pUserData
6083)
6084{
6085 WDI_EventInfoType wdiEventData;
6086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6087
6088 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006089 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006090 ------------------------------------------------------------------------*/
6091 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6092 {
6093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6094 "WDI API call before module is initialized - Fail request");
6095
Jeff Johnsone7245742012-09-05 17:12:55 -07006096 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006097 }
6098
6099 /*------------------------------------------------------------------------
6100 Fill in Event data and post to the Main FSM
6101 ------------------------------------------------------------------------*/
6102 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006103 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6104 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6105 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006106 wdiEventData.pUserData = pUserData;
6107
6108 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6109
6110}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006111
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306112#ifdef FEATURE_WLAN_TDLS
6113/**
6114 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6115 upper MAC wants to send TDLS Link Establish Request Parameters
6116 Upon the call of this API the WLAN DAL will
6117 pack and send the TDLS Link Establish Request message to the
6118 lower RIVA sub-system if DAL is in state STARTED.
6119
6120 In state BUSY this request will be queued. Request won't
6121 be allowed in any other state.
6122
6123
6124 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6125 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6126
6127 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6128 response of the TDLS Link Establish request received
6129 from the device
6130
6131 pUserData: user data will be passed back with the
6132 callback
6133
6134 @see
6135 @return Result of the function call
6136*/
6137WDI_Status
6138WDI_SetTDLSLinkEstablishReq
6139(
6140 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6141 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6142 void* pUserData
6143)
6144{
6145 WDI_EventInfoType wdiEventData;
6146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6147
6148 /*------------------------------------------------------------------------
6149 Sanity Check
6150 ------------------------------------------------------------------------*/
6151 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6152 {
6153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6154 "WDI API call before module is initialized - Fail request");
6155
6156 return WDI_STATUS_E_NOT_ALLOWED;
6157 }
6158
6159 /*------------------------------------------------------------------------
6160 Fill in Event data and post to the Main FSM
6161 ------------------------------------------------------------------------*/
6162 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6163 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6164 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6165 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6166 wdiEventData.pUserData = pUserData;
6167
6168 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6169
6170}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306171
6172//tdlsoffchan
6173/**
6174 @brief WDI_SetTDLSChanSwitchReq will be called when the
6175 upper MAC wants to send TDLS Chan Switch Request Parameters
6176 Upon the call of this API the WLAN DAL will
6177 pack and send the TDLS Link Establish Request message to the
6178 lower RIVA sub-system if DAL is in state STARTED.
6179
6180 In state BUSY this request will be queued. Request won't
6181 be allowed in any other state.
6182
6183
6184 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6185 for Link Establishment (Used for TDLS Off Channel ...)
6186
6187 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6188 response of the TDLS Chan Switch request received
6189 from the device
6190
6191 pUserData: user data will be passed back with the
6192 callback
6193
6194 @see
6195 @return Result of the function call
6196*/
6197WDI_Status
6198WDI_SetTDLSChanSwitchReq
6199(
6200 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6201 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6202 void* pUserData
6203)
6204{
6205 WDI_EventInfoType wdiEventData;
6206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6207
6208 /*------------------------------------------------------------------------
6209 Sanity Check
6210 ------------------------------------------------------------------------*/
6211 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6212 {
6213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6214 "WDI API call before module is initialized - Fail request");
6215
6216 return WDI_STATUS_E_NOT_ALLOWED;
6217 }
6218
6219 /*------------------------------------------------------------------------
6220 Fill in Event data and post to the Main FSM
6221 ------------------------------------------------------------------------*/
6222 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6223 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6224 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6225 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6226 wdiEventData.pUserData = pUserData;
6227
6228 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6229
6230}/*WDI_SetTDLSChanSwitchReq*/
6231
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306232#endif
6233
Jeff Johnson295189b2012-06-20 16:38:30 -07006234/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006235 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006236 UMAC wanted to add STA self while opening any new session
6237 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006238 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006239
6240
Jeff Johnsone7245742012-09-05 17:12:55 -07006241 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006242 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006243
Jeff Johnson295189b2012-06-20 16:38:30 -07006244 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006245 callback
6246
6247 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006248 @return Result of the function call
6249*/
6250WDI_Status
6251WDI_AddSTASelfReq
6252(
6253 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6254 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6255 void* pUserData
6256)
6257{
6258 WDI_EventInfoType wdiEventData;
6259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6260
6261 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006262 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006263 ------------------------------------------------------------------------*/
6264 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6265 {
6266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6267 "WDI API call before module is initialized - Fail request");
6268
Jeff Johnsone7245742012-09-05 17:12:55 -07006269 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006270 }
6271
6272 /*------------------------------------------------------------------------
6273 Fill in Event data and post to the Main FSM
6274 ------------------------------------------------------------------------*/
6275 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006276 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6277 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6278 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006279 wdiEventData.pUserData = pUserData;
6280
6281 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6282
6283}/*WDI_AddSTASelfReq*/
6284
6285
Jeff Johnsone7245742012-09-05 17:12:55 -07006286#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006287/**
6288 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6289 the device of a successful add TSpec negotiation. HW
6290 needs to receive the TSpec Info from the UMAC in order
6291 to configure properly the QoS data traffic. Upon the
6292 call of this API the WLAN DAL will pack and send a HAL
6293 Add TS request message to the lower RIVA sub-system if
6294 DAL is in state STARTED.
6295
6296 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006297 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006298
6299 WDI_PostAssocReq must have been called.
6300
6301 @param wdiAddTsReqParams: the add TS parameters as specified by
6302 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006303
Jeff Johnson295189b2012-06-20 16:38:30 -07006304 wdiAddTsRspCb: callback for passing back the response of
6305 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006306
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006308 callback
6309
Jeff Johnson295189b2012-06-20 16:38:30 -07006310 @see WDI_PostAssocReq
6311 @return Result of the function call
6312*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006313WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006314WDI_AggrAddTSReq
6315(
6316 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6317 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6318 void* pUserData
6319)
6320{
6321 WDI_EventInfoType wdiEventData;
6322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6323
6324 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006325 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006326 ------------------------------------------------------------------------*/
6327 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6328 {
6329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6330 "WDI API call before module is initialized - Fail request");
6331
Jeff Johnsone7245742012-09-05 17:12:55 -07006332 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006333 }
6334
6335 /*------------------------------------------------------------------------
6336 Fill in Event data and post to the Main FSM
6337 ------------------------------------------------------------------------*/
6338 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006339 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6340 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6341 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006342 wdiEventData.pUserData = pUserData;
6343
6344 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6345
6346}/*WDI_AggrAddTSReq*/
6347
6348#endif /* WLAN_FEATURE_VOWIFI_11R */
6349
Jeff Johnson295189b2012-06-20 16:38:30 -07006350/**
6351 @brief WDI_FTMCommandReq
6352 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006353
6354 @param ftmCommandReq: FTM Command Body
6355 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006356 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006357
Jeff Johnson295189b2012-06-20 16:38:30 -07006358 @see
6359 @return Result of the function call
6360*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006361WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006362WDI_FTMCommandReq
6363(
6364 WDI_FTMCommandReqType *ftmCommandReq,
6365 WDI_FTMCommandRspCb ftmCommandRspCb,
6366 void *pUserData
6367)
6368{
6369 WDI_EventInfoType wdiEventData;
6370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6371
6372 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006373 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006374 ------------------------------------------------------------------------*/
6375 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6376 {
6377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6378 "WDI API call before module is initialized - Fail request");
6379
Jeff Johnsone7245742012-09-05 17:12:55 -07006380 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006381 }
6382
6383 /*------------------------------------------------------------------------
6384 Fill in Event data and post to the Main FSM
6385 ------------------------------------------------------------------------*/
6386 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6387 wdiEventData.pEventData = (void *)ftmCommandReq;
6388 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6389 wdiEventData.pCBfnc = ftmCommandRspCb;
6390 wdiEventData.pUserData = pUserData;
6391
6392 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6393}
Jeff Johnson295189b2012-06-20 16:38:30 -07006394/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006395 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006396
6397 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006398 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006399
6400
6401 @param pwdiResumeReqParams: as specified by
6402 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006403
Jeff Johnson295189b2012-06-20 16:38:30 -07006404 wdiResumeReqRspCb: callback for passing back the response of
6405 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006406
Jeff Johnson295189b2012-06-20 16:38:30 -07006407 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006408 callback
6409
6410 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006411 @return Result of the function call
6412*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006413WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006414WDI_HostResumeReq
6415(
6416 WDI_ResumeParamsType* pwdiResumeReqParams,
6417 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6418 void* pUserData
6419)
6420{
6421 WDI_EventInfoType wdiEventData;
6422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6423
6424 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006425 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006426 ------------------------------------------------------------------------*/
6427 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6428 {
6429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6430 "WDI API call before module is initialized - Fail request");
6431
Jeff Johnsone7245742012-09-05 17:12:55 -07006432 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006433 }
6434
6435 /*------------------------------------------------------------------------
6436 Fill in Event data and post to the Main FSM
6437 ------------------------------------------------------------------------*/
6438 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006439 wdiEventData.pEventData = pwdiResumeReqParams;
6440 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6441 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006442 wdiEventData.pUserData = pUserData;
6443
6444 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6445
6446}/*WDI_HostResumeReq*/
6447
6448/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006449 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006450
6451 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006452 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006453
6454
6455 @param pwdiDelStaSelfReqParams: as specified by
6456 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006457
Jeff Johnson295189b2012-06-20 16:38:30 -07006458 wdiDelStaSelfRspCb: callback for passing back the response of
6459 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006460
Jeff Johnson295189b2012-06-20 16:38:30 -07006461 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006462 callback
6463
Jeff Johnson295189b2012-06-20 16:38:30 -07006464 @see WDI_PostAssocReq
6465 @return Result of the function call
6466*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006467WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006468WDI_DelSTASelfReq
6469(
6470 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6471 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6472 void* pUserData
6473)
6474{
6475 WDI_EventInfoType wdiEventData;
6476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6477
6478 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006479 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006480 ------------------------------------------------------------------------*/
6481 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6482 {
6483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6484 "WDI API call before module is initialized - Fail request");
6485
Jeff Johnsone7245742012-09-05 17:12:55 -07006486 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006487 }
6488
6489 /*------------------------------------------------------------------------
6490 Fill in Event data and post to the Main FSM
6491 ------------------------------------------------------------------------*/
6492 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006493 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6494 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6495 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006496 wdiEventData.pUserData = pUserData;
6497
6498 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6499
6500}/*WDI_AggrAddTSReq*/
6501
6502/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006503 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6504 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006505 Upon the call of this API the WLAN DAL will pack
6506 and send a HAL Set Tx Per Tracking request message to the
6507 lower RIVA sub-system if DAL is in state STARTED.
6508
6509 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006510 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006511
Jeff Johnsone7245742012-09-05 17:12:55 -07006512 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006513 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006514
Jeff Johnson295189b2012-06-20 16:38:30 -07006515 pwdiSetTxPerTrackingRspCb: callback for passing back the
6516 response of the set Tx PER Tracking configurations operation received
6517 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006518
Jeff Johnson295189b2012-06-20 16:38:30 -07006519 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006520 callback
6521
Jeff Johnson295189b2012-06-20 16:38:30 -07006522 @return Result of the function call
6523*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006524WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006525WDI_SetTxPerTrackingReq
6526(
6527 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6528 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6529 void* pUserData
6530)
6531{
6532 WDI_EventInfoType wdiEventData;
6533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6534
6535 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006536 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006537 ------------------------------------------------------------------------*/
6538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6539 {
6540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6541 "WDI API call before module is initialized - Fail request");
6542
Jeff Johnsone7245742012-09-05 17:12:55 -07006543 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006544 }
6545
6546 /*------------------------------------------------------------------------
6547 Fill in Event data and post to the Main FSM
6548 ------------------------------------------------------------------------*/
6549 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006550 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006551 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006552 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006553 wdiEventData.pUserData = pUserData;
6554
6555 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6556
6557}/*WDI_SetTxPerTrackingReq*/
6558
6559/**
6560 @brief WDI_SetTmLevelReq
6561 If HW Thermal condition changed, driver should react based on new
6562 HW thermal condition.
6563
6564 @param pwdiSetTmLevelReq: New thermal condition information
6565
6566 pwdiSetTmLevelRspCb: callback
6567
6568 usrData: user data will be passed back with the
6569 callback
6570
6571 @return Result of the function call
6572*/
6573WDI_Status
6574WDI_SetTmLevelReq
6575(
6576 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6577 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6578 void *usrData
6579)
6580{
6581 WDI_EventInfoType wdiEventData;
6582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6583
6584 /*------------------------------------------------------------------------
6585 Sanity Check
6586 ------------------------------------------------------------------------*/
6587 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6588 {
6589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6590 "WDI API call before module is initialized - Fail request");
6591
6592 return WDI_STATUS_E_NOT_ALLOWED;
6593 }
6594
6595 /*------------------------------------------------------------------------
6596 Fill in Event data and post to the Main FSM
6597 ------------------------------------------------------------------------*/
6598 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6599 wdiEventData.pEventData = pwdiSetTmLevelReq;
6600 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6601 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6602 wdiEventData.pUserData = usrData;
6603
6604 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6605}
6606
6607/**
6608 @brief WDI_HostSuspendInd
6609
6610 Suspend Indication from the upper layer will be sent
6611 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006612
Jeff Johnson295189b2012-06-20 16:38:30 -07006613 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006614
6615 @see
6616
Jeff Johnson295189b2012-06-20 16:38:30 -07006617 @return Status of the request
6618*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006619WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006620WDI_HostSuspendInd
6621(
6622 WDI_SuspendParamsType* pwdiSuspendIndParams
6623)
6624{
6625
6626 WDI_EventInfoType wdiEventData;
6627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6628
6629 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006630 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006631 ------------------------------------------------------------------------*/
6632 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6633 {
6634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6635 "WDI API call before module is initialized - Fail request");
6636
Jeff Johnsone7245742012-09-05 17:12:55 -07006637 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006638 }
6639
6640 /*------------------------------------------------------------------------
6641 Fill in Event data and post to the Main FSM
6642 ------------------------------------------------------------------------*/
6643 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006644 wdiEventData.pEventData = pwdiSuspendIndParams;
6645 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6646 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006647 wdiEventData.pUserData = NULL;
6648
6649 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6650
6651}/*WDI_HostSuspendInd*/
6652
6653/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006654 @brief WDI_TrafficStatsInd
6655 Traffic Stats from the upper layer will be sent
6656 down to HAL
6657
6658 @param WDI_TrafficStatsIndType
6659
6660 @see
6661
6662 @return Status of the request
6663*/
6664WDI_Status
6665WDI_TrafficStatsInd
6666(
6667 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6668)
6669{
6670
6671 WDI_EventInfoType wdiEventData;
6672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6673
6674 /*------------------------------------------------------------------------
6675 Sanity Check
6676 ------------------------------------------------------------------------*/
6677 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6678 {
6679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6680 "WDI API call before module is initialized - Fail request");
6681
6682 return WDI_STATUS_E_NOT_ALLOWED;
6683 }
6684
6685 /*------------------------------------------------------------------------
6686 Fill in Event data and post to the Main FSM
6687 ------------------------------------------------------------------------*/
6688 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6689 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6690 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6691 wdiEventData.pCBfnc = NULL;
6692 wdiEventData.pUserData = NULL;
6693
6694 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6695
6696}/*WDI_TrafficStatsInd*/
6697
Chet Lanctot186b5732013-03-18 10:26:30 -07006698#ifdef WLAN_FEATURE_11W
6699/**
6700 @brief WDI_ExcludeUnencryptedInd
6701 Register with HAL to receive/drop unencrypted frames
6702
6703 @param WDI_ExcludeUnencryptIndType
6704
6705 @see
6706
6707 @return Status of the request
6708*/
6709WDI_Status
6710WDI_ExcludeUnencryptedInd
6711(
6712 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6713)
6714{
6715
6716 WDI_EventInfoType wdiEventData;
6717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6718
6719 /*------------------------------------------------------------------------
6720 Sanity Check
6721 ------------------------------------------------------------------------*/
6722 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6723 {
6724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6725 "WDI API call before module is initialized - Fail request");
6726
6727 return WDI_STATUS_E_NOT_ALLOWED;
6728 }
6729
6730 /*------------------------------------------------------------------------
6731 Fill in Event data and post to the Main FSM
6732 ------------------------------------------------------------------------*/
6733 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6734 wdiEventData.pEventData = pWdiExcUnencParams;
6735 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6736 wdiEventData.pCBfnc = NULL;
6737 wdiEventData.pUserData = NULL;
6738
6739 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6740
6741}/*WDI_TrafficStatsInd*/
6742#endif
6743
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006744/**
Yue Mab9c86f42013-08-14 15:59:08 -07006745 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6746
6747 @param addPeriodicTxPtrnParams: Add Pattern parameters
6748
6749 @see
6750
6751 @return Status of the request
6752*/
6753WDI_Status
6754WDI_AddPeriodicTxPtrnInd
6755(
6756 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6757)
6758{
6759 WDI_EventInfoType wdiEventData;
6760
6761 /*-------------------------------------------------------------------------
6762 Sanity Check
6763 ------------------------------------------------------------------------*/
6764 if (eWLAN_PAL_FALSE == gWDIInitialized)
6765 {
6766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6767 "WDI API call before module is initialized - Fail request!");
6768
6769 return WDI_STATUS_E_NOT_ALLOWED;
6770 }
6771
6772 /*-------------------------------------------------------------------------
6773 Fill in Event data and post to the Main FSM
6774 ------------------------------------------------------------------------*/
6775 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6776 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6777 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6778 wdiEventData.pCBfnc = NULL;
6779 wdiEventData.pUserData = NULL;
6780
6781 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6782}
6783
6784/**
6785 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6786
6787 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6788
6789 @see
6790
6791 @return Status of the request
6792*/
6793WDI_Status
6794WDI_DelPeriodicTxPtrnInd
6795(
6796 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6797)
6798{
6799 WDI_EventInfoType wdiEventData;
6800
6801 /*-------------------------------------------------------------------------
6802 Sanity Check
6803 ------------------------------------------------------------------------*/
6804 if (eWLAN_PAL_FALSE == gWDIInitialized)
6805 {
6806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6807 "WDI API call before module is initialized - Fail request!");
6808
6809 return WDI_STATUS_E_NOT_ALLOWED;
6810 }
6811
6812 /*-------------------------------------------------------------------------
6813 Fill in Event data and post to the Main FSM
6814 ------------------------------------------------------------------------*/
6815 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6816 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6817 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6818 wdiEventData.pCBfnc = NULL;
6819 wdiEventData.pUserData = NULL;
6820
6821 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6822}
6823
6824/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006825 @brief WDI_HALDumpCmdReq
6826 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006827
6828 @param halDumpCmdReqParams: Hal Dump Command Body
6829 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006830 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006831
Jeff Johnson295189b2012-06-20 16:38:30 -07006832 @see
6833 @return Result of the function call
6834*/
6835WDI_Status WDI_HALDumpCmdReq
6836(
6837 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6838 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6839 void *pUserData
6840)
6841{
6842 WDI_EventInfoType wdiEventData;
6843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6844
6845 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006846 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006847 ------------------------------------------------------------------------*/
6848 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6849 {
6850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6851 "WDI API call before module is initialized - Fail request");
6852
Jeff Johnsone7245742012-09-05 17:12:55 -07006853 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006854 }
6855
6856 /*------------------------------------------------------------------------
6857 Fill in Event data and post to the Main FSM
6858 ------------------------------------------------------------------------*/
6859 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6860 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6861 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6862 wdiEventData.pCBfnc = halDumpCmdRspCb;
6863 wdiEventData.pUserData = pUserData;
6864
6865 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6866}
6867
Jeff Johnsone7245742012-09-05 17:12:55 -07006868/*============================================================================
6869
Jeff Johnson295189b2012-06-20 16:38:30 -07006870 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006871
Jeff Johnson295189b2012-06-20 16:38:30 -07006872 ============================================================================*/
6873
6874/**
6875 @brief Main FSM Start function for all states except BUSY
6876
Jeff Johnsone7245742012-09-05 17:12:55 -07006877
6878 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 wdiEV: event posted to the main DAL FSM
6880 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006881 structure
6882
Jeff Johnson295189b2012-06-20 16:38:30 -07006883 @see
6884 @return Result of the function call
6885*/
6886WDI_Status
6887WDI_PostMainEvent
6888(
Jeff Johnsone7245742012-09-05 17:12:55 -07006889 WDI_ControlBlockType* pWDICtx,
6890 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006891 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006892)
6893{
Jeff Johnsone7245742012-09-05 17:12:55 -07006894 WDI_Status wdiStatus;
6895 WDI_MainFuncType pfnWDIMainEvHdlr;
6896 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05306897 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6899
6900 /*-------------------------------------------------------------------------
6901 Sanity check
6902 -------------------------------------------------------------------------*/
6903 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6904 ( wdiEV >= WDI_MAX_EVENT ))
6905 {
6906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6907 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6908 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006909 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006910 }
6911
6912 /*Access to the global state must be locked */
6913 wpalMutexAcquire(&pWDICtx->wptMutex);
6914
6915 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006916 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006917
6918 wdiOldState = pWDICtx->uGlobalState;
6919
6920 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006921 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6922 response comes from CCPU for the request sent by host:
6923 the WDI global state will be in WDI_BUSY_ST already, so do not set it to BUSY again.
Jeff Johnson295189b2012-06-20 16:38:30 -07006924 This state will be set to WDI_STARTED_ST in WDI_MainRsp, if it is a expected response.
Jeff Johnsone7245742012-09-05 17:12:55 -07006925 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006926 CCPU:
6927 don't change the state */
6928 if ( WDI_RESPONSE_EVENT != wdiEV)
6929 {
6930 /*Transition to BUSY State - the request is now being processed by the FSM,
6931 if the request fails we shall transition back to the old state, if not
6932 the request will manage its own state transition*/
6933 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6934 }
6935 /* If the state function associated with the EV is NULL it means that this
6936 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006937 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006938 {
6939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006940 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006941 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006942 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006943 }
6944 else
6945 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05306946 if (!(failCnt & 0xF))
6947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006948 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006949 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05306950 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07006951 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006952 }
6953
6954 /* If a request handles itself well it will end up in a success or in a
6955 pending
6956 Success - means that the request was processed and the proper state
6957 transition already occurred or will occur when the resp is received
6958 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006959
Jeff Johnson295189b2012-06-20 16:38:30 -07006960 Pending - means the request could not be processed at this moment in time
6961 because the FSM was already busy so no state transition or dequeueing
6962 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006963
Jeff Johnson295189b2012-06-20 16:38:30 -07006964 Success for synchronous case means that the transition may occur and
6965 processing of pending requests may continue - so it should go through
6966 and restores the state and continue processing queued requests*/
6967 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6968 ( WDI_STATUS_PENDING != wdiStatus ))
6969 {
6970 if ( WDI_RESPONSE_EVENT != wdiEV)
6971 {
6972 /*The request has failed or could not be processed - transition back to
6973 the old state - check to see if anything was queued and try to execute
6974 The dequeue logic should post a message to a thread and return - no
6975 actual processing can occur */
6976 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6977 }
6978 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006979
Jeff Johnson295189b2012-06-20 16:38:30 -07006980 }
6981
6982 /* we have completed processing the event */
6983 wpalMutexRelease(&pWDICtx->wptMutex);
6984
Jeff Johnsone7245742012-09-05 17:12:55 -07006985 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006986
6987}/*WDI_PostMainEvent*/
6988
6989
6990/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006991 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006992--------------------------------------------------------------------------*/
6993/**
6994 @brief Main FSM Start function for all states except BUSY
6995
Jeff Johnsone7245742012-09-05 17:12:55 -07006996
6997 @param pWDICtx: pointer to the WLAN DAL context
6998 pEventData: pointer to the event information structure
6999
Jeff Johnson295189b2012-06-20 16:38:30 -07007000 @see
7001 @return Result of the function call
7002*/
7003WDI_Status
7004WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007005(
Jeff Johnson295189b2012-06-20 16:38:30 -07007006 WDI_ControlBlockType* pWDICtx,
7007 WDI_EventInfoType* pEventData
7008)
7009{
7010
7011 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007012 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007013 ----------------------------------------------------------------------*/
7014 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7015 {
7016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007017 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007018 pWDICtx, pEventData);
7019 return WDI_STATUS_E_FAILURE;
7020 }
7021
7022 wpalMutexAcquire(&pWDICtx->wptMutex);
7023
7024 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007025 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007026 ----------------------------------------------------------------------*/
7027 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7028 {
7029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7030 "Control Transport not yet Open - queueing the request");
7031
7032 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007033 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007034
7035 wpalMutexRelease(&pWDICtx->wptMutex);
7036 return WDI_STATUS_PENDING;
7037 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007038
Jeff Johnson295189b2012-06-20 16:38:30 -07007039 wpalMutexRelease(&pWDICtx->wptMutex);
7040
7041 /*Return Success*/
7042 return WDI_ProcessRequest( pWDICtx, pEventData );
7043
7044}/*WDI_MainStart*/
7045
7046/**
7047 @brief Main FSM Response function for state INIT
7048
Jeff Johnsone7245742012-09-05 17:12:55 -07007049
7050 @param pWDICtx: pointer to the WLAN DAL context
7051 pEventData: pointer to the event information structure
7052
Jeff Johnson295189b2012-06-20 16:38:30 -07007053 @see
7054 @return Result of the function call
7055*/
7056WDI_Status
7057WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007058(
Jeff Johnson295189b2012-06-20 16:38:30 -07007059 WDI_ControlBlockType* pWDICtx,
7060 WDI_EventInfoType* pEventData
7061)
7062{
7063 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007064 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007065 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007066 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007067
7068 /*Return Success*/
7069 return WDI_STATUS_E_NOT_ALLOWED;
7070}/* WDI_MainRspInit */
7071
7072/**
7073 @brief Main FSM Close function for all states except BUSY
7074
Jeff Johnsone7245742012-09-05 17:12:55 -07007075
7076 @param pWDICtx: pointer to the WLAN DAL context
7077 pEventData: pointer to the event information structure
7078
Jeff Johnson295189b2012-06-20 16:38:30 -07007079 @see
7080 @return Result of the function call
7081*/
7082WDI_Status
7083WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007084(
Jeff Johnson295189b2012-06-20 16:38:30 -07007085 WDI_ControlBlockType* pWDICtx,
7086 WDI_EventInfoType* pEventData
7087)
7088{
7089
7090 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007091 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007092 ----------------------------------------------------------------------*/
7093 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7094 {
7095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007096 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 pWDICtx, pEventData);
7098 return WDI_STATUS_E_FAILURE;
7099 }
7100
7101 /*Return Success*/
7102 return WDI_ProcessRequest( pWDICtx, pEventData );
7103
7104}/*WDI_MainClose*/
7105/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007106 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007107--------------------------------------------------------------------------*/
7108/**
7109 @brief Main FSM Start function for state STARTED
7110
Jeff Johnsone7245742012-09-05 17:12:55 -07007111
7112 @param pWDICtx: pointer to the WLAN DAL context
7113 pEventData: pointer to the event information structure
7114
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 @see
7116 @return Result of the function call
7117*/
7118WDI_Status
7119WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007120(
Jeff Johnson295189b2012-06-20 16:38:30 -07007121 WDI_ControlBlockType* pWDICtx,
7122 WDI_EventInfoType* pEventData
7123)
7124{
7125 WDI_StartRspCb wdiStartRspCb = NULL;
7126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7127
7128 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007129 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007130 ----------------------------------------------------------------------*/
7131 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7132 {
7133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007134 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007135 pWDICtx, pEventData);
7136 return WDI_STATUS_E_FAILURE;
7137 }
7138
7139 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007140 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007141 ----------------------------------------------------------------------*/
7142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007143 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007144
7145 wpalMutexAcquire(&pWDICtx->wptMutex);
7146
7147 /*Transition back to started because the post function transitioned us to
7148 busy*/
7149 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7150
7151 /*Check to see if any request is pending*/
7152 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007153
Jeff Johnson295189b2012-06-20 16:38:30 -07007154 wpalMutexRelease(&pWDICtx->wptMutex);
7155
7156 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007157 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7158
Jeff Johnson295189b2012-06-20 16:38:30 -07007159 /*Notify UMAC*/
7160 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
7161
7162 /*Return Success*/
7163 return WDI_STATUS_SUCCESS;
7164
7165}/*WDI_MainStartStarted*/
7166
7167/**
7168 @brief Main FSM Stop function for state STARTED
7169
Jeff Johnsone7245742012-09-05 17:12:55 -07007170
7171 @param pWDICtx: pointer to the WLAN DAL context
7172 pEventData: pointer to the event information structure
7173
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 @see
7175 @return Result of the function call
7176*/
7177WDI_Status
7178WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007179(
Jeff Johnson295189b2012-06-20 16:38:30 -07007180 WDI_ControlBlockType* pWDICtx,
7181 WDI_EventInfoType* pEventData
7182)
7183{
7184 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007185 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007186 ----------------------------------------------------------------------*/
7187 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7188 {
7189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007190 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007191 pWDICtx, pEventData);
7192 return WDI_STATUS_E_FAILURE;
7193 }
7194
7195 /*State at this point is BUSY - because we enter this state before posting
7196 an event to the FSM in order to prevent potential race conditions*/
7197
7198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7199 "Processing stop request in FSM");
7200
7201 /*Return Success*/
7202 return WDI_ProcessRequest( pWDICtx, pEventData );
7203
7204}/*WDI_MainStopStarted*/
7205/**
7206 @brief Main FSM Request function for state started
7207
Jeff Johnsone7245742012-09-05 17:12:55 -07007208
7209 @param pWDICtx: pointer to the WLAN DAL context
7210 pEventData: pointer to the event information structure
7211
Jeff Johnson295189b2012-06-20 16:38:30 -07007212 @see
7213 @return Result of the function call
7214*/
7215WDI_Status
7216WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007217(
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 WDI_ControlBlockType* pWDICtx,
7219 WDI_EventInfoType* pEventData
7220)
7221{
7222
7223 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007224 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007225 ----------------------------------------------------------------------*/
7226 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7227 {
7228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007229 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007230 pWDICtx, pEventData);
7231 return WDI_STATUS_E_FAILURE;
7232 }
7233
7234 /*State at this point is BUSY - because we enter this state before posting
7235 an event to the FSM in order to prevent potential race conditions*/
7236
7237 /*Return Success*/
7238 return WDI_ProcessRequest( pWDICtx, pEventData );
7239
7240}/*WDI_MainReqStarted*/
7241
7242/**
7243 @brief Main FSM Response function for all states except INIT
7244
Jeff Johnsone7245742012-09-05 17:12:55 -07007245
7246 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007247 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007248
Jeff Johnson295189b2012-06-20 16:38:30 -07007249 @see
7250 @return Result of the function call
7251*/
7252WDI_Status
7253WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007254(
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 WDI_ControlBlockType* pWDICtx,
7256 WDI_EventInfoType* pEventData
7257)
7258{
Jeff Johnsone7245742012-09-05 17:12:55 -07007259 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007260 wpt_boolean expectedResponse;
7261
7262 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007263 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007264 ----------------------------------------------------------------------*/
7265 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7266 {
7267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007268 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007269 pWDICtx, pEventData);
7270 return WDI_STATUS_E_FAILURE;
7271 }
7272
7273 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7274 {
7275 /* we received an expected response */
7276 expectedResponse = eWLAN_PAL_TRUE;
7277
7278 /*We expect that we will transition to started after this processing*/
7279 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7280
7281 /* we are no longer expecting a response */
7282 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7283 }
7284 else
7285 {
7286 /* we received an indication or unexpected response */
7287 expectedResponse = eWLAN_PAL_FALSE;
7288 /* for indications no need to update state from what it is right
7289 now, unless it explicitly does it in the indication handler (say
7290 for device failure ind) */
7291 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7292 }
7293
7294 /*Process the response and indication */
7295 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7296
7297 /*Lock the CB as we are about to do a state transition*/
7298 wpalMutexAcquire(&pWDICtx->wptMutex);
7299
7300 /*Transition to the expected state after the response processing
7301 - this should always be started state with the following exceptions:
7302 1. processing of a failed start response
7303 2. device failure detected while processing response
7304 3. stop response received*/
7305 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007306
Jeff Johnson295189b2012-06-20 16:38:30 -07007307 /*Dequeue request that may have been queued while we were waiting for the
7308 response */
7309 if ( expectedResponse )
7310 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007311 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007312 }
7313
7314 wpalMutexRelease(&pWDICtx->wptMutex);
7315
7316 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007317 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007318
7319}/*WDI_MainRsp*/
7320
7321/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007322 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007323--------------------------------------------------------------------------*/
7324/**
7325 @brief Main FSM Stop function for state STOPPED
7326
Jeff Johnsone7245742012-09-05 17:12:55 -07007327
7328 @param pWDICtx: pointer to the WLAN DAL context
7329 pEventData: pointer to the event information structure
7330
Jeff Johnson295189b2012-06-20 16:38:30 -07007331 @see
7332 @return Result of the function call
7333*/
7334WDI_Status
7335WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007336(
Jeff Johnson295189b2012-06-20 16:38:30 -07007337 WDI_ControlBlockType* pWDICtx,
7338 WDI_EventInfoType* pEventData
7339)
7340{
7341 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007342 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007343 ----------------------------------------------------------------------*/
7344 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7345 {
7346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007347 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 pWDICtx, pEventData);
7349 return WDI_STATUS_E_FAILURE;
7350 }
7351
7352 /*We should normally not get a STOP request if we are already stopped
7353 since we should normally be stopped by the UMAC. However in some
7354 error situations we put ourselves in the stopped state without the
7355 UMAC knowing, so when we get a STOP request in this state we still
7356 process it since we need to clean up the underlying state */
7357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7358 "Processing stop request while stopped in FSM");
7359
7360 /*Return Success*/
7361 return WDI_ProcessRequest( pWDICtx, pEventData );
7362
7363}/*WDI_MainStopStopped*/
7364
7365/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007366 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007367--------------------------------------------------------------------------*/
7368/**
7369 @brief Main FSM Start function for state BUSY
7370
Jeff Johnsone7245742012-09-05 17:12:55 -07007371
7372 @param pWDICtx: pointer to the WLAN DAL context
7373 pEventData: pointer to the event information structure
7374
Jeff Johnson295189b2012-06-20 16:38:30 -07007375 @see
7376 @return Result of the function call
7377*/
7378WDI_Status
7379WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007380(
Jeff Johnson295189b2012-06-20 16:38:30 -07007381 WDI_ControlBlockType* pWDICtx,
7382 WDI_EventInfoType* pEventData
7383)
7384{
7385 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007386 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007387 ----------------------------------------------------------------------*/
7388 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7389 {
7390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007391 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007392 pWDICtx, pEventData);
7393 return WDI_STATUS_E_FAILURE;
7394 }
7395
7396 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007397 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007398 ----------------------------------------------------------------------*/
7399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7400 "WDI Busy state - queue start request");
7401
7402 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007403 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007404
7405 /*Return Success*/
7406 return WDI_STATUS_PENDING;
7407}/*WDI_MainStartBusy*/
7408
7409/**
7410 @brief Main FSM Stop function for state BUSY
7411
Jeff Johnsone7245742012-09-05 17:12:55 -07007412
7413 @param pWDICtx: pointer to the WLAN DAL context
7414 pEventData: pointer to the event information structure
7415
Jeff Johnson295189b2012-06-20 16:38:30 -07007416 @see
7417 @return Result of the function call
7418*/
7419WDI_Status
7420WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007421(
Jeff Johnson295189b2012-06-20 16:38:30 -07007422 WDI_ControlBlockType* pWDICtx,
7423 WDI_EventInfoType* pEventData
7424)
7425{
7426 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 ----------------------------------------------------------------------*/
7429 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7430 {
7431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007432 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007433 pWDICtx, pEventData);
7434 return WDI_STATUS_E_FAILURE;
7435 }
7436
7437 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007438 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007439 ----------------------------------------------------------------------*/
7440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7441 "WDI Busy state - queue stop request");
7442
Jeff Johnsone7245742012-09-05 17:12:55 -07007443 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007444 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007445
Jeff Johnson295189b2012-06-20 16:38:30 -07007446}/*WDI_MainStopBusy*/
7447
7448/**
7449 @brief Main FSM Request function for state BUSY
7450
Jeff Johnsone7245742012-09-05 17:12:55 -07007451
7452 @param pWDICtx: pointer to the WLAN DAL context
7453 pEventData: pointer to the event information structure
7454
Jeff Johnson295189b2012-06-20 16:38:30 -07007455 @see
7456 @return Result of the function call
7457*/
7458WDI_Status
7459WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007460(
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 WDI_ControlBlockType* pWDICtx,
7462 WDI_EventInfoType* pEventData
7463)
7464{
7465 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007466 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007467 ----------------------------------------------------------------------*/
7468 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7469 {
7470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007471 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 pWDICtx, pEventData);
7473 return WDI_STATUS_E_FAILURE;
7474 }
7475
7476 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 ----------------------------------------------------------------------*/
7479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7480 "WDI Busy state - queue request %d because waiting for response %d",
7481 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7482
Jeff Johnsone7245742012-09-05 17:12:55 -07007483 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007484 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007485
Jeff Johnson295189b2012-06-20 16:38:30 -07007486}/*WDI_MainReqBusy*/
7487/**
7488 @brief Main FSM Close function for state BUSY
7489
Jeff Johnsone7245742012-09-05 17:12:55 -07007490
7491 @param pWDICtx: pointer to the WLAN DAL context
7492 pEventData: pointer to the event information structure
7493
Jeff Johnson295189b2012-06-20 16:38:30 -07007494 @see
7495 @return Result of the function call
7496*/
7497WDI_Status
7498WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007499(
Jeff Johnson295189b2012-06-20 16:38:30 -07007500 WDI_ControlBlockType* pWDICtx,
7501 WDI_EventInfoType* pEventData
7502)
7503{
7504 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007505 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007506 ----------------------------------------------------------------------*/
7507 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7508 {
7509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007510 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 pWDICtx, pEventData);
7512 return WDI_STATUS_E_FAILURE;
7513 }
7514
7515 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007516 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 ----------------------------------------------------------------------*/
7518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7519 "WDI Busy state - queue close request");
7520
Jeff Johnsone7245742012-09-05 17:12:55 -07007521 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007522 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007523
Jeff Johnson295189b2012-06-20 16:38:30 -07007524}/*WDI_MainCloseBusy*/
7525
7526/**
7527 @brief Main FSM Shutdown function for INIT & STARTED states
7528
7529
7530 @param pWDICtx: pointer to the WLAN DAL context
7531 pEventData: pointer to the event information structure
7532
7533 @see
7534 @return Result of the function call
7535*/
7536WDI_Status
7537WDI_MainShutdown
7538(
7539 WDI_ControlBlockType* pWDICtx,
7540 WDI_EventInfoType* pEventData
7541)
7542{
7543 /*--------------------------------------------------------------------
7544 Sanity Check
7545 ----------------------------------------------------------------------*/
7546 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7547 {
7548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007549 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007550 pWDICtx, pEventData);
7551 return WDI_STATUS_E_FAILURE;
7552 }
7553
7554 /*State at this point is BUSY - because we enter this state before posting
7555 an event to the FSM in order to prevent potential race conditions*/
7556
7557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7558 "Processing shutdown request in FSM");
7559
7560 /*Return Success*/
7561 return WDI_ProcessRequest( pWDICtx, pEventData );
7562
7563}/*WDI_MainShutdown*/
7564
7565/**
7566 @brief Main FSM Shutdown function for BUSY state
7567
7568
7569 @param pWDICtx: pointer to the WLAN DAL context
7570 pEventData: pointer to the event information structure
7571
7572 @see
7573 @return Result of the function call
7574*/
7575WDI_Status
7576WDI_MainShutdownBusy
7577(
7578 WDI_ControlBlockType* pWDICtx,
7579 WDI_EventInfoType* pEventData
7580)
7581{
7582 /*--------------------------------------------------------------------
7583 Sanity Check
7584 ----------------------------------------------------------------------*/
7585 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7586 {
7587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007588 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007589 pWDICtx, pEventData);
7590 return WDI_STATUS_E_FAILURE;
7591 }
7592
7593 /* If you are waiting for a HAL response at this stage, you are not
7594 * going to get it. Riva is already shutdown/crashed.
7595 */
7596 wpalTimerStop(&gWDICb.wptResponseTimer);
7597
7598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7599 "Processing shutdown request in FSM: Busy state ");
7600
7601 return WDI_ProcessRequest( pWDICtx, pEventData );
7602
7603}/*WDI_MainShutdownBusy*/
7604
7605
Jeff Johnsone7245742012-09-05 17:12:55 -07007606/*=======================================================================
7607
Jeff Johnson295189b2012-06-20 16:38:30 -07007608 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007609
Jeff Johnson295189b2012-06-20 16:38:30 -07007610*=======================================================================*/
7611
7612/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007613 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007614========================================================================*/
7615/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007616 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007617 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007618
7619 @param pWDICtx: pointer to the WLAN DAL context
7620 pEventData: pointer to the event information structure
7621
Jeff Johnson295189b2012-06-20 16:38:30 -07007622 @see
7623 @return Result of the function call
7624*/
7625WDI_Status
7626WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007627(
Jeff Johnson295189b2012-06-20 16:38:30 -07007628 WDI_ControlBlockType* pWDICtx,
7629 WDI_EventInfoType* pEventData
7630)
7631{
7632 WDI_StartReqParamsType* pwdiStartParams = NULL;
7633 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007634 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007635 wpt_uint16 usDataOffset = 0;
7636 wpt_uint16 usSendSize = 0;
7637
Jeff Johnsone7245742012-09-05 17:12:55 -07007638 tHalMacStartReqMsg halStartReq;
7639 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7641
7642 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007643 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007644 -------------------------------------------------------------------------*/
7645 if (( NULL == pEventData ) ||
7646 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7647 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7648 {
7649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 }
7654
7655 /*-----------------------------------------------------------------------
7656 Get message buffer
7657 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007658 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007659 pwdiStartParams->usConfigBufferLen;
7660
Jeff Johnsone7245742012-09-05 17:12:55 -07007661 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007662 usLen,
7663 &pSendBuffer, &usDataOffset, &usSendSize))||
7664 ( usSendSize < (usDataOffset + usLen )))
7665 {
7666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007667 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 pEventData, pwdiStartParams, wdiStartRspCb);
7669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007671 }
7672
7673 /*-----------------------------------------------------------------------
7674 Fill in the message
7675 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007676 halStartReq.startReqParams.driverType =
7677 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007678
Jeff Johnsone7245742012-09-05 17:12:55 -07007679 halStartReq.startReqParams.uConfigBufferLen =
7680 pwdiStartParams->usConfigBufferLen;
7681 wpalMemoryCopy( pSendBuffer+usDataOffset,
7682 &halStartReq.startReqParams,
7683 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007684
Jeff Johnsone7245742012-09-05 17:12:55 -07007685 usDataOffset += sizeof(halStartReq.startReqParams);
7686 wpalMemoryCopy( pSendBuffer+usDataOffset,
7687 pwdiStartParams->pConfigBuffer,
7688 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007689
7690 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007691 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007692
7693 /*Save Low Level Ind CB and associated user data - it will be used further
7694 on when an indication is coming from the lower MAC*/
7695 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007696 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007697
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007700 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007701 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007702 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007703 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7704
Jeff Johnsone7245742012-09-05 17:12:55 -07007705
Jeff Johnson295189b2012-06-20 16:38:30 -07007706}/*WDI_ProcessStartReq*/
7707
7708/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007709 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007710 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007711
7712 @param pWDICtx: pointer to the WLAN DAL context
7713 pEventData: pointer to the event information structure
7714
Jeff Johnson295189b2012-06-20 16:38:30 -07007715 @see
7716 @return Result of the function call
7717*/
7718WDI_Status
7719WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007720(
Jeff Johnson295189b2012-06-20 16:38:30 -07007721 WDI_ControlBlockType* pWDICtx,
7722 WDI_EventInfoType* pEventData
7723)
7724{
7725 WDI_StopReqParamsType* pwdiStopParams = NULL;
7726 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007727 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007728 wpt_uint16 usDataOffset = 0;
7729 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007730 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007731 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7733
7734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007736 -------------------------------------------------------------------------*/
7737 if (( NULL == pEventData ) ||
7738 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7739 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7740 {
7741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007743 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007744 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007745 }
7746
7747 /*-----------------------------------------------------------------------
7748 Get message buffer
7749 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 sizeof(halStopReq.stopReqParams),
7752 &pSendBuffer, &usDataOffset, &usSendSize))||
7753 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7754 {
7755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007756 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 pEventData, pwdiStopParams, wdiStopRspCb);
7758 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007759 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007760 }
7761
7762 /*-----------------------------------------------------------------------
7763 Fill in the message
7764 -----------------------------------------------------------------------*/
7765 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7766 pwdiStopParams->wdiStopReason);
7767
Jeff Johnsone7245742012-09-05 17:12:55 -07007768 wpalMemoryCopy( pSendBuffer+usDataOffset,
7769 &halStopReq.stopReqParams,
7770 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007771
7772 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007774
7775 /*! TO DO: stop the data services */
7776 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7777 {
7778 /*Stop the STA Table !UT- check this logic again
7779 It is safer to do it here than on the response - because a stop is imminent*/
7780 WDI_STATableStop(pWDICtx);
7781
7782 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007783 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7784 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007785 {
7786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7787 "WDI Init failed to reset power state event");
7788
Jeff Johnsone7245742012-09-05 17:12:55 -07007789 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007790 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007791 }
7792 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007793 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7794 if( eWLAN_PAL_STATUS_SUCCESS != status )
7795 {
7796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007797 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state", status);
Ravali85acf6b2012-12-12 14:01:38 -08007798 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007799 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007800 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007804 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7805 WDI_SET_POWER_STATE_TIMEOUT);
7806 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 {
7808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7809 "WDI Init failed to wait on an event");
7810
Jeff Johnsone7245742012-09-05 17:12:55 -07007811 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007812 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007813 }
7814 }
7815
7816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007819 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007820 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7821
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007822fail:
7823 // Release the message buffer so we don't leak
7824 wpalMemoryFree(pSendBuffer);
7825
7826failRequest:
7827 //WDA should have failure check to avoid the memory leak
7828 return WDI_STATUS_E_FAILURE;
7829
Jeff Johnson295189b2012-06-20 16:38:30 -07007830}/*WDI_ProcessStopReq*/
7831
7832/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007834 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007835
7836 @param pWDICtx: pointer to the WLAN DAL context
7837 pEventData: pointer to the event information structure
7838
Jeff Johnson295189b2012-06-20 16:38:30 -07007839 @see
7840 @return Result of the function call
7841*/
7842WDI_Status
7843WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007844(
Jeff Johnson295189b2012-06-20 16:38:30 -07007845 WDI_ControlBlockType* pWDICtx,
7846 WDI_EventInfoType* pEventData
7847)
7848{
Jeff Johnsone7245742012-09-05 17:12:55 -07007849 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7851
7852 /*Lock control block for cleanup*/
7853 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007854
Jeff Johnson295189b2012-06-20 16:38:30 -07007855 /*Clear all pending request*/
7856 WDI_ClearPendingRequests(pWDICtx);
7857
7858 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007859 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007860
7861 /* Close Data transport*/
7862 /* FTM mode does not open Data Path */
7863 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7864 {
7865 WDTS_Close(pWDICtx);
7866 }
7867
7868 /*Close the STA Table !UT- check this logic again*/
7869 WDI_STATableClose(pWDICtx);
7870
7871 /*close the PAL */
7872 wptStatus = wpalClose(pWDICtx->pPALContext);
7873 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7874 {
7875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7876 "Failed to wpal Close %d", wptStatus);
7877 WDI_ASSERT(0);
7878 }
7879
7880 /*Transition back to init state*/
7881 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7882
7883 wpalMutexRelease(&pWDICtx->wptMutex);
7884
7885 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007887
Jeff Johnsone7245742012-09-05 17:12:55 -07007888 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007889}/*WDI_ProcessCloseReq*/
7890
7891
7892/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007893 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007894===========================================================================*/
7895
7896/**
7897 @brief Process Init Scan Request function (called when Main FSM
7898 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007899
7900 @param pWDICtx: pointer to the WLAN DAL context
7901 pEventData: pointer to the event information structure
7902
Jeff Johnson295189b2012-06-20 16:38:30 -07007903 @see
7904 @return Result of the function call
7905*/
7906WDI_Status
7907WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007908(
Jeff Johnson295189b2012-06-20 16:38:30 -07007909 WDI_ControlBlockType* pWDICtx,
7910 WDI_EventInfoType* pEventData
7911)
7912{
7913 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7914 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007915 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007916 wpt_uint16 usDataOffset = 0;
7917 wpt_uint16 usSendSize = 0;
7918 wpt_uint8 i = 0;
7919
7920 tHalInitScanReqMsg halInitScanReqMsg;
7921
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007923 * It shold be removed once host and riva changes are in sync*/
7924 tHalInitScanConReqMsg halInitScanConReqMsg;
7925
7926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7927
7928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007930 -------------------------------------------------------------------------*/
7931 if (( NULL == pEventData ) ||
7932 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7933 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7934 {
7935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007936 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 }
7940
7941#if 0
7942 wpalMutexAcquire(&pWDICtx->wptMutex);
7943 /*-----------------------------------------------------------------------
7944 Check to see if SCAN is already in progress - if so reject the req
7945 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007946 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007947 -----------------------------------------------------------------------*/
7948 if ( pWDICtx->bScanInProgress )
7949 {
7950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7951 "Scan is already in progress - subsequent scan is not allowed"
7952 " until the first scan completes");
7953
7954 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007955 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007956 }
7957
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7959 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007960
7961 wpalMutexRelease(&pWDICtx->wptMutex);
7962#endif
Viral Modid86bde22012-12-10 13:09:21 -08007963 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007964 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007965 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 * It shold be removed once host and riva changes are in sync*/
7967 /*-----------------------------------------------------------------------
7968 Get message buffer
7969 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007970 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 sizeof(halInitScanConReqMsg.initScanParams),
7972 &pSendBuffer, &usDataOffset, &usSendSize))||
7973 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7974 {
7975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007976 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007977 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 }
7981
7982
7983 /*-----------------------------------------------------------------------
7984 Fill in the message
7985 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007986 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007987 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7988
7989 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7990 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7991
Jeff Johnsone7245742012-09-05 17:12:55 -07007992 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007993 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007994 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007995 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007996 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007997 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7998
7999 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8000 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8001
Jeff Johnson295189b2012-06-20 16:38:30 -07008002 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8003 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008004
Jeff Johnsone7245742012-09-05 17:12:55 -07008005 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8007
8008 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8009 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008010 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008011 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8012 }
8013
Jeff Johnsone7245742012-09-05 17:12:55 -07008014 wpalMemoryCopy( pSendBuffer+usDataOffset,
8015 &halInitScanConReqMsg.initScanParams,
8016 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 }
8018 else
8019 {
8020 /*-----------------------------------------------------------------------
8021 Get message buffer
8022 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008023 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 sizeof(halInitScanReqMsg.initScanParams),
8025 &pSendBuffer, &usDataOffset, &usSendSize))||
8026 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8027 {
8028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008029 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008030 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8031 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008033 }
8034
8035
8036 /*-----------------------------------------------------------------------
8037 Fill in the message
8038 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008039 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008040 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8041
8042 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8043 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8044
Jeff Johnsone7245742012-09-05 17:12:55 -07008045 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008046 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008047 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008048 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008049 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8051
8052 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8053 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8054
Jeff Johnsone7245742012-09-05 17:12:55 -07008055 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008056 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8057
8058 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8059 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008060 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8062 }
8063
Jeff Johnsone7245742012-09-05 17:12:55 -07008064 wpalMemoryCopy( pSendBuffer+usDataOffset,
8065 &halInitScanReqMsg.initScanParams,
8066 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 }
8068
8069 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008070 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008071
8072 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008073 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008074 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8077
8078}/*WDI_ProcessInitScanReq*/
8079
8080/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008083
8084 @param pWDICtx: pointer to the WLAN DAL context
8085 pEventData: pointer to the event information structure
8086
Jeff Johnson295189b2012-06-20 16:38:30 -07008087 @see
8088 @return Result of the function call
8089*/
8090WDI_Status
8091WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008092(
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 WDI_ControlBlockType* pWDICtx,
8094 WDI_EventInfoType* pEventData
8095)
8096{
8097 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8098 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008099 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008100 wpt_uint16 usDataOffset = 0;
8101 wpt_uint16 usSendSize = 0;
8102
Jeff Johnsone7245742012-09-05 17:12:55 -07008103 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8105
8106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008108 -------------------------------------------------------------------------*/
8109 if (( NULL == pEventData ) ||
8110 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8111 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8112 {
8113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008114 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008117 }
8118
8119#if 0
8120 wpalMutexAcquire(&pWDICtx->wptMutex);
8121 /*-----------------------------------------------------------------------
8122 Check to see if SCAN is already in progress - start scan is only
8123 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8128 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8129 {
8130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8131 "Scan start not allowed in this state %d %d",
8132 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008133
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008135 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008136 }
8137
Jeff Johnsone7245742012-09-05 17:12:55 -07008138 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008139
8140 wpalMutexRelease(&pWDICtx->wptMutex);
8141#endif
8142
8143 /*-----------------------------------------------------------------------
8144 Get message buffer
8145 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 sizeof(halStartScanReqMsg.startScanParams),
8148 &pSendBuffer, &usDataOffset, &usSendSize))||
8149 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8150 {
8151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008152 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008156 }
8157
Jeff Johnsone7245742012-09-05 17:12:55 -07008158 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008159 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008160 wpalMemoryCopy( pSendBuffer+usDataOffset,
8161 &halStartScanReqMsg.startScanParams,
8162 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008163
8164 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008165 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008166
8167 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008169 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8172}/*WDI_ProcessStartScanReq*/
8173
8174
8175/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008176 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008177 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008178
8179 @param pWDICtx: pointer to the WLAN DAL context
8180 pEventData: pointer to the event information structure
8181
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 @see
8183 @return Result of the function call
8184*/
8185WDI_Status
8186WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008187(
Jeff Johnson295189b2012-06-20 16:38:30 -07008188 WDI_ControlBlockType* pWDICtx,
8189 WDI_EventInfoType* pEventData
8190)
8191{
8192 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8193 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 wpt_uint16 usDataOffset = 0;
8196 wpt_uint16 usSendSize = 0;
8197
Jeff Johnsone7245742012-09-05 17:12:55 -07008198 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8200
8201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008203 -------------------------------------------------------------------------*/
8204 if (( NULL == pEventData ) ||
8205 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8206 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8207 {
8208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008209 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008210 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008211 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008212 }
8213
Jeff Johnsone7245742012-09-05 17:12:55 -07008214 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8215 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 * forwarded to HAL and result in hang*/
8217#if 0
8218 wpalMutexAcquire(&pWDICtx->wptMutex);
8219 /*-----------------------------------------------------------------------
8220 Check to see if SCAN is already in progress - end scan is only
8221 allowed when a scan is ongoing and the state of the scan procedure
8222 is started
8223 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8226 {
8227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8228 "End start not allowed in this state %d %d",
8229 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008230
Jeff Johnson295189b2012-06-20 16:38:30 -07008231 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008233 }
8234
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008236
8237 wpalMutexRelease(&pWDICtx->wptMutex);
8238#endif
8239
8240 /*-----------------------------------------------------------------------
8241 Get message buffer
8242 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008243 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 sizeof(halEndScanReqMsg.endScanParams),
8245 &pSendBuffer, &usDataOffset, &usSendSize))||
8246 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8247 {
8248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008249 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008250 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 }
8254
8255 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8256
Jeff Johnsone7245742012-09-05 17:12:55 -07008257 wpalMemoryCopy( pSendBuffer+usDataOffset,
8258 &halEndScanReqMsg.endScanParams,
8259 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008260
8261 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008262 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008263
8264 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008267 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008268 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8269}/*WDI_ProcessEndScanReq*/
8270
8271
8272/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008273 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008275
8276 @param pWDICtx: pointer to the WLAN DAL context
8277 pEventData: pointer to the event information structure
8278
Jeff Johnson295189b2012-06-20 16:38:30 -07008279 @see
8280 @return Result of the function call
8281*/
8282WDI_Status
8283WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008284(
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 WDI_ControlBlockType* pWDICtx,
8286 WDI_EventInfoType* pEventData
8287)
8288{
8289 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8290 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008292 wpt_uint16 usDataOffset = 0;
8293 wpt_uint16 usSendSize = 0;
8294 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008295 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8298
8299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008301 -------------------------------------------------------------------------*/
8302 if (( NULL == pEventData ) ||
8303 ( NULL == pEventData->pEventData) ||
8304 ( NULL == pEventData->pCBfnc))
8305 {
8306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008310 }
8311
8312 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8313 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008314 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8315 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008316 * forwarded to HAL and result in hang*/
8317#if 0
8318 wpalMutexAcquire(&pWDICtx->wptMutex);
8319 /*-----------------------------------------------------------------------
8320 Check to see if SCAN is already in progress
8321 Finish scan gets invoked any scan states. ie. abort scan
8322 It should be allowed in any states.
8323 -----------------------------------------------------------------------*/
8324 if ( !pWDICtx->bScanInProgress )
8325 {
8326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8327 "Finish start not allowed in this state %d",
8328 pWDICtx->bScanInProgress );
8329
8330 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008331 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008332 }
8333
8334 /*-----------------------------------------------------------------------
8335 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008336 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008337 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008338 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8339 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008340 wpalMutexRelease(&pWDICtx->wptMutex);
8341#endif
8342
8343 if ( pWDICtx->bInBmps )
8344 {
8345 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008346 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8347 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8348 {
8349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008350 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008351 WDI_ASSERT(0);
8352 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 }
8354
8355 /*-----------------------------------------------------------------------
8356 Get message buffer
8357 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008358 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 sizeof(halFinishScanReqMsg.finishScanParams),
8360 &pSendBuffer, &usDataOffset, &usSendSize))||
8361 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8362 {
8363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008364 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 }
8369
Jeff Johnsone7245742012-09-05 17:12:55 -07008370 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008371 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8372
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8375
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8378
8379 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8380 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8381
Jeff Johnsone7245742012-09-05 17:12:55 -07008382 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008384 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008387 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8388
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8391
8392 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8393 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8396 }
8397
8398 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8399 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8400
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 wpalMemoryCopy( pSendBuffer+usDataOffset,
8402 &halFinishScanReqMsg.finishScanParams,
8403 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008404
8405 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008406 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008407
8408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008409 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008410 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008411 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008412 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8413}/*WDI_ProcessFinishScanReq*/
8414
8415
8416/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008418==========================================================================*/
8419/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008420 @brief Process BSS Join for a given Session
8421
8422 @param pWDICtx: pointer to the WLAN DAL context
8423 pEventData: pointer to the event information structure
8424
Jeff Johnson295189b2012-06-20 16:38:30 -07008425 @see
8426 @return Result of the function call
8427*/
8428WDI_Status
8429WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008430(
Jeff Johnson295189b2012-06-20 16:38:30 -07008431 WDI_ControlBlockType* pWDICtx,
8432 WDI_JoinReqParamsType* pwdiJoinParams,
8433 WDI_JoinRspCb wdiJoinRspCb,
8434 void* pUserData
8435)
8436{
8437 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008438 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008439 wpt_uint16 usDataOffset = 0;
8440 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008442
Jeff Johnsone7245742012-09-05 17:12:55 -07008443 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8445
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008446 wpalMutexAcquire(&pWDICtx->wptMutex);
8447
Jeff Johnson295189b2012-06-20 16:38:30 -07008448 /*------------------------------------------------------------------------
8449 Check to see if we have any session with this BSSID already stored, we
8450 should not
8451 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8453 pwdiJoinParams->wdiReqInfo.macBSSID,
8454 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008455
8456 if ( NULL != pBSSSes )
8457 {
8458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008459 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8460 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008461
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008462 /*reset the bAssociationInProgress otherwise the next
8463 *join request will be queued*/
8464 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8465 wpalMutexRelease(&pWDICtx->wptMutex);
8466 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008467 }
8468
Jeff Johnson295189b2012-06-20 16:38:30 -07008469 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008472 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008473 if ( NULL == pBSSSes )
8474 {
8475
8476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8477 "DAL has no free sessions - cannot run another join");
8478
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008479 /*reset the bAssociationInProgress otherwise the next
8480 *join request will be queued*/
8481 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008482 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008483 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008484 }
8485
8486 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008487 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8488 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 WDI_MAC_ADDR_LEN);
8490
8491 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008494
Jeff Johnson295189b2012-06-20 16:38:30 -07008495 wpalMutexRelease(&pWDICtx->wptMutex);
8496
8497 /*-----------------------------------------------------------------------
8498 Get message buffer
8499 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008500 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 sizeof(halJoinReqMsg.joinReqParams),
8502 &pSendBuffer, &usDataOffset, &usSendSize))||
8503 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8504 {
8505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008506 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 pUserData, pwdiJoinParams, wdiJoinRspCb);
8508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008510 }
8511
8512 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008513 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008514
8515 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008516 pwdiJoinParams->wdiReqInfo.macSTASelf,
8517 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008518
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8521
8522 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8523
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008524#ifdef WLAN_FEATURE_VOWIFI
8525 halJoinReqMsg.joinReqParams.maxTxPower =
8526 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8527#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008529 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8530#endif
8531
Jeff Johnsone7245742012-09-05 17:12:55 -07008532 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8534 wdiSecondaryChannelOffset);
8535
Jeff Johnsone7245742012-09-05 17:12:55 -07008536 wpalMemoryCopy( pSendBuffer+usDataOffset,
8537 &halJoinReqMsg.joinReqParams,
8538 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008539
8540 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008542
8543 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008546 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8547 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008548
8549}/*WDI_ProcessBSSSessionJoinReq*/
8550
8551/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008552 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008553 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008554
8555 @param pWDICtx: pointer to the WLAN DAL context
8556 pEventData: pointer to the event information structure
8557
Jeff Johnson295189b2012-06-20 16:38:30 -07008558 @see
8559 @return Result of the function call
8560*/
8561WDI_Status
8562WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008563(
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 WDI_ControlBlockType* pWDICtx,
8565 WDI_EventInfoType* pEventData
8566)
8567{
8568 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8569 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8570 WDI_JoinRspCb wdiJoinRspCb = NULL;
8571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8572
8573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008574 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008575 -------------------------------------------------------------------------*/
8576 if (( NULL == pEventData ) ||
8577 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8578 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8579 {
8580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008581 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008582 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008585
Jeff Johnson295189b2012-06-20 16:38:30 -07008586 /*-------------------------------------------------------------------------
8587 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008588 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008589 -------------------------------------------------------------------------*/
8590 wpalMutexAcquire(&pWDICtx->wptMutex);
8591
8592 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8593 {
8594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8595 "Association is currently in progress, queueing new join req");
8596
8597 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008598 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 pwdiJoinParams->wdiReqInfo.macBSSID);
8600
8601 wpalMutexRelease(&pWDICtx->wptMutex);
8602
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 }
8605
8606 /*Starting a new association */
8607 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8608 wpalMutexRelease(&pWDICtx->wptMutex);
8609
8610 /*Process the Join Request*/
8611 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8612 wdiJoinRspCb,pEventData->pUserData);
8613
8614}/*WDI_ProcessJoinReq*/
8615
8616
8617/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008620
8621 @param pWDICtx: pointer to the WLAN DAL context
8622 pEventData: pointer to the event information structure
8623
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 @see
8625 @return Result of the function call
8626*/
8627WDI_Status
8628WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008629(
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 WDI_ControlBlockType* pWDICtx,
8631 WDI_EventInfoType* pEventData
8632)
8633{
8634 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8635 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008637 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 wpt_uint16 uMsgSize = 0;
8639 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008640 wpt_uint16 usDataOffset = 0;
8641 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008643
Jeff Johnsone7245742012-09-05 17:12:55 -07008644 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8646
8647 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008648 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 -------------------------------------------------------------------------*/
8650 if (( NULL == pEventData ) ||
8651 ( NULL == pEventData->pEventData ) ||
8652 ( NULL == pEventData->pCBfnc ))
8653 {
8654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008655 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008658 }
8659
Abhishek Singh6927fa02014-06-27 17:19:55 +05308660 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008661 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8662 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8663 /*-------------------------------------------------------------------------
8664 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 -------------------------------------------------------------------------*/
8667 wpalMutexAcquire(&pWDICtx->wptMutex);
8668
8669 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008672 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8673 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8674 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008675
Jeff Johnsone7245742012-09-05 17:12:55 -07008676 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008677 {
8678#ifdef WLAN_FEATURE_VOWIFI_11R
8679 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 if ( NULL == pBSSSes )
8684 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008685
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8687 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008688
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008690 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008692
Jeff Johnson295189b2012-06-20 16:38:30 -07008693 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008694 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8695 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008697
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008699 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008700 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8701#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008703 * Request in case of IBSS*/
8704 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8705 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8706 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8707 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8708 {
8709 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008710 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008712 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008713 if ( NULL == pBSSSes )
8714 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008715
Jeff Johnson295189b2012-06-20 16:38:30 -07008716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8717 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008718
Jeff Johnson295189b2012-06-20 16:38:30 -07008719 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008720 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008721 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008722
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008724 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8725 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008727
Jeff Johnson295189b2012-06-20 16:38:30 -07008728 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8731 }
8732 else
8733 {
8734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8736 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8737 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8738
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 /* for IBSS testing */
8740 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 }
8743#endif
8744 }
8745
8746 /*------------------------------------------------------------------------
8747 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008749 ------------------------------------------------------------------------*/
8750 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8751 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8753 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8754 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8755 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008756
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008758
8759 wpalMutexRelease(&pWDICtx->wptMutex);
8760
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 }
8763
8764 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008765 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8766 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 sizeof(pWDICtx->wdiCachedConfigBssReq));
8768
8769 wpalMutexRelease(&pWDICtx->wptMutex);
8770
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8772#ifdef WLAN_FEATURE_11AC
8773 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008774 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 else
8776#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008777 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008778
8779 /*-----------------------------------------------------------------------
8780 Get message buffer
8781 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008782 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008783 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8784 ( usSendSize < (usDataOffset + uMsgSize )))
8785 {
8786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008787 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 }
8792
8793 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008794#ifdef WLAN_FEATURE_11AC
8795 if (WDI_getFwWlanFeatCaps(DOT11AC))
8796 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8797 &pwdiConfigBSSParams->wdiReqInfo);
8798 else
8799#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008800 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 &pwdiConfigBSSParams->wdiReqInfo);
8802
8803 /* Need to fill in the STA Index to invalid, since at this point we have not
8804 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008806
8807 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008808 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8809
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008810#ifdef WLAN_FEATURE_11AC
8811 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8812 wpalMemoryCopy( pSendBuffer+usDataOffset,
8813 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8814 uMsgSize);
8815 }else
8816#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008817 {
8818 if ( uMsgSize <= sizeof(tConfigBssParams) )
8819 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008820 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008821 &halConfigBssReqMsg.uBssParams.configBssParams,
8822 uMsgSize);
8823 }
8824 else
8825 {
8826 return WDI_STATUS_E_FAILURE;
8827 }
8828 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008829
8830 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008831 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308832 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008836 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8837 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008838 WDI_CONFIG_BSS_RESP);
8839
8840}/*WDI_ProcessConfigBSSReq*/
8841
8842
8843/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008844 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008845 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008846
8847 @param pWDICtx: pointer to the WLAN DAL context
8848 pEventData: pointer to the event information structure
8849
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 @see
8851 @return Result of the function call
8852*/
8853WDI_Status
8854WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008855(
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 WDI_ControlBlockType* pWDICtx,
8857 WDI_EventInfoType* pEventData
8858)
8859{
8860 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8861 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008863 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 wpt_uint16 usDataOffset = 0;
8866 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008867 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008868
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8871
8872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008874 -------------------------------------------------------------------------*/
8875 if (( NULL == pEventData ) ||
8876 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8877 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8878 {
8879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008880 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008883 }
8884
8885 /*-------------------------------------------------------------------------
8886 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008887 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008888 -------------------------------------------------------------------------*/
8889 wpalMutexAcquire(&pWDICtx->wptMutex);
8890
8891 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008893 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8895 pwdiDelBSSParams->ucBssIdx,
8896 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008897
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 {
8900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 "%s: BSS does not yet exist. ucBssIdx %d",
8902 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008903
8904 wpalMutexRelease(&pWDICtx->wptMutex);
8905
8906 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008907 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008908
8909 /*------------------------------------------------------------------------
8910 Check if this BSS is being currently processed or queued,
8911 if queued - queue the new request as well
8912 ------------------------------------------------------------------------*/
8913 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8916 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8917 __func__, pwdiDelBSSParams->ucBssIdx);
8918
8919 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8920
8921 wpalMutexRelease(&pWDICtx->wptMutex);
8922
8923 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008924 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008925
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 /*-----------------------------------------------------------------------
8927 If we receive a Del BSS request for an association that is already in
8928 progress, it indicates that the assoc has failed => we no longer have
8929 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008930 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008931 -----------------------------------------------------------------------*/
8932 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8933 {
8934 /*We can switch to false here because even if a subsequent Join comes in
8935 it will only be processed when DAL transitions out of BUSY state which
8936 happens when the Del BSS request comes */
8937 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8938
8939 /*Former association is complete - prepare next pending assoc for
8940 processing */
8941 WDI_DequeueAssocRequest(pWDICtx);
8942 }
8943
8944 wpalMutexRelease(&pWDICtx->wptMutex);
8945 /*-----------------------------------------------------------------------
8946 Get message buffer
8947 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008949 sizeof(halBssReqMsg.deleteBssParams),
8950 &pSendBuffer, &usDataOffset, &usSendSize))||
8951 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8952 {
8953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008954 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 }
8959
8960 /*Fill in the message request structure*/
8961
8962 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008963 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008964
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 wpalMemoryCopy( pSendBuffer+usDataOffset,
8966 &halBssReqMsg.deleteBssParams,
8967 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008968
8969 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008970 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008971
Jeff Johnsone7245742012-09-05 17:12:55 -07008972
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008974 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008975 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8978
Jeff Johnsone7245742012-09-05 17:12:55 -07008979
Jeff Johnson295189b2012-06-20 16:38:30 -07008980}/*WDI_ProcessDelBSSReq*/
8981
8982/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008983 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008984 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008985
8986 @param pWDICtx: pointer to the WLAN DAL context
8987 pEventData: pointer to the event information structure
8988
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 @see
8990 @return Result of the function call
8991*/
8992WDI_Status
8993WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008994(
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 WDI_ControlBlockType* pWDICtx,
8996 WDI_EventInfoType* pEventData
8997)
8998{
8999 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9000 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 wpt_uint16 usDataOffset = 0;
9005 wpt_uint16 usSendSize = 0;
9006 wpt_uint16 uMsgSize = 0;
9007 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009008 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009009
Jeff Johnsone7245742012-09-05 17:12:55 -07009010 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9012
9013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009015 -------------------------------------------------------------------------*/
9016 if (( NULL == pEventData ) ||
9017 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9018 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9019 {
9020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009024 }
9025
9026 /*-------------------------------------------------------------------------
9027 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 -------------------------------------------------------------------------*/
9030 wpalMutexAcquire(&pWDICtx->wptMutex);
9031
9032 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009033 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009034 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9036 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9037 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009038
9039 if ( NULL == pBSSSes )
9040 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9042 "%s: Association sequence for this BSS does not yet exist - "
9043 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9044 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009045
9046 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009048 }
9049
9050 /*------------------------------------------------------------------------
9051 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 ------------------------------------------------------------------------*/
9054 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9055 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9057 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9058 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009059
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009061
9062 wpalMutexRelease(&pWDICtx->wptMutex);
9063
Jeff Johnsone7245742012-09-05 17:12:55 -07009064 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 }
9066
9067 /*-----------------------------------------------------------------------
9068 If Post Assoc was not yet received - the current association must
9069 be in progress
9070 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9073 {
9074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9075 "Association sequence for this BSS association no longer in "
9076 "progress - not allowed");
9077
9078 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009079 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009080 }
9081
9082 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 -----------------------------------------------------------------------*/
9085 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9086 {
9087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9088 "Post Assoc not allowed before JOIN - failing request");
9089
9090 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009092 }
9093
9094 wpalMutexRelease(&pWDICtx->wptMutex);
9095
9096 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9097 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9098 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009101 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009102 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9103 ( usSendSize < (usDataOffset + uMsgSize )))
9104 {
9105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009106 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009110 }
9111
9112 /*Copy the STA parameters */
9113 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9114 &pwdiPostAssocParams->wdiSTAParams );
9115
9116 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 WDI_STATableFindStaidByAddr(pWDICtx,
9119 pwdiPostAssocParams->wdiSTAParams.macSTA,
9120 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9121 {
9122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009123 MAC_ADDRESS_STR
9124 ": This station does not exist in the WDI Station Table",
9125 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009126 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009127 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 }
9130
9131 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 pBSSSes->ucBSSIdx;
9134
9135 /*Copy the BSS parameters */
9136 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9137 &pwdiPostAssocParams->wdiBSSParams);
9138
9139 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009140 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009141 WDI_STATableFindStaidByAddr(pWDICtx,
9142 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 {
9145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009146 MAC_ADDRESS_STR
9147 ": This station does not exist in the WDI Station Table",
9148 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009149 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009150 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 }
9153
9154 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009155 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009156 pBSSSes->ucBSSIdx;
9157
Jeff Johnsone7245742012-09-05 17:12:55 -07009158
9159 wpalMemoryCopy( pSendBuffer+usDataOffset,
9160 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9161 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009162
9163 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9164
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9166 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9167 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009168
Jeff Johnsone7245742012-09-05 17:12:55 -07009169
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009172
Jeff Johnsone7245742012-09-05 17:12:55 -07009173
9174 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009175 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009176 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009177
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309178 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009182 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009183 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9184
Jeff Johnsone7245742012-09-05 17:12:55 -07009185
Jeff Johnson295189b2012-06-20 16:38:30 -07009186}/*WDI_ProcessPostAssocReq*/
9187
9188/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009189 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009191
9192 @param pWDICtx: pointer to the WLAN DAL context
9193 pEventData: pointer to the event information structure
9194
Jeff Johnson295189b2012-06-20 16:38:30 -07009195 @see
9196 @return Result of the function call
9197*/
9198WDI_Status
9199WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009200(
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 WDI_ControlBlockType* pWDICtx,
9202 WDI_EventInfoType* pEventData
9203)
9204{
9205 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9206 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 wpt_uint16 usDataOffset = 0;
9211 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009212 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009213 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9214
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9217
9218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 -------------------------------------------------------------------------*/
9221 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9222 ( NULL == pEventData->pCBfnc ))
9223 {
9224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009228 }
9229
9230 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9231 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9232 /*-------------------------------------------------------------------------
9233 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009234 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009235 -------------------------------------------------------------------------*/
9236 wpalMutexAcquire(&pWDICtx->wptMutex);
9237
9238 /*------------------------------------------------------------------------
9239 Find the BSS for which the request is made and identify WDI session
9240 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009241 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9242 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009243 &macBSSID))
9244 {
9245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009246 "This station does not exist in the WDI Station Table %d",
9247 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009250 }
9251
Jeff Johnsone7245742012-09-05 17:12:55 -07009252 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9253 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9256 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9257 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009258
9259 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009260 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 }
9262
9263 /*------------------------------------------------------------------------
9264 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009265 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009266 ------------------------------------------------------------------------*/
9267 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9268 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9270 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9271 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009272
Jeff Johnsone7245742012-09-05 17:12:55 -07009273 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009274 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009275 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009276 }
9277
9278 wpalMutexRelease(&pWDICtx->wptMutex);
9279 /*-----------------------------------------------------------------------
9280 Get message buffer
9281 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 sizeof(halDelStaReqMsg.delStaParams),
9284 &pSendBuffer, &usDataOffset, &usSendSize))||
9285 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9286 {
9287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009288 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009289 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 }
9293
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9295 wpalMemoryCopy( pSendBuffer+usDataOffset,
9296 &halDelStaReqMsg.delStaParams,
9297 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009298
9299 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009301
9302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009303 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009306 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9307
9308}/*WDI_ProcessDelSTAReq*/
9309
9310
9311/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009313==========================================================================*/
9314/**
9315 @brief Process Set BSS Key Request function (called when Main FSM
9316 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009317
9318 @param pWDICtx: pointer to the WLAN DAL context
9319 pEventData: pointer to the event information structure
9320
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 @see
9322 @return Result of the function call
9323*/
9324WDI_Status
9325WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009326(
Jeff Johnson295189b2012-06-20 16:38:30 -07009327 WDI_ControlBlockType* pWDICtx,
9328 WDI_EventInfoType* pEventData
9329)
9330{
9331 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9332 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009334 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 wpt_uint16 usDataOffset = 0;
9337 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009338 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009339 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9340 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309341 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009342
9343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9344
9345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009347 -------------------------------------------------------------------------*/
9348 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9349 ( NULL == pEventData->pCBfnc ))
9350 {
9351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009352 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009355 }
9356
9357 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9358 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9359 /*-------------------------------------------------------------------------
9360 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 -------------------------------------------------------------------------*/
9363 wpalMutexAcquire(&pWDICtx->wptMutex);
9364
9365 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009367 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009368 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9369 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9370 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009371
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 {
9374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009375 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9376 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009377
9378 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 }
9381
9382 /*------------------------------------------------------------------------
9383 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 ------------------------------------------------------------------------*/
9386 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9387 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9389 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9390 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009391
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009395 }
9396
9397
9398 wpalMutexRelease(&pWDICtx->wptMutex);
9399 /*-----------------------------------------------------------------------
9400 Get message buffer
9401 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009403 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9404 &pSendBuffer, &usDataOffset, &usSendSize))||
9405 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9406 {
9407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009408 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009409 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009412 }
9413
9414 /*-----------------------------------------------------------------------
9415 Copy the Key parameters into the HAL message
9416 -----------------------------------------------------------------------*/
9417
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009419
Jeff Johnsone7245742012-09-05 17:12:55 -07009420 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009421 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9422
Jeff Johnsone7245742012-09-05 17:12:55 -07009423 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009424 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9425
9426 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9427 keyIndex++)
9428 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009429 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009430 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9431 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9432 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9433 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9434 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309435
9436 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9437 {
9438 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9439 {
9440 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9441 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9442 }
9443
9444 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9445 {
9446 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9447 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9448 }
9449
9450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9451 "%s: Negated Keys", __func__);
9452 }
9453 else
9454 {
9455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9456 "%s: No change in Keys", __func__);
9457 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309460 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9461 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9462 WDI_MAX_KEY_LENGTH);
9463 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009464 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309468 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009469
9470 wpalMemoryCopy( pSendBuffer+usDataOffset,
9471 &halSetBssKeyReqMsg.setBssKeyParams,
9472 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009473
9474 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009476
9477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9481 wdiSetBSSKeyRspCb, pEventData->pUserData,
9482 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009483
9484}/*WDI_ProcessSetBssKeyReq*/
9485
9486/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009489
9490 @param pWDICtx: pointer to the WLAN DAL context
9491 pEventData: pointer to the event information structure
9492
Jeff Johnson295189b2012-06-20 16:38:30 -07009493 @see
9494 @return Result of the function call
9495*/
9496WDI_Status
9497WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009498(
Jeff Johnson295189b2012-06-20 16:38:30 -07009499 WDI_ControlBlockType* pWDICtx,
9500 WDI_EventInfoType* pEventData
9501)
9502{
9503 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9504 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 wpt_uint16 usDataOffset = 0;
9509 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009511 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9513
9514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009516 -------------------------------------------------------------------------*/
9517 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9518 ( NULL == pEventData->pCBfnc ))
9519 {
9520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 }
9525
9526 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9527 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9528 /*-------------------------------------------------------------------------
9529 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009530 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009531 -------------------------------------------------------------------------*/
9532 wpalMutexAcquire(&pWDICtx->wptMutex);
9533
9534 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009536 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9538 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9539 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009540
Jeff Johnsone7245742012-09-05 17:12:55 -07009541 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009542 {
9543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009544 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9545 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009546
9547 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009548 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009549 }
9550
9551 /*------------------------------------------------------------------------
9552 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 ------------------------------------------------------------------------*/
9555 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9556 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9558 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9559 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009560
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 }
9565
9566
9567 wpalMutexRelease(&pWDICtx->wptMutex);
9568
9569 /*-----------------------------------------------------------------------
9570 Get message buffer
9571 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9574 &pSendBuffer, &usDataOffset, &usSendSize))||
9575 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9576 {
9577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009578 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 }
9583 /*-----------------------------------------------------------------------
9584 Copy the Key parameters into the HAL message
9585 -----------------------------------------------------------------------*/
9586 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9587
Jeff Johnsone7245742012-09-05 17:12:55 -07009588 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9590
9591 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9592
Jeff Johnsone7245742012-09-05 17:12:55 -07009593 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009594 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9595
Jeff Johnsone7245742012-09-05 17:12:55 -07009596 wpalMemoryCopy( pSendBuffer+usDataOffset,
9597 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9598 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009599
9600 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009602
9603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009609}/*WDI_ProcessRemoveBssKeyReq*/
9610
9611/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009613 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009614
9615 @param pWDICtx: pointer to the WLAN DAL context
9616 pEventData: pointer to the event information structure
9617
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 @see
9619 @return Result of the function call
9620*/
9621WDI_Status
9622WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009623(
Jeff Johnson295189b2012-06-20 16:38:30 -07009624 WDI_ControlBlockType* pWDICtx,
9625 WDI_EventInfoType* pEventData
9626)
9627{
9628 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9629 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9630 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009632 wpt_uint16 usDataOffset = 0;
9633 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009634 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9638 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309639 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009640
9641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9642
9643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009645 -------------------------------------------------------------------------*/
9646 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9647 ( NULL == pEventData->pCBfnc ))
9648 {
9649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009653 }
9654
9655 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9656 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9657 /*-------------------------------------------------------------------------
9658 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 -------------------------------------------------------------------------*/
9661 wpalMutexAcquire(&pWDICtx->wptMutex);
9662
9663 /*------------------------------------------------------------------------
9664 Find the BSS for which the request is made and identify WDI session
9665 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9667 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009668 &macBSSID))
9669 {
9670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009671 "This station does not exist in the WDI Station Table %d",
9672 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009673 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009675 }
9676
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9678 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9681 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9682 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009683
9684 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009687
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 /*------------------------------------------------------------------------
9689 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 ------------------------------------------------------------------------*/
9692 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9693 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9695 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9696 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009697
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 }
9702
9703
9704 wpalMutexRelease(&pWDICtx->wptMutex);
9705 /*-----------------------------------------------------------------------
9706 Get message buffer
9707 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9710 &pSendBuffer, &usDataOffset, &usSendSize))||
9711 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9712 {
9713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009714 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009718 }
9719 /*-----------------------------------------------------------------------
9720 Copy the STA Key parameters into the HAL message
9721 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009722 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009723 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9724
Jeff Johnsone7245742012-09-05 17:12:55 -07009725 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009726 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9727
9728 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9729
9730 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9731
9732 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9733
Jeff Johnson295189b2012-06-20 16:38:30 -07009734 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9735 keyIndex++)
9736 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009737 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009738 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9739 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9740 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9741 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9742 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309743
9744 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9745 {
9746 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9747 {
9748 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9749 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9750 }
9751
9752 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9753 {
9754 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9755 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9756 }
9757
9758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9759 "%s: Negated Keys", __func__);
9760 }
9761 else
9762 {
9763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9764 "%s: No change in Keys", __func__);
9765 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009766 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009767 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309768 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9769 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9770 WDI_MAX_KEY_LENGTH);
9771 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009772 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009773 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009774 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009775 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309776 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009777
Jeff Johnsone7245742012-09-05 17:12:55 -07009778 wpalMemoryCopy( pSendBuffer+usDataOffset,
9779 &halSetStaKeyReqMsg.setStaKeyParams,
9780 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009781
9782 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309784 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9789 wdiSetSTAKeyRspCb, pEventData->pUserData,
9790 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009791
9792}/*WDI_ProcessSetSTAKeyReq*/
9793
9794/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009797
9798 @param pWDICtx: pointer to the WLAN DAL context
9799 pEventData: pointer to the event information structure
9800
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 @see
9802 @return Result of the function call
9803*/
9804WDI_Status
9805WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009806(
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 WDI_ControlBlockType* pWDICtx,
9808 WDI_EventInfoType* pEventData
9809)
9810{
9811 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9812 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9813 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 wpt_uint16 usDataOffset = 0;
9816 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009818 wpt_macAddr macBSSID;
9819 wpt_uint8 ucCurrentBSSSesIdx;
9820 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9822
9823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009825 -------------------------------------------------------------------------*/
9826 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9827 ( NULL == pEventData->pCBfnc ))
9828 {
9829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009830 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 }
9834
9835 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9836 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9837 /*-------------------------------------------------------------------------
9838 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 -------------------------------------------------------------------------*/
9841 wpalMutexAcquire(&pWDICtx->wptMutex);
9842
9843 /*------------------------------------------------------------------------
9844 Find the BSS for which the request is made and identify WDI session
9845 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9847 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009848 &macBSSID))
9849 {
9850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009851 "This station does not exist in the WDI Station Table %d",
9852 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009855 }
9856
Jeff Johnsone7245742012-09-05 17:12:55 -07009857 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9858 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9861 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9862 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009863
9864 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009865 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009866 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009867
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 /*------------------------------------------------------------------------
9869 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009870 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 ------------------------------------------------------------------------*/
9872 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9873 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9875 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9876 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009877
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 }
9882
9883
9884
9885 wpalMutexRelease(&pWDICtx->wptMutex);
9886 /*-----------------------------------------------------------------------
9887 Get message buffer
9888 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009889 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009890 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9891 &pSendBuffer, &usDataOffset, &usSendSize))||
9892 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9893 {
9894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009895 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009896 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 }
9900
9901 /*-----------------------------------------------------------------------
9902 Copy the Key parameters into the HAL message
9903 -----------------------------------------------------------------------*/
9904
Jeff Johnsone7245742012-09-05 17:12:55 -07009905 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009906 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9907
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009909 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9910
Jeff Johnsone7245742012-09-05 17:12:55 -07009911 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9913
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9916
Jeff Johnsone7245742012-09-05 17:12:55 -07009917 wpalMemoryCopy( pSendBuffer+usDataOffset,
9918 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9919 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009920
9921 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009922 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009923
9924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009928 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009930
9931}/*WDI_ProcessRemoveSTAKeyReq*/
9932
9933/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009936
9937 @param pWDICtx: pointer to the WLAN DAL context
9938 pEventData: pointer to the event information structure
9939
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 @see
9941 @return Result of the function call
9942*/
9943WDI_Status
9944WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009945(
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 WDI_ControlBlockType* pWDICtx,
9947 WDI_EventInfoType* pEventData
9948)
9949{
9950 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9951 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9952 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009954 wpt_uint16 usDataOffset = 0;
9955 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009956 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009957 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009958 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009959 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9960 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309961 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009962
9963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9964
9965 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009966 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009967 -------------------------------------------------------------------------*/
9968 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9969 ( NULL == pEventData->pCBfnc ))
9970 {
9971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009972 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009975 }
9976
9977 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9978 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9979 /*-------------------------------------------------------------------------
9980 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 -------------------------------------------------------------------------*/
9983 wpalMutexAcquire(&pWDICtx->wptMutex);
9984
9985 /*------------------------------------------------------------------------
9986 Find the BSS for which the request is made and identify WDI session
9987 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009988 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9989 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 &macBSSID))
9991 {
9992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009993 "This station does not exist in the WDI Station Table %d",
9994 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009997 }
9998
Jeff Johnsone7245742012-09-05 17:12:55 -07009999 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10000 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010001 {
10002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010003 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010004 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010005
10006 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010007 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010008 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010009
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 /*------------------------------------------------------------------------
10011 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010012 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 ------------------------------------------------------------------------*/
10014 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10015 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10017 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10018 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010019
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 }
10024
10025
10026 wpalMutexRelease(&pWDICtx->wptMutex);
10027 /*-----------------------------------------------------------------------
10028 Get message buffer
10029 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010030 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010031 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10032 &pSendBuffer, &usDataOffset, &usSendSize))||
10033 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10034 {
10035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010036 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010040 }
10041 /*-----------------------------------------------------------------------
10042 Copy the STA Key parameters into the HAL message
10043 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010044 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10046
Jeff Johnsone7245742012-09-05 17:12:55 -070010047 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010048 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10049
10050 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10051
10052 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10053
10054 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10055
Jeff Johnson295189b2012-06-20 16:38:30 -070010056 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10057 keyIndex++)
10058 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010059 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10061 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10062 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10063 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10064 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010065
10066 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10067 {
10068 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10069 {
10070 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10071 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10072 }
10073
10074 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10075 {
10076 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10077 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10078 }
10079
10080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10081 "%s: Negated Keys", __func__);
10082 }
10083 else
10084 {
10085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10086 "%s: No change in Keys", __func__);
10087 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010088 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010089 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010090 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10091 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10092 WDI_MAX_KEY_LENGTH);
10093 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010094 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010098 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010099 wpalMemoryCopy( pSendBuffer+usDataOffset,
10100 &halSetStaKeyReqMsg.setStaKeyParams,
10101 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010102
10103 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010104 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010105
10106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010107 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010108 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010109 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10110 wdiSetSTAKeyRspCb, pEventData->pUserData,
10111 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010112
10113}/*WDI_ProcessSetSTABcastKeyReq*/
10114
10115/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010116 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010117 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010118
10119 @param pWDICtx: pointer to the WLAN DAL context
10120 pEventData: pointer to the event information structure
10121
Jeff Johnson295189b2012-06-20 16:38:30 -070010122 @see
10123 @return Result of the function call
10124*/
10125WDI_Status
10126WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010127(
Jeff Johnson295189b2012-06-20 16:38:30 -070010128 WDI_ControlBlockType* pWDICtx,
10129 WDI_EventInfoType* pEventData
10130)
10131{
10132 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10133 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10134 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010135 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010136 wpt_uint16 usDataOffset = 0;
10137 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010138 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010139 wpt_macAddr macBSSID;
10140 wpt_uint8 ucCurrentBSSSesIdx;
10141 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10143
10144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010145 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010146 -------------------------------------------------------------------------*/
10147 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10148 ( NULL == pEventData->pCBfnc ))
10149 {
10150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010151 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010154 }
10155
10156 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10157 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10158 /*-------------------------------------------------------------------------
10159 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010160 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010161 -------------------------------------------------------------------------*/
10162 wpalMutexAcquire(&pWDICtx->wptMutex);
10163
10164 /*------------------------------------------------------------------------
10165 Find the BSS for which the request is made and identify WDI session
10166 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010167 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10168 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 &macBSSID))
10170 {
10171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010172 "This station does not exist in the WDI Station Table %d",
10173 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 }
10177
Jeff Johnsone7245742012-09-05 17:12:55 -070010178 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10179 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010180 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10182 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10183 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010184
10185 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010188
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 /*------------------------------------------------------------------------
10190 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010192 ------------------------------------------------------------------------*/
10193 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10194 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10196 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10197 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010198
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010201 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010202 }
10203
10204
10205
10206 wpalMutexRelease(&pWDICtx->wptMutex);
10207 /*-----------------------------------------------------------------------
10208 Get message buffer
10209 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010211 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10212 &pSendBuffer, &usDataOffset, &usSendSize))||
10213 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10214 {
10215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010216 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010220 }
10221
10222 /*-----------------------------------------------------------------------
10223 Copy the Key parameters into the HAL message
10224 -----------------------------------------------------------------------*/
10225
Jeff Johnsone7245742012-09-05 17:12:55 -070010226 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010227 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10228
Jeff Johnsone7245742012-09-05 17:12:55 -070010229 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010230 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10231
Jeff Johnsone7245742012-09-05 17:12:55 -070010232 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010233 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10234
Jeff Johnsone7245742012-09-05 17:12:55 -070010235 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10237
Jeff Johnsone7245742012-09-05 17:12:55 -070010238 wpalMemoryCopy( pSendBuffer+usDataOffset,
10239 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10240 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010241
10242 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010243 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010244
10245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010246 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010248 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010249 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010250 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010251
10252}/*WDI_ProcessRemoveSTABcastKeyReq*/
10253
10254/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010255 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010256==========================================================================*/
10257/**
10258 @brief Process Add TSpec Request function (called when Main FSM
10259 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010260
10261 @param pWDICtx: pointer to the WLAN DAL context
10262 pEventData: pointer to the event information structure
10263
Jeff Johnson295189b2012-06-20 16:38:30 -070010264 @see
10265 @return Result of the function call
10266*/
10267WDI_Status
10268WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010269(
Jeff Johnson295189b2012-06-20 16:38:30 -070010270 WDI_ControlBlockType* pWDICtx,
10271 WDI_EventInfoType* pEventData
10272)
10273{
10274 WDI_AddTSReqParamsType* pwdiAddTSParams;
10275 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010276 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010277 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010278 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010279 wpt_uint16 usDataOffset = 0;
10280 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010281 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010282 wpt_macAddr macBSSID;
10283 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010284
Jeff Johnson295189b2012-06-20 16:38:30 -070010285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10286
10287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010289 -------------------------------------------------------------------------*/
10290 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10291 ( NULL == pEventData->pCBfnc ))
10292 {
10293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010294 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 }
10298
10299 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10300 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10301 /*-------------------------------------------------------------------------
10302 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 -------------------------------------------------------------------------*/
10305 wpalMutexAcquire(&pWDICtx->wptMutex);
10306
10307 /*------------------------------------------------------------------------
10308 Find the BSS for which the request is made and identify WDI session
10309 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010310 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10311 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 &macBSSID))
10313 {
10314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010315 "This station does not exist in the WDI Station Table %d",
10316 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010317 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 }
10320
Jeff Johnsone7245742012-09-05 17:12:55 -070010321 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10322 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010323 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10325 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10326 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010327
10328 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010330 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010331
Jeff Johnson295189b2012-06-20 16:38:30 -070010332 /*------------------------------------------------------------------------
10333 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010334 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010335 ------------------------------------------------------------------------*/
10336 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10337 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10339 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10340 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010341
Jeff Johnsone7245742012-09-05 17:12:55 -070010342 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010343 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010344 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010345 }
10346
10347 wpalMutexRelease(&pWDICtx->wptMutex);
10348 /*-----------------------------------------------------------------------
10349 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010351 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010352 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10353 sizeof(halAddTsParams),
10354 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010355 &usSendSize))||
10356 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10357 {
10358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010359 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 }
10364
10365 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10366 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10367
10368 //TSPEC IE
10369 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10370 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010371 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010372 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010373 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010374 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010375 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010376 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010377 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010378 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010379 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010380 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010381 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010382 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010383 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010387 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010389 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010390 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010391 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010392 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010393 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010396 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010397 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010398 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010399 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010400 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10401
10402 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010403 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010404 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010405 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010407 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010408 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010409 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010410 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010411 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010413 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010414 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010415 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010416 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10417
10418 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010421 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010422 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10423
Jeff Johnsone7245742012-09-05 17:12:55 -070010424 wpalMemoryCopy( pSendBuffer+usDataOffset,
10425 &halAddTsParams,
10426 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010427
10428 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010430
10431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010433 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010434 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010435 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010436 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010437}/*WDI_ProcessAddTSpecReq*/
10438
10439
10440/**
10441 @brief Process Del TSpec Request function (called when Main FSM
10442 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010443
10444 @param pWDICtx: pointer to the WLAN DAL context
10445 pEventData: pointer to the event information structure
10446
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 @see
10448 @return Result of the function call
10449*/
10450WDI_Status
10451WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010452(
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 WDI_ControlBlockType* pWDICtx,
10454 WDI_EventInfoType* pEventData
10455)
10456{
10457 WDI_DelTSReqParamsType* pwdiDelTSParams;
10458 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010459 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010461 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010462 wpt_uint16 usDataOffset = 0;
10463 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010464 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10466
10467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010469 -------------------------------------------------------------------------*/
10470 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10471 ( NULL == pEventData->pCBfnc ))
10472 {
10473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010477 }
10478
10479 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10480 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10481
10482 /*-------------------------------------------------------------------------
10483 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010484 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 -------------------------------------------------------------------------*/
10486 wpalMutexAcquire(&pWDICtx->wptMutex);
10487
10488 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010489 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010490 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010491 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10492 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10493 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010494
Jeff Johnsone7245742012-09-05 17:12:55 -070010495 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010496 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10498 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10499 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10500
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010502 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010503 }
10504
10505 /*------------------------------------------------------------------------
10506 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010507 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010508 ------------------------------------------------------------------------*/
10509 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10510 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10512 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10513 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010514
Jeff Johnsone7245742012-09-05 17:12:55 -070010515 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010516 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010517 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 }
10519
10520
10521 wpalMutexRelease(&pWDICtx->wptMutex);
10522 /*-----------------------------------------------------------------------
10523 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010526 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10528 &pSendBuffer, &usDataOffset, &usSendSize))||
10529 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10530 {
10531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010532 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010536 }
10537
Jeff Johnsone7245742012-09-05 17:12:55 -070010538 wpalMemoryCopy( pSendBuffer+usDataOffset,
10539 &pwdiDelTSParams->wdiDelTSInfo,
10540 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010541
10542 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010544
10545 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010546 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010547 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010548 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10549 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010550}/*WDI_ProcessDelTSpecReq*/
10551
10552/**
10553 @brief Process Update EDCA Params Request function (called when
10554 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010555
10556 @param pWDICtx: pointer to the WLAN DAL context
10557 pEventData: pointer to the event information structure
10558
Jeff Johnson295189b2012-06-20 16:38:30 -070010559 @see
10560 @return Result of the function call
10561*/
10562WDI_Status
10563WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010564(
Jeff Johnson295189b2012-06-20 16:38:30 -070010565 WDI_ControlBlockType* pWDICtx,
10566 WDI_EventInfoType* pEventData
10567)
10568{
10569 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10570 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010571 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010572 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010573 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010574 wpt_uint16 usDataOffset = 0;
10575 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10578
10579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010581 -------------------------------------------------------------------------*/
10582 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10583 ( NULL == pEventData->pCBfnc ))
10584 {
10585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010589 }
10590
10591 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10592 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10593 /*-------------------------------------------------------------------------
10594 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010595 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010596 -------------------------------------------------------------------------*/
10597 wpalMutexAcquire(&pWDICtx->wptMutex);
10598
10599 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010600 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010602 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10603 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10604 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010605
Jeff Johnsone7245742012-09-05 17:12:55 -070010606 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010607 {
10608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010609 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10610 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010611
10612 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010613 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010614 }
10615
10616 /*------------------------------------------------------------------------
10617 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010618 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010619 ------------------------------------------------------------------------*/
10620 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10621 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10623 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10624 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010625
Jeff Johnsone7245742012-09-05 17:12:55 -070010626 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010627 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010628 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 }
10630
10631
10632 wpalMutexRelease(&pWDICtx->wptMutex);
10633 /*-----------------------------------------------------------------------
10634 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010635 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010636 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010637 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10639 &pSendBuffer, &usDataOffset, &usSendSize))||
10640 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10641 {
10642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010643 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010647 }
10648
Jeff Johnsone7245742012-09-05 17:12:55 -070010649 wpalMemoryCopy( pSendBuffer+usDataOffset,
10650 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10651 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010652
10653 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010654 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010655
10656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010657 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010658 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010659 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10660 wdiUpdateEDCARspCb, pEventData->pUserData,
10661 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010662}/*WDI_ProcessUpdateEDCAParamsReq*/
10663
10664/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010665 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010666 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010667
10668 @param pWDICtx: pointer to the WLAN DAL context
10669 pEventData: pointer to the event information structure
10670
Jeff Johnson295189b2012-06-20 16:38:30 -070010671 @see
10672 @return Result of the function call
10673*/
10674WDI_Status
10675WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010676(
Jeff Johnson295189b2012-06-20 16:38:30 -070010677 WDI_ControlBlockType* pWDICtx,
10678 WDI_EventInfoType* pEventData
10679)
10680{
10681 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10682 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010683 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010684 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010685 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010686 wpt_uint16 usDataOffset = 0;
10687 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 wpt_macAddr macBSSID;
10690
10691 tAddBASessionReqMsg halAddBASessionReq;
10692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10693
10694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 -------------------------------------------------------------------------*/
10697 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10698 ( NULL == pEventData->pCBfnc ))
10699 {
10700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010704 }
10705
Jeff Johnsone7245742012-09-05 17:12:55 -070010706 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010707 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010708 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10710 /*-------------------------------------------------------------------------
10711 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010712 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010713 -------------------------------------------------------------------------*/
10714 wpalMutexAcquire(&pWDICtx->wptMutex);
10715
10716 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010718 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10720 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010721 &macBSSID))
10722 {
10723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010724 "This station does not exist in the WDI Station Table %d",
10725 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010726 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010728 }
10729
10730
Jeff Johnsone7245742012-09-05 17:12:55 -070010731 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010732
Jeff Johnsone7245742012-09-05 17:12:55 -070010733 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010734 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10736 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10737 __func__, MAC_ADDR_ARRAY(macBSSID));
10738
Jeff Johnson295189b2012-06-20 16:38:30 -070010739 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010740 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 }
10742
10743 /*------------------------------------------------------------------------
10744 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010745 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 ------------------------------------------------------------------------*/
10747 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10748 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10750 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10751 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010752
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010754 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 }
10757
10758
10759 wpalMutexRelease(&pWDICtx->wptMutex);
10760 /*-----------------------------------------------------------------------
10761 Get message buffer
10762 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10764 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010765 sizeof(halAddBASessionReq.addBASessionParams),
10766 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010767 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10769 {
10770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010771 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010772 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010775 }
10776
10777 halAddBASessionReq.addBASessionParams.staIdx =
10778 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10779 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10780 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10781 WDI_MAC_ADDR_LEN);
10782 halAddBASessionReq.addBASessionParams.baTID =
10783 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10784 halAddBASessionReq.addBASessionParams.baPolicy =
10785 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10786 halAddBASessionReq.addBASessionParams.baBufferSize =
10787 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10788 halAddBASessionReq.addBASessionParams.baTimeout =
10789 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10790 halAddBASessionReq.addBASessionParams.baSSN =
10791 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10792 halAddBASessionReq.addBASessionParams.baDirection =
10793 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10794
Jeff Johnsone7245742012-09-05 17:12:55 -070010795 wpalMemoryCopy( pSendBuffer+usDataOffset,
10796 &halAddBASessionReq.addBASessionParams,
10797 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010798
10799 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010801
10802 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010803 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010804 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010805 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10806 wdiAddBASessionRspCb, pEventData->pUserData,
10807 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010808}/*WDI_ProcessAddBASessionReq*/
10809
10810/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010811 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010812 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010813
10814 @param pWDICtx: pointer to the WLAN DAL context
10815 pEventData: pointer to the event information structure
10816
Jeff Johnson295189b2012-06-20 16:38:30 -070010817 @see
10818 @return Result of the function call
10819*/
10820WDI_Status
10821WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010822(
Jeff Johnson295189b2012-06-20 16:38:30 -070010823 WDI_ControlBlockType* pWDICtx,
10824 WDI_EventInfoType* pEventData
10825)
10826{
10827 WDI_DelBAReqParamsType* pwdiDelBAParams;
10828 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010829 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010830 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010831 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 wpt_uint16 usDataOffset = 0;
10833 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010834 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 wpt_macAddr macBSSID;
10836 tDelBAParams halDelBAparam;
10837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10838
10839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010840 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010841 -------------------------------------------------------------------------*/
10842 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10843 ( NULL == pEventData->pCBfnc ))
10844 {
10845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010846 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010849 }
10850
10851 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10852 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10853 /*-------------------------------------------------------------------------
10854 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010855 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010856 -------------------------------------------------------------------------*/
10857 wpalMutexAcquire(&pWDICtx->wptMutex);
10858
10859 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010860 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010861 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10863 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010864 &macBSSID))
10865 {
10866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010867 "This station does not exist in the WDI Station Table %d",
10868 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010871 }
10872
Jeff Johnsone7245742012-09-05 17:12:55 -070010873 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010874
Jeff Johnsone7245742012-09-05 17:12:55 -070010875 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010876 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10878 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10879 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010880
10881 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010882 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010883 }
10884
10885 /*------------------------------------------------------------------------
10886 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010887 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010888 ------------------------------------------------------------------------*/
10889 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10890 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10892 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10893 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010894
Jeff Johnsone7245742012-09-05 17:12:55 -070010895 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010897 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010898 }
10899
10900 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010901 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010902 sizeof(halDelBAparam),
10903 &pSendBuffer, &usDataOffset, &usSendSize))||
10904 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10905 {
10906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010907 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010908 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10909 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010911 }
10912
10913 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10914 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10915 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10916
Jeff Johnsone7245742012-09-05 17:12:55 -070010917 wpalMemoryCopy( pSendBuffer+usDataOffset,
10918 &halDelBAparam,
10919 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010920
10921 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010923
10924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10928 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010929}/*WDI_ProcessDelBAReq*/
10930
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010931#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010932
10933WDI_Status
10934WDI_ProcessTSMStatsReq
10935(
10936 WDI_ControlBlockType* pWDICtx,
10937 WDI_EventInfoType* pEventData
10938)
10939{
10940 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10941 WDI_TsmRspCb wdiTSMRspCb;
10942 wpt_uint8 ucCurrentBSSSesIdx = 0;
10943 WDI_BSSSessionType* pBSSSes = NULL;
10944 wpt_uint8* pSendBuffer = NULL;
10945 wpt_uint16 usDataOffset = 0;
10946 wpt_uint16 usSendSize = 0;
10947 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10948 tTsmStatsParams halTsmStatsReqParams = {0};
10949
10950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10951
10952 /*-------------------------------------------------------------------------
10953 Sanity check
10954 -------------------------------------------------------------------------*/
10955 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10956 ( NULL == pEventData->pCBfnc ))
10957 {
10958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010959 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010960 WDI_ASSERT(0);
10961 return WDI_STATUS_E_FAILURE;
10962 }
10963
10964 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10965 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10966 /*-------------------------------------------------------------------------
10967 Check to see if we are in the middle of an association, if so queue, if
10968 not it means it is free to process request
10969 -------------------------------------------------------------------------*/
10970 wpalMutexAcquire(&pWDICtx->wptMutex);
10971
10972 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10973 if ( NULL == pBSSSes )
10974 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10976 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10977 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010978
10979 wpalMutexRelease(&pWDICtx->wptMutex);
10980 return WDI_STATUS_E_NOT_ALLOWED;
10981 }
10982
10983 /*------------------------------------------------------------------------
10984 Check if this BSS is being currently processed or queued,
10985 if queued - queue the new request as well
10986 ------------------------------------------------------------------------*/
10987 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10988 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010990 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010991 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010992
10993 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10994 wpalMutexRelease(&pWDICtx->wptMutex);
10995 return wdiStatus;
10996 }
10997
10998 wpalMutexRelease(&pWDICtx->wptMutex);
10999 /*-----------------------------------------------------------------------
11000 Get message buffer
11001 ! TO DO : proper conversion into the HAL Message Request Format
11002 -----------------------------------------------------------------------*/
11003 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11004 sizeof(halTsmStatsReqParams),
11005 &pSendBuffer, &usDataOffset, &usSendSize))||
11006 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11007 {
11008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011009 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011010 pEventData, pwdiTSMParams, wdiTSMRspCb);
11011 WDI_ASSERT(0);
11012 return WDI_STATUS_E_FAILURE;
11013 }
11014
11015 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11016 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11017 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11018 WDI_MAC_ADDR_LEN);
11019 wpalMemoryCopy( pSendBuffer+usDataOffset,
11020 &halTsmStatsReqParams,
11021 sizeof(halTsmStatsReqParams));
11022
11023 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11024 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11025
11026 /*-------------------------------------------------------------------------
11027 Send TSM Stats Request to HAL
11028 -------------------------------------------------------------------------*/
11029 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11030 wdiTSMRspCb, pEventData->pUserData,
11031 WDI_TSM_STATS_RESP);
11032}/*WDI_ProcessTSMStatsReq*/
11033
11034#endif
11035
11036
11037/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011038 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011039 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011040
11041 @param pWDICtx: pointer to the WLAN DAL context
11042 pEventData: pointer to the event information structure
11043
Jeff Johnson295189b2012-06-20 16:38:30 -070011044 @see
11045 @return Result of the function call
11046*/
11047WDI_Status
11048WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011049(
Jeff Johnson295189b2012-06-20 16:38:30 -070011050 WDI_ControlBlockType* pWDICtx,
11051 WDI_EventInfoType* pEventData
11052)
11053{
11054 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11055 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011056 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011057 wpt_uint16 usDataOffset = 0;
11058 wpt_uint16 usSendSize = 0;
11059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11060
11061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011062 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011063 -------------------------------------------------------------------------*/
11064 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11065 ( NULL == pEventData->pCBfnc ))
11066 {
11067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011068 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011071 }
11072
11073 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11074 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11075 /*-----------------------------------------------------------------------
11076 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011077 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011078 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011079 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11081 &pSendBuffer, &usDataOffset, &usSendSize))||
11082 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11083 {
11084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011085 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011086 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011089 }
11090
Jeff Johnsone7245742012-09-05 17:12:55 -070011091 wpalMemoryCopy( pSendBuffer+usDataOffset,
11092 &pwdiFlushAcParams->wdiFlushAcInfo,
11093 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011094
11095 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011096 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011097
11098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011099 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011100 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011101 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11102 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011103}/*WDI_ProcessFlushAcReq*/
11104
11105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011106 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011107 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011108
11109 @param pWDICtx: pointer to the WLAN DAL context
11110 pEventData: pointer to the event information structure
11111
Jeff Johnson295189b2012-06-20 16:38:30 -070011112 @see
11113 @return Result of the function call
11114*/
11115WDI_Status
11116WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011117(
Jeff Johnson295189b2012-06-20 16:38:30 -070011118 WDI_ControlBlockType* pWDICtx,
11119 WDI_EventInfoType* pEventData
11120)
11121{
11122 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11123 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011124 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011125 wpt_uint16 usDataOffset = 0;
11126 wpt_uint16 usSendSize = 0;
11127
11128 tBtAmpEventMsg haltBtAmpEventMsg;
11129 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11130
11131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011132 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011133 -------------------------------------------------------------------------*/
11134 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11135 ( NULL == pEventData->pCBfnc ))
11136 {
11137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011138 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011139 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011140 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011141 }
11142
11143 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11144 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11145 /*-----------------------------------------------------------------------
11146 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011147 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011148 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011149 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011150 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11151 &pSendBuffer, &usDataOffset, &usSendSize))||
11152 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11153 {
11154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011155 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011156 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011159 }
11160
Jeff Johnsone7245742012-09-05 17:12:55 -070011161 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011162 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011163 wpalMemoryCopy( pSendBuffer+usDataOffset,
11164 &haltBtAmpEventMsg.btAmpEventParams,
11165 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011166
11167 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011169
11170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011171 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011172 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011173 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11174 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011175}/*WDI_ProcessBtAmpEventReq*/
11176
11177/**
11178 @brief Process Add STA self Request function (called when Main FSM
11179 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011180
11181 @param pWDICtx: pointer to the WLAN DAL context
11182 pEventData: pointer to the event information structure
11183
Jeff Johnson295189b2012-06-20 16:38:30 -070011184 @see
11185 @return Result of the function call
11186*/
11187WDI_Status
11188WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011189(
Jeff Johnson295189b2012-06-20 16:38:30 -070011190 WDI_ControlBlockType* pWDICtx,
11191 WDI_EventInfoType* pEventData
11192)
11193{
11194 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11195 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011196 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011197 wpt_uint16 usDataOffset = 0;
11198 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011199 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11201
11202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011203 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 -------------------------------------------------------------------------*/
11205 if (( NULL == pEventData ) ||
11206 ( NULL == pEventData->pEventData) ||
11207 ( NULL == pEventData->pCBfnc))
11208 {
11209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011210 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011211 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011213 }
11214
Jeff Johnsone7245742012-09-05 17:12:55 -070011215 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011216 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011217 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011218 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11219 /*-----------------------------------------------------------------------
11220 Get message buffer
11221 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011222 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11223 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011224 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011225 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011226 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011227 {
11228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011229 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011230 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011233 }
11234
11235 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011236 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011237 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11238
Jeff Johnsone7245742012-09-05 17:12:55 -070011239 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011240 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11241 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11242 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11243 {
11244 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11245 }
11246 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11247 VOS_P2P_CLIENT_MODE) ||
11248 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11249 VOS_P2P_DEVICE))
11250 {
11251 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11252 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011253 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011254 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011255
11256 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011257 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011258
11259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011260 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011261 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011262 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11263 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11264 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011265}/*WDI_ProcessAddSTASelfReq*/
11266
11267
11268
11269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011270 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011271 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011272
11273 @param pWDICtx: pointer to the WLAN DAL context
11274 pEventData: pointer to the event information structure
11275
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 @see
11277 @return Result of the function call
11278*/
11279WDI_Status
11280WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011281(
Jeff Johnson295189b2012-06-20 16:38:30 -070011282 WDI_ControlBlockType* pWDICtx,
11283 WDI_EventInfoType* pEventData
11284)
11285{
11286 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11287 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011288 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011289 wpt_uint16 usDataOffset = 0;
11290 wpt_uint16 usSendSize = 0;
11291 tDelStaSelfParams halSetDelSelfSTAParams;
11292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11293
11294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011295 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011296 -------------------------------------------------------------------------*/
11297 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11298 ( NULL == pEventData->pCBfnc ))
11299 {
11300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011304 }
11305
Jeff Johnsone7245742012-09-05 17:12:55 -070011306 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011307 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11308 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11309
11310 /*-----------------------------------------------------------------------
11311 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011312 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011313 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011314 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011315 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11316 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011317 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011318 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11319 {
11320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011321 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011322 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011325 }
11326
Jeff Johnsone7245742012-09-05 17:12:55 -070011327 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011328 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11329
Jeff Johnsone7245742012-09-05 17:12:55 -070011330 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11331 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011332
11333 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011334 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011335
11336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011339 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11340 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011341 WDI_DEL_STA_SELF_RESP);
11342
11343}
11344
Jeff Johnsone7245742012-09-05 17:12:55 -070011345#ifdef FEATURE_OEM_DATA_SUPPORT
11346/**
11347 @brief Process Start Oem Data Request function (called when Main
11348 FSM allows it)
11349
11350 @param pWDICtx: pointer to the WLAN DAL context
11351 pEventData: pointer to the event information structure
11352
11353 @see
11354 @return Result of the function call
11355*/
11356WDI_Status
11357WDI_ProcessStartOemDataReq
11358(
11359 WDI_ControlBlockType* pWDICtx,
11360 WDI_EventInfoType* pEventData
11361)
11362{
11363 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11364 WDI_oemDataRspCb wdiOemDataRspCb;
11365 wpt_uint8* pSendBuffer = NULL;
11366 wpt_uint16 usDataOffset = 0;
11367 wpt_uint16 usSendSize = 0;
11368 wpt_uint16 reqLen;
11369 tStartOemDataReqParams* halStartOemDataReqParams;
11370
11371 /*-------------------------------------------------------------------------
11372 Sanity check
11373 -------------------------------------------------------------------------*/
11374 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11375 ( NULL == pEventData->pCBfnc ))
11376 {
11377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011378 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 WDI_ASSERT(0);
11380 return WDI_STATUS_E_FAILURE;
11381 }
11382
11383 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11384 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11385
11386 /*-----------------------------------------------------------------------
11387 Get message buffer
11388 -----------------------------------------------------------------------*/
11389
11390 reqLen = sizeof(tStartOemDataReqParams);
11391
11392 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11393 WDI_START_OEM_DATA_REQ, reqLen,
11394 &pSendBuffer, &usDataOffset, &usSendSize))||
11395 (usSendSize < (usDataOffset + reqLen)))
11396 {
11397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011398 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011399 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11400 WDI_ASSERT(0);
11401 return WDI_STATUS_E_FAILURE;
11402 }
11403
11404 //copying WDI OEM DATA REQ PARAMS to shared memory
11405 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11406
11407 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11408 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11409
11410 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11411 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11412
11413 /*-------------------------------------------------------------------------
11414 Send Start Request to HAL
11415 -------------------------------------------------------------------------*/
11416 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11417 wdiOemDataRspCb, pEventData->pUserData,
11418 WDI_START_OEM_DATA_RESP);
11419}/*WDI_ProcessStartOemDataReq*/
11420#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011421
11422/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011423 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011424 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011425
11426 @param pWDICtx: pointer to the WLAN DAL context
11427 pEventData: pointer to the event information structure
11428
Jeff Johnson295189b2012-06-20 16:38:30 -070011429 @see
11430 @return Result of the function call
11431*/
11432WDI_Status
11433WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011434(
Jeff Johnson295189b2012-06-20 16:38:30 -070011435 WDI_ControlBlockType* pWDICtx,
11436 WDI_EventInfoType* pEventData
11437)
11438{
11439 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11440 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011441 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011442 wpt_uint16 usDataOffset = 0;
11443 wpt_uint16 usSendSize = 0;
11444 tHalWlanHostResumeReqParam halResumeReqParams;
11445
11446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11447
11448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011450 -------------------------------------------------------------------------*/
11451 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11452 ( NULL == pEventData->pCBfnc ))
11453 {
11454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011455 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011458 }
11459
11460 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11461 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11462
11463 /*-----------------------------------------------------------------------
11464 Get message buffer
11465 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011466 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11468 &pSendBuffer, &usDataOffset, &usSendSize))||
11469 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11470 {
11471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011472 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011476 }
11477
Jeff Johnsone7245742012-09-05 17:12:55 -070011478 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011479 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011480
11481 wpalMemoryCopy( pSendBuffer+usDataOffset,
11482 &halResumeReqParams,
11483 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011484
11485 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011486 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011487
11488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011489 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011490 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011491 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11492 wdiHostResumeRspCb, pEventData->pUserData,
11493 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011494}/*WDI_ProcessHostResumeReq*/
11495
11496/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011497 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011498 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011499
11500 @param pWDICtx: pointer to the WLAN DAL context
11501 pEventData: pointer to the event information structure
11502
Jeff Johnson295189b2012-06-20 16:38:30 -070011503 @see
11504 @return Result of the function call
11505*/
11506WDI_Status
11507WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011508(
Jeff Johnson295189b2012-06-20 16:38:30 -070011509 WDI_ControlBlockType* pWDICtx,
11510 WDI_EventInfoType* pEventData
11511)
11512{
11513 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11514 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011515 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011516 wpt_uint16 usDataOffset = 0;
11517 wpt_uint16 usSendSize = 0;
11518 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11520
11521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011522 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011523 -------------------------------------------------------------------------*/
11524 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11525 ( NULL == pEventData->pCBfnc ))
11526 {
11527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011528 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011529 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011530 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011531 }
11532
11533 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11534 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011535
Jeff Johnson295189b2012-06-20 16:38:30 -070011536 /*-----------------------------------------------------------------------
11537 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011538 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011539 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 sizeof(halTxPerTrackingReqParam),
11542 &pSendBuffer, &usDataOffset, &usSendSize))||
11543 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11544 {
11545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011546 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011551
Jeff Johnson295189b2012-06-20 16:38:30 -070011552 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11553 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11554 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11555 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011556
11557 wpalMemoryCopy( pSendBuffer+usDataOffset,
11558 &halTxPerTrackingReqParam,
11559 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011560
11561 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011562 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011563
11564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011565 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011566 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11568 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011569}/*WDI_ProcessSetTxPerTrackingReq*/
11570
11571/*=========================================================================
11572 Indications
11573=========================================================================*/
11574
11575/**
11576 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011577
11578 @param pWDICtx: pointer to the WLAN DAL context
11579 pEventData: pointer to the event information structure
11580
Jeff Johnson295189b2012-06-20 16:38:30 -070011581 @see
11582 @return Result of the function call
11583*/
11584WDI_Status
11585WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011586(
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 WDI_ControlBlockType* pWDICtx,
11588 WDI_EventInfoType* pEventData
11589)
11590{
11591 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011592 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011593 wpt_uint16 usDataOffset = 0;
11594 wpt_uint16 usSendSize = 0;
11595 WDI_Status wdiStatus;
11596 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11597 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11598
11599 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011600 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 -------------------------------------------------------------------------*/
11602 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11603 {
11604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011605 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011608 }
11609
11610 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11611
11612 /*-----------------------------------------------------------------------
11613 Get message buffer
11614 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011615 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11616 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011617 sizeof(halWlanSuspendIndparams),
11618 &pSendBuffer, &usDataOffset, &usSendSize))||
11619 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11620 {
11621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11622 "Unable to get send buffer in Suspend Ind ");
11623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011625 }
11626
11627 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11628 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11629
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011631 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011632
Jeff Johnsone7245742012-09-05 17:12:55 -070011633 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11634 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011635
11636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011637 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011638 -------------------------------------------------------------------------*/
11639 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011640 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011641
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011643 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11644}/*WDI_ProcessHostSuspendInd*/
11645
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011646
11647
11648/**
11649 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11650
11651 @param pWDICtx: pointer to the WLAN DAL context
11652 pEventData: pointer to the event information structure
11653
11654 @see
11655 @return Result of the function call
11656*/
11657WDI_Status
11658WDI_ProcessTrafficStatsInd
11659(
11660 WDI_ControlBlockType* pWDICtx,
11661 WDI_EventInfoType* pEventData
11662)
11663{
11664 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11665 wpt_uint8* pSendBuffer = NULL;
11666 wpt_uint16 usDataOffset = 0;
11667 wpt_uint16 usSendSize = 0;
11668 WDI_Status wdiStatus;
11669 tStatsClassBIndParams* pStatsClassBIndParams;
11670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11671
11672 /*-------------------------------------------------------------------------
11673 Sanity check
11674 -------------------------------------------------------------------------*/
11675 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11676 {
11677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11678 "%s: Invalid parameters in Traffic Stats ind",__func__);
11679 WDI_ASSERT(0);
11680 return WDI_STATUS_E_FAILURE;
11681 }
11682
11683 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11684
11685 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11686 {
11687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11688 "%s: Invalid parameters in Traffic Stats ind",__func__);
11689 WDI_ASSERT(0);
11690 return WDI_STATUS_E_FAILURE;
11691 }
11692
11693 /*-----------------------------------------------------------------------
11694 Get message buffer
11695 -----------------------------------------------------------------------*/
11696 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11697 WDI_TRAFFIC_STATS_IND,
11698 sizeof(tStatsClassBIndParams),
11699 &pSendBuffer, &usDataOffset, &usSendSize))||
11700 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11701 {
11702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11703 "Unable to get send buffer in Traffic Stats Ind ");
11704 WDI_ASSERT(0);
11705 return WDI_STATUS_E_FAILURE;
11706 }
11707
11708 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11709
11710 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11711
11712 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11713 pTrafficStatsIndParams->pTrafficStats,
11714 pTrafficStatsIndParams->length);
11715
11716 /*-------------------------------------------------------------------------
11717 Send Suspend Request to HAL
11718 -------------------------------------------------------------------------*/
11719 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11720 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11721
11722 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11723 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11724}/*WDI_ProcessTrafficStatsInd*/
11725
Chet Lanctot186b5732013-03-18 10:26:30 -070011726#ifdef WLAN_FEATURE_11W
11727/**
11728 @brief Process Exclude Unencrypted Indications function (called
11729 when Main FSM allows it)
11730
11731 @param pWDICtx: pointer to the WLAN DAL context
11732 pEventData: pointer to the event information structure
11733
11734 @see
11735 @return Result of the function call
11736*/
11737WDI_Status
11738WDI_ProcessExcludeUnencryptInd
11739(
11740 WDI_ControlBlockType* pWDICtx,
11741 WDI_EventInfoType* pEventData
11742)
11743{
11744 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11745 wpt_uint8* pSendBuffer = NULL;
11746 wpt_uint16 usDataOffset = 0;
11747 wpt_uint16 usSendSize = 0;
11748 WDI_Status wdiStatus;
11749 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11751
11752 /*-------------------------------------------------------------------------
11753 Sanity check
11754 -------------------------------------------------------------------------*/
11755 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11756 {
11757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11758 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11759 WDI_ASSERT(0);
11760 return WDI_STATUS_E_FAILURE;
11761 }
11762
11763 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11764
11765 /*-----------------------------------------------------------------------
11766 Get message buffer
11767 -----------------------------------------------------------------------*/
11768 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11769 WDI_EXCLUDE_UNENCRYPTED_IND,
11770 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11771 &pSendBuffer, &usDataOffset, &usSendSize))||
11772 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11773 {
11774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11775 "Unable to get send buffer in Exclude Unencrypted Ind ");
11776 WDI_ASSERT(0);
11777 return WDI_STATUS_E_FAILURE;
11778 }
11779
11780 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11781
11782 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11783
11784 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11785 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11786
11787 /*-------------------------------------------------------------------------
11788 Send Suspend Request to HAL
11789 -------------------------------------------------------------------------*/
11790 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11791 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11792
11793 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11794 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11795}/*WDI_ProcessExcludeUnencryptInd*/
11796#endif
11797
Yue Mab9c86f42013-08-14 15:59:08 -070011798/**
11799 @brief Process Add Periodic Tx Pattern Indication function (called when
11800 Main FSM allows it)
11801
11802 @param pWDICtx: pointer to the WLAN DAL context
11803 pEventData: pointer to the event information structure
11804
11805 @see
11806 @return Result of the function call
11807*/
11808WDI_Status
11809WDI_ProcessAddPeriodicTxPtrnInd
11810(
11811 WDI_ControlBlockType* pWDICtx,
11812 WDI_EventInfoType* pEventData
11813)
11814{
11815 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11816 wpt_uint8* pSendBuffer = NULL;
11817 wpt_uint16 usDataOffset = 0;
11818 wpt_uint16 usSendSize = 0;
11819 WDI_Status wdiStatus;
11820 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11821 wpt_uint8 selfStaIdx = 0;
11822
11823 /*-------------------------------------------------------------------------
11824 Sanity check
11825 -------------------------------------------------------------------------*/
11826 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11827 {
11828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11829 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11830 WDI_ASSERT(0);
11831 return WDI_STATUS_E_FAILURE;
11832 }
11833
11834 pAddPeriodicTxPtrnParams =
11835 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11836
11837 /*------------------------------------------------------------------------
11838 Get message buffer
11839 ------------------------------------------------------------------------*/
11840 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11841 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11842 &pSendBuffer, &usDataOffset, &usSendSize))||
11843 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11844 {
11845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11846 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11847 __func__);
11848 WDI_ASSERT(0);
11849 return WDI_STATUS_E_FAILURE;
11850 }
11851
11852 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11853
11854 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11855 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11856 &selfStaIdx))
11857 {
11858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11859 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011860 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011861
11862 return WDI_STATUS_E_FAILURE;
11863 }
11864
11865 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11866 halAddPeriodicTxPtrn->ucPtrnId =
11867 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11868 halAddPeriodicTxPtrn->usPtrnSize =
11869 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11870 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11871 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11872
11873 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11874 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11875 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11876
11877 /*-------------------------------------------------------------------------
11878 Send Indication to HAL
11879 -------------------------------------------------------------------------*/
11880 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11881 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11882
11883 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11884
11885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11886 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11887
11888 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11889} /* WDI_ProcessAddPeriodicTxPtrnInd */
11890
11891/**
11892 @brief Process Delete Periodic Tx Pattern Indication function (called when
11893 Main FSM allows it)
11894
11895 @param pWDICtx: pointer to the WLAN DAL context
11896 pEventData: pointer to the event information structure
11897
11898 @see
11899 @return Result of the function call
11900*/
11901WDI_Status
11902WDI_ProcessDelPeriodicTxPtrnInd
11903(
11904 WDI_ControlBlockType* pWDICtx,
11905 WDI_EventInfoType* pEventData
11906)
11907{
11908 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11909 wpt_uint8* pSendBuffer = NULL;
11910 wpt_uint16 usDataOffset = 0;
11911 wpt_uint16 usSendSize = 0;
11912 WDI_Status wdiStatus;
11913 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11914 wpt_uint8 selfStaIdx = 0;
11915
11916 /*-------------------------------------------------------------------------
11917 Sanity check
11918 -------------------------------------------------------------------------*/
11919 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11920 {
11921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11922 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11923 WDI_ASSERT(0);
11924 return WDI_STATUS_E_FAILURE;
11925 }
11926
11927 pDelPeriodicTxPtrnParams =
11928 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11929
11930 /*------------------------------------------------------------------------
11931 Get message buffer
11932 ------------------------------------------------------------------------*/
11933 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11934 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11935 &pSendBuffer, &usDataOffset, &usSendSize))||
11936 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11937 {
11938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11939 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11940 __func__);
11941 WDI_ASSERT(0);
11942 return WDI_STATUS_E_FAILURE;
11943 }
11944
11945 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11946
11947 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11948 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11949 &selfStaIdx))
11950 {
11951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11952 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011953 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011954
11955 return WDI_STATUS_E_FAILURE;
11956 }
11957
11958 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11959 halDelPeriodicTxPtrn->uPatternIdBitmap =
11960 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11961
11962 /*-------------------------------------------------------------------------
11963 Send Indication to HAL
11964 -------------------------------------------------------------------------*/
11965 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11966 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11967
11968 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11969
11970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11971 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11972
11973 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11974} /* WDI_ProcessDelPeriodicTxPtrnInd */
11975
Jeff Johnson295189b2012-06-20 16:38:30 -070011976/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011978==========================================================================*/
11979/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011980 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011982
11983 @param pWDICtx: pointer to the WLAN DAL context
11984 pEventData: pointer to the event information structure
11985
Jeff Johnson295189b2012-06-20 16:38:30 -070011986 @see
11987 @return Result of the function call
11988*/
11989WDI_Status
11990WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011991(
Jeff Johnson295189b2012-06-20 16:38:30 -070011992 WDI_ControlBlockType* pWDICtx,
11993 WDI_EventInfoType* pEventData
11994)
11995{
11996 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11997 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011998 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011999 wpt_uint16 usDataOffset = 0;
12000 wpt_uint16 usSendSize = 0;
12001 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12003
12004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012006 -------------------------------------------------------------------------*/
12007 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12008 ( NULL == pEventData->pCBfnc ))
12009 {
12010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012014 }
12015
12016 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12017 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12018 /*-----------------------------------------------------------------------
12019 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012021 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012022 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 sizeof(halSwitchChannelReq.switchChannelParams),
12024 &pSendBuffer, &usDataOffset, &usSendSize))||
12025 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12026 {
12027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012028 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012029 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012032 }
12033
Jeff Johnsone7245742012-09-05 17:12:55 -070012034 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012035 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012036#ifndef WLAN_FEATURE_VOWIFI
12037 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012038 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12039#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12042
12043#ifdef WLAN_FEATURE_VOWIFI
12044 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12047 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12048 WDI_MAC_ADDR_LEN);
12049 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12050 pwdiSwitchChParams->wdiChInfo.macBSSId,
12051 WDI_MAC_ADDR_LEN);
12052#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012053 wpalMemoryCopy( pSendBuffer+usDataOffset,
12054 &halSwitchChannelReq.switchChannelParams,
12055 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012056
12057 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012058 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012059
12060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012061 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012062 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012063 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12064 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012065}/*WDI_ProcessChannelSwitchReq*/
12066
12067/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012068 @brief Process Channel Switch Request function (called when
12069 Main FSM allows it)
12070
12071 @param pWDICtx: pointer to the WLAN DAL context
12072 pEventData: pointer to the event information structure
12073
12074 @see
12075 @return Result of the function call
12076*/
12077WDI_Status WDI_ProcessChannelSwitchReq_V1
12078(
12079 WDI_ControlBlockType* pWDICtx,
12080 WDI_EventInfoType* pEventData
12081)
12082{
12083 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12084 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12085 wpt_uint8* pSendBuffer = NULL;
12086 wpt_uint16 usDataOffset = 0;
12087 wpt_uint16 usSendSize = 0;
12088 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12090
12091 /*-------------------------------------------------------------------------
12092 Sanity check
12093 -------------------------------------------------------------------------*/
12094 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12095 ( NULL == pEventData->pCBfnc ))
12096 {
12097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12098 "%s: Invalid parameters", __func__);
12099 WDI_ASSERT(0);
12100 return WDI_STATUS_E_FAILURE;
12101 }
12102
12103 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12104 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12105 /*-----------------------------------------------------------------------
12106 Get message buffer
12107 ! TO DO : proper conversion into the HAL Message Request Format
12108 -----------------------------------------------------------------------*/
12109 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12110 WDI_CH_SWITCH_REQ_V1,
12111 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12112 &pSendBuffer, &usDataOffset, &usSendSize))||
12113 ( usSendSize < (usDataOffset +
12114 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12115 {
12116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12117 "Unable to get send buffer in channel switch req %p %p %p",
12118 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12119 WDI_ASSERT(0);
12120 return WDI_STATUS_E_FAILURE;
12121 }
12122
12123 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12124 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12125
12126 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12127 pwdiSwitchChParams->wdiChInfo.ucChannel;
12128#ifndef WLAN_FEATURE_VOWIFI
12129 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12130 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12131#endif
12132 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12133 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12134
12135#ifdef WLAN_FEATURE_VOWIFI
12136 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12137 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12138 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12139 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12140 WDI_MAC_ADDR_LEN);
12141 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12142 pwdiSwitchChParams->wdiChInfo.macBSSId,
12143 WDI_MAC_ADDR_LEN);
12144#endif
12145 wpalMemoryCopy( pSendBuffer+usDataOffset,
12146 &halSwitchChannelReq.switchChannelParams_V1,
12147 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12148
12149 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12150 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12151
12152 /*-------------------------------------------------------------------------
12153 Send Switch Channel Request to HAL
12154 -------------------------------------------------------------------------*/
12155 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12156 wdiSwitchChRspCb, pEventData->pUserData,
12157 WDI_CH_SWITCH_RESP_V1);
12158}/*WDI_ProcessChannelSwitchReq_V1*/
12159
12160/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012161 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012162 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012163
12164 @param pWDICtx: pointer to the WLAN DAL context
12165 pEventData: pointer to the event information structure
12166
Jeff Johnson295189b2012-06-20 16:38:30 -070012167 @see
12168 @return Result of the function call
12169*/
12170WDI_Status
12171WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012172(
Jeff Johnson295189b2012-06-20 16:38:30 -070012173 WDI_ControlBlockType* pWDICtx,
12174 WDI_EventInfoType* pEventData
12175)
12176{
12177 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12178 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012179 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012180 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012181 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 wpt_uint16 usDataOffset = 0;
12183 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012184 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012185
Jeff Johnsone7245742012-09-05 17:12:55 -070012186 tConfigStaReqMsg halConfigStaReqMsg;
12187 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12189
12190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012191 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012192 -------------------------------------------------------------------------*/
12193 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12194 ( NULL == pEventData->pCBfnc ))
12195 {
12196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012197 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012198 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012200 }
12201
Abhishek Singh6927fa02014-06-27 17:19:55 +053012202 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012203 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12204 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12205 /*-------------------------------------------------------------------------
12206 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 -------------------------------------------------------------------------*/
12209 wpalMutexAcquire(&pWDICtx->wptMutex);
12210
12211 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012212 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012213 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012214 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12215 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12216 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012217
Jeff Johnsone7245742012-09-05 17:12:55 -070012218 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012219 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12221 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12222 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012223
12224 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012225 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012226 }
12227
12228 /*------------------------------------------------------------------------
12229 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012230 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012231 ------------------------------------------------------------------------*/
12232 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12233 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12235 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12236 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012237
Jeff Johnsone7245742012-09-05 17:12:55 -070012238 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012239 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012240 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012241 }
12242
12243 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012244
12245 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12246#ifdef WLAN_FEATURE_11AC
12247 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012248 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012249 else
12250#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012251 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012252
Jeff Johnson295189b2012-06-20 16:38:30 -070012253 /*-----------------------------------------------------------------------
12254 Get message buffer
12255 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12257 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012258 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012259 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012260 {
12261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012262 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012263 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12264 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012266 }
12267
12268 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012269 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012270 &pwdiConfigSTAParams->wdiReqInfo);
12271
12272 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12273 {
12274 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012275 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012276 WDI_STATableFindStaidByAddr(pWDICtx,
12277 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012278 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012279 {
12280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012281 MAC_ADDRESS_STR
12282 ": This station does not exist in the WDI Station Table",
12283 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012284 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012285 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012287 }
12288 }
12289 else
12290 {
12291 /* Need to fill in the STA Index to invalid, since at this point we have not
12292 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012293 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012294 }
12295
12296 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012298
Jeff Johnsone7245742012-09-05 17:12:55 -070012299 wpalMemoryCopy( pSendBuffer+usDataOffset,
12300 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012301 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012302
12303 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012304 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012305
Jeff Johnsone7245742012-09-05 17:12:55 -070012306 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12307 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 sizeof(pWDICtx->wdiCachedConfigStaReq));
12309
12310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012312 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012313 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12314 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012315}/*WDI_ProcessConfigStaReq*/
12316
12317
12318/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012321
12322 @param pWDICtx: pointer to the WLAN DAL context
12323 pEventData: pointer to the event information structure
12324
Jeff Johnson295189b2012-06-20 16:38:30 -070012325 @see
12326 @return Result of the function call
12327*/
12328WDI_Status
12329WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012330(
Jeff Johnson295189b2012-06-20 16:38:30 -070012331 WDI_ControlBlockType* pWDICtx,
12332 WDI_EventInfoType* pEventData
12333)
12334{
12335 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12336 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012337 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012338 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012339 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 wpt_uint16 usDataOffset = 0;
12341 wpt_uint16 usSendSize = 0;
12342 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012343 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12345
12346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012348 -------------------------------------------------------------------------*/
12349 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12350 ( NULL == pEventData->pCBfnc ))
12351 {
12352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012353 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012356 }
12357
12358 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12359 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12360 /*-------------------------------------------------------------------------
12361 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012362 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012363 -------------------------------------------------------------------------*/
12364 wpalMutexAcquire(&pWDICtx->wptMutex);
12365
12366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012367 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012368 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012369 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12370 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12371 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012372
Jeff Johnsone7245742012-09-05 17:12:55 -070012373 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012374 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012376 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12377 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012378 }
12379 else
12380 {
12381 /*------------------------------------------------------------------------
12382 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012383 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 ------------------------------------------------------------------------*/
12385 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12386 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12388 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12389 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12390
12391 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012393 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012394 }
12395 }
12396 /* If the link is set to enter IDLE - the Session allocated for this BSS
12397 will be deleted on the Set Link State response coming from HAL
12398 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012400 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12401
12402 wpalMutexRelease(&pWDICtx->wptMutex);
12403 /*-----------------------------------------------------------------------
12404 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012405 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012406 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012407
12408 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012409 sizeof(halLinkStateReqMsg),
12410 &pSendBuffer, &usDataOffset, &usSendSize))||
12411 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12412 {
12413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012414 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012415 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012418 }
12419
12420 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12421 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12422
12423 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12424 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12425
Jeff Johnsone7245742012-09-05 17:12:55 -070012426 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012427 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12428
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 wpalMemoryCopy( pSendBuffer+usDataOffset,
12430 &halLinkStateReqMsg,
12431 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012432
12433 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012434 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012435
12436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012437 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012438 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012439 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12440 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012441}/*WDI_ProcessSetLinkStateReq*/
12442
12443
12444/**
12445 @brief Process Get Stats Request function (called when Main FSM
12446 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012447
12448 @param pWDICtx: pointer to the WLAN DAL context
12449 pEventData: pointer to the event information structure
12450
Jeff Johnson295189b2012-06-20 16:38:30 -070012451 @see
12452 @return Result of the function call
12453*/
12454WDI_Status
12455WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012456(
Jeff Johnson295189b2012-06-20 16:38:30 -070012457 WDI_ControlBlockType* pWDICtx,
12458 WDI_EventInfoType* pEventData
12459)
12460{
12461 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12462 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012463 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012464 wpt_uint16 usDataOffset = 0;
12465 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012466 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012467 WDI_BSSSessionType* pBSSSes = NULL;
12468 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012469 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 tHalStatsReqMsg halStatsReqMsg;
12471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12472
12473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012475 -------------------------------------------------------------------------*/
12476 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12477 ( NULL == pEventData->pCBfnc ) )
12478 {
12479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012483 }
12484
12485 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12486 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12487
12488 /*-------------------------------------------------------------------------
12489 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 -------------------------------------------------------------------------*/
12492 wpalMutexAcquire(&pWDICtx->wptMutex);
12493
12494 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012495 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012496 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012497 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12498 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012499 &macBSSID))
12500 {
12501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012502 "This station does not exist in the WDI Station Table %d",
12503 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012506 }
12507
Jeff Johnsone7245742012-09-05 17:12:55 -070012508 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12509 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012510 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12512 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12513 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012514
12515 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012517 }
12518
12519 /*------------------------------------------------------------------------
12520 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012521 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012522 ------------------------------------------------------------------------*/
12523 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12524 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12526 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12527 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012528
Jeff Johnsone7245742012-09-05 17:12:55 -070012529 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012530 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012531 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012532 }
12533
12534
12535 wpalMutexRelease(&pWDICtx->wptMutex);
12536
12537 /*-----------------------------------------------------------------------
12538 Get message buffer
12539 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012541 sizeof(halStatsReqMsg.statsReqParams),
12542 &pSendBuffer, &usDataOffset, &usSendSize))||
12543 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12544 {
12545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012546 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012550 }
12551
Jeff Johnsone7245742012-09-05 17:12:55 -070012552 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012553 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012554 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012555 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012556 wpalMemoryCopy( pSendBuffer+usDataOffset,
12557 &halStatsReqMsg.statsReqParams,
12558 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012559
12560 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012561 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012562
12563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012566 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12567 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012568}/*WDI_ProcessGetStatsReq*/
12569
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012570#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012571/**
12572 @brief Process Get Roam Rssi Request function (called when Main FSM
12573 allows it)
12574
12575 @param pWDICtx: pointer to the WLAN DAL context
12576 pEventData: pointer to the event information structure
12577
12578 @see
12579 @return Result of the function call
12580*/
12581WDI_Status
12582WDI_ProcessGetRoamRssiReq
12583(
12584 WDI_ControlBlockType* pWDICtx,
12585 WDI_EventInfoType* pEventData
12586)
12587{
12588 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12589 WDI_GetStatsRspCb wdiGetStatsRspCb;
12590 wpt_uint8* pSendBuffer = NULL;
12591 wpt_uint16 usDataOffset = 0;
12592 wpt_uint16 usSendSize = 0;
12593 wpt_uint8 ucCurrentBSSSesIdx = 0;
12594 WDI_BSSSessionType* pBSSSes = NULL;
12595 wpt_macAddr macBSSID;
12596 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12597 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12599 /*-------------------------------------------------------------------------
12600 Sanity check
12601 -------------------------------------------------------------------------*/
12602 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12603 ( NULL == pEventData->pCBfnc ) )
12604 {
12605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12606 "%s: Invalid parameters", __func__);
12607 WDI_ASSERT(0);
12608 return WDI_STATUS_E_FAILURE;
12609 }
12610
12611 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12612 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12613
12614 /*-------------------------------------------------------------------------
12615 Check to see if we are in the middle of an association, if so queue, if
12616 not it means it is free to process request
12617 -------------------------------------------------------------------------*/
12618 wpalMutexAcquire(&pWDICtx->wptMutex);
12619
12620 /*------------------------------------------------------------------------
12621 Find the BSS for which the request is made
12622 ------------------------------------------------------------------------*/
12623 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12624 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12625 &macBSSID))
12626 {
12627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012628 "This station does not exist in the WDI Station Table %d",
12629 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012630 wpalMutexRelease(&pWDICtx->wptMutex);
12631 return WDI_STATUS_E_FAILURE;
12632 }
12633
12634 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12635 if ( NULL == pBSSSes )
12636 {
12637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12638 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12639 __func__, MAC_ADDR_ARRAY(macBSSID));
12640
12641 wpalMutexRelease(&pWDICtx->wptMutex);
12642 return WDI_STATUS_E_NOT_ALLOWED;
12643 }
12644
12645 /*------------------------------------------------------------------------
12646 Check if this BSS is being currently processed or queued,
12647 if queued - queue the new request as well
12648 ------------------------------------------------------------------------*/
12649 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12650 {
12651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12652 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12653 __func__, MAC_ADDR_ARRAY(macBSSID));
12654
12655 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12656 wpalMutexRelease(&pWDICtx->wptMutex);
12657 return wdiStatus;
12658 }
12659
12660 wpalMutexRelease(&pWDICtx->wptMutex);
12661
12662 /*-----------------------------------------------------------------------
12663 Get message buffer
12664 -----------------------------------------------------------------------*/
12665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12666 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12667 &pSendBuffer, &usDataOffset, &usSendSize))||
12668 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12669 {
12670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012671 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012672 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12673 WDI_ASSERT(0);
12674 return WDI_STATUS_E_FAILURE;
12675 }
12676
12677 halRssiRoamReqMsg.roamRssiReqParams.staId =
12678 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12679 wpalMemoryCopy( pSendBuffer+usDataOffset,
12680 &halRssiRoamReqMsg.roamRssiReqParams,
12681 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12682
12683 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12684 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12685
12686 /*-------------------------------------------------------------------------
12687 Send Get STA Request to HAL
12688 -------------------------------------------------------------------------*/
12689 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12690 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12691}/*WDI_ProcessGetRoamRssiReq*/
12692#endif
12693
Jeff Johnson295189b2012-06-20 16:38:30 -070012694/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012695 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012696 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012697
12698 @param pWDICtx: pointer to the WLAN DAL context
12699 pEventData: pointer to the event information structure
12700
Jeff Johnson295189b2012-06-20 16:38:30 -070012701 @see
12702 @return Result of the function call
12703*/
12704WDI_Status
12705WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012706(
Jeff Johnson295189b2012-06-20 16:38:30 -070012707 WDI_ControlBlockType* pWDICtx,
12708 WDI_EventInfoType* pEventData
12709)
12710{
12711 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12712 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12713
Jeff Johnsone7245742012-09-05 17:12:55 -070012714 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012715 wpt_uint16 usDataOffset = 0;
12716 wpt_uint16 usSendSize = 0;
12717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12718
12719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012720 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012721 -------------------------------------------------------------------------*/
12722 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12723 ( NULL == pEventData->pCBfnc))
12724 {
12725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012726 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012729 }
12730
12731 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12732 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12733
12734 /*-----------------------------------------------------------------------
12735 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012736 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012737 -----------------------------------------------------------------------*/
12738
Jeff Johnsone7245742012-09-05 17:12:55 -070012739 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012740 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12741 &pSendBuffer, &usDataOffset, &usSendSize))||
12742 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12743 {
12744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012745 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012746 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012749 }
12750
Jeff Johnsone7245742012-09-05 17:12:55 -070012751 wpalMemoryCopy( pSendBuffer+usDataOffset,
12752 &pwdiUpdateCfgParams->uConfigBufferLen,
12753 sizeof(wpt_uint32));
12754 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12755 pwdiUpdateCfgParams->pConfigBuffer,
12756 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012757
12758 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012759 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012760
12761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012762 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012763 -------------------------------------------------------------------------*/
12764
Jeff Johnsone7245742012-09-05 17:12:55 -070012765 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12766 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012767
12768}/*WDI_ProcessUpdateCfgReq*/
12769
12770
12771/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012772 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012773 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012774
12775 @param pWDICtx: pointer to the WLAN DAL context
12776 pEventData: pointer to the event information structure
12777
Jeff Johnson295189b2012-06-20 16:38:30 -070012778 @see
12779 @return Result of the function call
12780*/
12781WDI_Status
12782WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012783(
Jeff Johnson295189b2012-06-20 16:38:30 -070012784 WDI_ControlBlockType* pWDICtx,
12785 WDI_EventInfoType* pEventData
12786)
12787{
12788 WDI_AddBAReqParamsType* pwdiAddBAParams;
12789 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012790 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012791 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012792 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 wpt_uint16 usDataOffset = 0;
12794 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012795 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012796 wpt_macAddr macBSSID;
12797
12798 tAddBAReqMsg halAddBAReq;
12799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12800
12801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012803 -------------------------------------------------------------------------*/
12804 if (( NULL == pEventData ) ||
12805 ( NULL == pEventData->pEventData) ||
12806 ( NULL == pEventData->pCBfnc ))
12807 {
12808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012809 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012812 }
12813
12814 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12815 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12816
12817 /*-------------------------------------------------------------------------
12818 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012819 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012820 -------------------------------------------------------------------------*/
12821 wpalMutexAcquire(&pWDICtx->wptMutex);
12822
12823 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012824 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012825 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012826 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12827 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012828 &macBSSID))
12829 {
12830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012831 "This station does not exist in the WDI Station Table %d",
12832 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012833 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012835 }
12836
Jeff Johnsone7245742012-09-05 17:12:55 -070012837 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12838 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012839 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12841 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12842 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012843
12844 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012845 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012846 }
12847
12848 /*------------------------------------------------------------------------
12849 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012850 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012851 ------------------------------------------------------------------------*/
12852 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12853 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12855 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12856 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012857
Jeff Johnsone7245742012-09-05 17:12:55 -070012858 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012859 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012860 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012861 }
12862
12863
12864 wpalMutexRelease(&pWDICtx->wptMutex);
12865 /*-----------------------------------------------------------------------
12866 Get message buffer
12867 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012868 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012869 sizeof(halAddBAReq.addBAParams),
12870 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012871 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012872 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12873 {
12874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012875 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012876 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012879 }
12880
Jeff Johnsone7245742012-09-05 17:12:55 -070012881 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012882 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12883 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12884#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12887#endif
12888
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 wpalMemoryCopy( pSendBuffer+usDataOffset,
12890 &halAddBAReq.addBAParams,
12891 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012892
12893 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012894 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012895
12896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012897 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012898 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012899 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12900 wdiAddBARspCb, pEventData->pUserData,
12901 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012902}/*WDI_ProcessAddBAReq*/
12903
12904
12905
12906/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012907 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012908 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012909
12910 @param pWDICtx: pointer to the WLAN DAL context
12911 pEventData: pointer to the event information structure
12912
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 @see
12914 @return Result of the function call
12915*/
12916WDI_Status
12917WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012918(
Jeff Johnson295189b2012-06-20 16:38:30 -070012919 WDI_ControlBlockType* pWDICtx,
12920 WDI_EventInfoType* pEventData
12921)
12922{
12923 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12924 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012926 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012927 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012928 wpt_uint16 usDataOffset = 0;
12929 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012930 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012931 wpt_uint16 index;
12932 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012933
Jeff Johnson295189b2012-06-20 16:38:30 -070012934 tTriggerBAReqMsg halTriggerBAReq;
12935 tTriggerBaReqCandidate* halTriggerBACandidate;
12936 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12938
12939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 -------------------------------------------------------------------------*/
12942 if (( NULL == pEventData ) ||
12943 ( NULL == pEventData->pEventData ) ||
12944 ( NULL == pEventData->pCBfnc ))
12945 {
12946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012947 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 }
12951
12952 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12953 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12954 /*-------------------------------------------------------------------------
12955 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012956 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012957 -------------------------------------------------------------------------*/
12958 wpalMutexAcquire(&pWDICtx->wptMutex);
12959
12960 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012961 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012962 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012963 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12964 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012965 &macBSSID))
12966 {
12967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012968 "This station does not exist in the WDI Station Table %d",
12969 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012970 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012971 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012972 }
12973
Jeff Johnsone7245742012-09-05 17:12:55 -070012974 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12975 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012976 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12978 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12979 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012980
12981 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012982 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012983 }
12984
12985 /*------------------------------------------------------------------------
12986 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012987 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012988 ------------------------------------------------------------------------*/
12989 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12990 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12992 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12993 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012994
Jeff Johnsone7245742012-09-05 17:12:55 -070012995 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012996 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012997 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012998 }
12999
13000
13001 wpalMutexRelease(&pWDICtx->wptMutex);
13002 /*-----------------------------------------------------------------------
13003 Get message buffer
13004 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013005 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13006 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013007 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013008 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013009 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13010 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013011 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013012 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013013 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013014 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13015 {
13016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013017 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013018 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013021 }
13022
Jeff Johnsone7245742012-09-05 17:12:55 -070013023 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013024 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013025 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013026 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13027
Jeff Johnsone7245742012-09-05 17:12:55 -070013028 wpalMemoryCopy( pSendBuffer+usDataOffset,
13029 &halTriggerBAReq.triggerBAParams,
13030 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013031
Jeff Johnsone7245742012-09-05 17:12:55 -070013032 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013033 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13034 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13035 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013036
13037 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013038 index++)
13039 {
13040 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13041 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13042 halTriggerBACandidate++;
13043 wdiTriggerBACandidate++;
13044 }
13045
13046 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013047 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013048
13049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013050 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013051 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013052 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13053 wdiTriggerBARspCb, pEventData->pUserData,
13054 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013055}/*WDI_ProcessTriggerBAReq*/
13056
13057
13058
13059/**
13060 @brief Process Update Beacon Params Request function (called when Main FSM
13061 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013062
13063 @param pWDICtx: pointer to the WLAN DAL context
13064 pEventData: pointer to the event information structure
13065
Jeff Johnson295189b2012-06-20 16:38:30 -070013066 @see
13067 @return Result of the function call
13068*/
13069WDI_Status
13070WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013071(
Jeff Johnson295189b2012-06-20 16:38:30 -070013072 WDI_ControlBlockType* pWDICtx,
13073 WDI_EventInfoType* pEventData
13074)
13075{
13076 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13077 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013078 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 wpt_uint16 usDataOffset = 0;
13080 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013081 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13083
13084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 -------------------------------------------------------------------------*/
13087 if (( NULL == pEventData ) ||
13088 ( NULL == pEventData->pEventData) ||
13089 ( NULL == pEventData->pCBfnc))
13090 {
13091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013092 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013093 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013095 }
13096
13097 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13098 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13099 /*-----------------------------------------------------------------------
13100 Get message buffer
13101 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013102 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013103 sizeof(halUpdateBeaconParams),
13104 &pSendBuffer, &usDataOffset, &usSendSize))||
13105 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13106 {
13107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013108 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013109 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013112 }
13113
13114 /*BSS Index of the BSS*/
13115 halUpdateBeaconParams.bssIdx =
13116 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13117 /*shortPreamble mode. HAL should update all the STA rates when it
13118 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013119 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013120 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13121 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013122 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013123 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13124 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013125 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013126 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13127
13128 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013129 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013130 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013131 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013132 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013133 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013134 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013135 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013136 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013137 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013138 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013139 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013140 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13141 halUpdateBeaconParams.fRIFSMode =
13142 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013143 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13145
Jeff Johnsone7245742012-09-05 17:12:55 -070013146 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13147 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013148
13149 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013150 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013151
13152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013153 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013154 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013155 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13156 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013157}/*WDI_ProcessUpdateBeaconParamsReq*/
13158
13159
13160
13161/**
13162 @brief Process Send Beacon template Request function (called when Main FSM
13163 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013164
13165 @param pWDICtx: pointer to the WLAN DAL context
13166 pEventData: pointer to the event information structure
13167
Jeff Johnson295189b2012-06-20 16:38:30 -070013168 @see
13169 @return Result of the function call
13170*/
13171WDI_Status
13172WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013173(
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 WDI_ControlBlockType* pWDICtx,
13175 WDI_EventInfoType* pEventData
13176)
13177{
13178 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13179 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013180 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013181 wpt_uint16 usDataOffset = 0;
13182 wpt_uint16 usSendSize = 0;
13183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13184
13185 tSendBeaconReqMsg halSendBeaconReq;
13186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 -------------------------------------------------------------------------*/
13189 if (( NULL == pEventData ) ||
13190 ( NULL == pEventData->pEventData ) ||
13191 ( NULL == pEventData->pCBfnc ))
13192 {
13193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013194 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013197 }
13198
13199 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13200 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13201 /*-----------------------------------------------------------------------
13202 Get message buffer
13203 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013204 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013205 sizeof(halSendBeaconReq.sendBeaconParam),
13206 &pSendBuffer, &usDataOffset, &usSendSize))||
13207 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13208 {
13209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013210 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013214 }
13215
13216 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13217 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13218 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13221 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13222 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13223 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013224 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013225 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013226 /* usP2PIeOffset should be atleast greater than timIeOffset */
13227 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13228 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13229 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13230 {
13231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13232 "Invalid usP2PIeOffset %hu",
13233 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13234 WDI_ASSERT(0);
13235 return WDI_STATUS_E_FAILURE;
13236 }
13237
Jeff Johnsone7245742012-09-05 17:12:55 -070013238 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013239 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013240
Jeff Johnsone7245742012-09-05 17:12:55 -070013241 wpalMemoryCopy( pSendBuffer+usDataOffset,
13242 &halSendBeaconReq.sendBeaconParam,
13243 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013244
13245 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013246 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013247
13248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013249 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013250 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013251 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13252 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013253}/*WDI_ProcessSendBeaconParamsReq*/
13254
13255/**
13256 @brief Process Update Beacon Params Request function (called when Main FSM
13257 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013258
13259 @param pWDICtx: pointer to the WLAN DAL context
13260 pEventData: pointer to the event information structure
13261
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 @see
13263 @return Result of the function call
13264*/
13265WDI_Status
13266WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013267(
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 WDI_ControlBlockType* pWDICtx,
13269 WDI_EventInfoType* pEventData
13270)
13271{
13272 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13273 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013274 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013275 wpt_uint16 usDataOffset = 0;
13276 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013277 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13279
13280 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013281 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 -------------------------------------------------------------------------*/
13283 if (( NULL == pEventData ) ||
13284 ( NULL == pEventData->pEventData) ||
13285 ( NULL == pEventData->pCBfnc))
13286 {
13287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013291 }
13292
Jeff Johnsone7245742012-09-05 17:12:55 -070013293 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013295 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013296 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13297 /*-----------------------------------------------------------------------
13298 Get message buffer
13299 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013300 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013301 sizeof(halUpdateProbeRspTmplParams),
13302 &pSendBuffer, &usDataOffset, &usSendSize))||
13303 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13304 {
13305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013306 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013307 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013310 }
13311
13312 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 WDI_MAC_ADDR_LEN);
13315
Jeff Johnsone7245742012-09-05 17:12:55 -070013316 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013317 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13318
13319 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13320 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013321 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013322
13323
13324 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13325 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13326 WDI_PROBE_REQ_BITMAP_IE_LEN);
13327
Jeff Johnsone7245742012-09-05 17:12:55 -070013328 wpalMemoryCopy( pSendBuffer+usDataOffset,
13329 &halUpdateProbeRspTmplParams,
13330 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013331
13332 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013334
13335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013336 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013337 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013338 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13339 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13340 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013341}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13342
13343/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013344 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013345 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013346
13347 @param pWDICtx: pointer to the WLAN DAL context
13348 pEventData: pointer to the event information structure
13349
Jeff Johnson295189b2012-06-20 16:38:30 -070013350 @see
13351 @return Result of the function call
13352*/
13353WDI_Status
13354WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013355(
Jeff Johnson295189b2012-06-20 16:38:30 -070013356 WDI_ControlBlockType* pWDICtx,
13357 WDI_EventInfoType* pEventData
13358)
13359{
13360
13361 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13362 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13363
13364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013366 -------------------------------------------------------------------------*/
13367 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013368 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013369 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013370 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13372 {
13373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 }
13378
13379 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013381 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13382
13383 /*cache the wdi nv request message here if the the first fragment
13384 * To issue the request to HAL for the next fragment */
13385 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13386 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013387 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13388 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13390
13391 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13392 pWDICtx->pRspCBUserData = pEventData->pUserData;
13393 }
13394
13395 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13396}
13397
13398/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013399 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013401
13402 @param pWDICtx: pointer to the WLAN DAL context
13403 pEventData: pointer to the event information structure
13404
Jeff Johnson295189b2012-06-20 16:38:30 -070013405 @see
13406 @return Result of the function call
13407*/
13408WDI_Status WDI_ProcessSetMaxTxPowerReq
13409(
13410 WDI_ControlBlockType* pWDICtx,
13411 WDI_EventInfoType* pEventData
13412)
13413{
13414 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13415 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013416 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013417 wpt_uint16 usDataOffset = 0;
13418 wpt_uint16 usSendSize = 0;
13419 tSetMaxTxPwrReq halSetMaxTxPower;
13420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13421
13422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013423 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013424 -------------------------------------------------------------------------*/
13425 if (( NULL == pEventData ) ||
13426 ( NULL == pEventData->pEventData ) ||
13427 ( NULL == pEventData->pCBfnc ))
13428 {
13429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013430 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013432 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013433 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013434 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013436 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013437 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13438
13439 /*-----------------------------------------------------------------------
13440 Get message buffer
13441 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013442if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013443 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13444 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013445 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013446)))
13447 {
13448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013449 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013450 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013453 }
13454
13455 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13456 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13457 WDI_MAC_ADDR_LEN);
13458
13459 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13460 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13461 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013462 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013464
13465 wpalMemoryCopy( pSendBuffer+usDataOffset,
13466 &halSetMaxTxPower.setMaxTxPwrParams,
13467 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013468
13469 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013470 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013471
13472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013475 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13476 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13477 WDI_SET_MAX_TX_POWER_RESP);
13478
Jeff Johnson295189b2012-06-20 16:38:30 -070013479}
13480
Arif Hussaina5ebce02013-08-09 15:09:58 -070013481/*
13482 @brief Process Set Max Tx Power Per Band Request function (called when Main
13483 FSM allows it)
13484
13485 @param pWDICtx: pointer to the WLAN DAL context
13486 pEventData: pointer to the event information structure
13487
13488 @see
13489 @return Result of the function call
13490*/
13491WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13492(
13493 WDI_ControlBlockType* pWDICtx,
13494 WDI_EventInfoType* pEventData
13495)
13496{
13497 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13498 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13499 wpt_uint8* pSendBuffer = NULL;
13500 wpt_uint16 usDataOffset = 0;
13501 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013502 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013503 WDI_Status rValue = WDI_STATUS_SUCCESS;
13504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13505
13506 /*-------------------------------------------------------------------------
13507 Sanity check
13508 -------------------------------------------------------------------------*/
13509 if (( NULL == pEventData ) ||
13510 ( NULL == pEventData->pEventData ) ||
13511 ( NULL == pEventData->pCBfnc ))
13512 {
13513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13514 "%s: Invalid parameters", __func__);
13515 WDI_ASSERT(0);
13516 return WDI_STATUS_E_FAILURE;
13517 }
13518 pwdiSetMaxTxPowerPerBandParams = \
13519 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13520
13521 wdiSetMaxTxPowerPerBandRspCb = \
13522 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13523
13524 /*-----------------------------------------------------------------------
13525 Get message buffer
13526 -----------------------------------------------------------------------*/
13527
13528 rValue = WDI_GetMessageBuffer(pWDICtx,
13529 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13530 sizeof(tSetMaxTxPwrPerBandParams),
13531 &pSendBuffer, &usDataOffset, &usSendSize);
13532
13533 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13534 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13535 {
13536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13537 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13538 pEventData, pwdiSetMaxTxPowerPerBandParams,
13539 wdiSetMaxTxPowerPerBandRspCb);
13540 WDI_ASSERT(0);
13541 return WDI_STATUS_E_FAILURE;
13542 }
13543
13544
Arif Hussainf8f080c2014-04-03 09:48:36 -070013545 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13546 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013547 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13548
Arif Hussainf8f080c2014-04-03 09:48:36 -070013549 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013550 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13551
13552 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13553 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13554
13555 /*-------------------------------------------------------------------------
13556 Send Set Max Tx Power Per Band Request to HAL
13557 -------------------------------------------------------------------------*/
13558 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13559 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13560 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13561}
13562
schang86c22c42013-03-13 18:41:24 -070013563/**
13564 @brief Process Set Tx Power Request function (called when Main
13565 FSM allows it)
13566
13567 @param pWDICtx: pointer to the WLAN DAL context
13568 pEventData: pointer to the event information structure
13569
13570 @see
13571 @return Result of the function call
13572*/
13573WDI_Status WDI_ProcessSetTxPowerReq
13574(
13575 WDI_ControlBlockType* pWDICtx,
13576 WDI_EventInfoType* pEventData
13577)
13578{
13579 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13580 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13581 wpt_uint8* pSendBuffer = NULL;
13582 wpt_uint16 usDataOffset = 0;
13583 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013584 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13586
13587 /*-------------------------------------------------------------------------
13588 Sanity check
13589 -------------------------------------------------------------------------*/
13590 if (( NULL == pEventData ) ||
13591 ( NULL == pEventData->pEventData ) ||
13592 ( NULL == pEventData->pCBfnc ))
13593 {
13594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13595 "%s: Invalid parameters", __func__);
13596 WDI_ASSERT(0);
13597 return WDI_STATUS_E_FAILURE;
13598 }
13599
13600 pwdiSetTxPowerParams =
13601 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13602 wdiSetTxPowerRspCb =
13603 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13604
13605 /*-----------------------------------------------------------------------
13606 Get message buffer
13607 -----------------------------------------------------------------------*/
13608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13609 sizeof(tSetTxPwrReqParams),
13610 &pSendBuffer, &usDataOffset, &usSendSize))||
13611 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13612 )))
13613 {
13614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013615 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013616 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13617 WDI_ASSERT(0);
13618 return WDI_STATUS_E_FAILURE;
13619 }
13620
Leo Chang9a43db92013-03-25 17:39:58 -070013621 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13622 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13623 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013624
13625 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13626 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13627
13628 /*-------------------------------------------------------------------------
13629 Send Set Tx Power Request to HAL
13630 -------------------------------------------------------------------------*/
13631 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13632 wdiSetTxPowerRspCb, pEventData->pUserData,
13633 WDI_SET_TX_POWER_RESP);
13634}
Jeff Johnson295189b2012-06-20 16:38:30 -070013635
13636/**
13637 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13638 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013639
13640 @param pWDICtx: pointer to the WLAN DAL context
13641 pEventData: pointer to the event information structure
13642
Jeff Johnson295189b2012-06-20 16:38:30 -070013643 @see
13644 @return Result of the function call
13645*/
13646WDI_Status
13647WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013648(
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 WDI_ControlBlockType* pWDICtx,
13650 WDI_EventInfoType* pEventData
13651)
13652{
13653 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13654 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013655 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013656 wpt_uint16 usDataOffset = 0;
13657 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013658 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13660
13661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013662 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013663 -------------------------------------------------------------------------*/
13664 if (( NULL == pEventData ) ||
13665 ( NULL == pEventData->pEventData) ||
13666 ( NULL == pEventData->pCBfnc))
13667 {
13668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013669 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013672 }
13673
Jeff Johnsone7245742012-09-05 17:12:55 -070013674 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013675 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013676 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013677 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13678 /*-----------------------------------------------------------------------
13679 Get message buffer
13680 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013681 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13682 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013683 sizeof(halSetP2PGONOAParams),
13684 &pSendBuffer, &usDataOffset, &usSendSize))||
13685 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13686 {
13687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013688 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013689 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013692 }
13693
Jeff Johnsone7245742012-09-05 17:12:55 -070013694 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013695 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013696 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013697 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13698 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013699 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013700 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013701 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013702 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013703 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013704 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013705 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13707
Jeff Johnsone7245742012-09-05 17:12:55 -070013708 wpalMemoryCopy( pSendBuffer+usDataOffset,
13709 &halSetP2PGONOAParams,
13710 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013711
13712 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013713 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013714
13715 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013716 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013717 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013718 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13719 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13720 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013721}/*WDI_ProcessP2PGONOAReq*/
13722
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013723#ifdef FEATURE_WLAN_TDLS
13724
13725/**
13726 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13727 allows it)
13728
13729 @param pWDICtx: pointer to the WLAN DAL context
13730 pEventData: pointer to the event information structure
13731
13732 @see
13733 @return Result of the function call
13734*/
13735WDI_Status
13736WDI_ProcessTdlsLinkEstablishReq
13737(
13738 WDI_ControlBlockType* pWDICtx,
13739 WDI_EventInfoType* pEventData
13740)
13741{
13742 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13743 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13744 wpt_uint8* pSendBuffer = NULL;
13745 wpt_uint16 usDataOffset = 0;
13746 wpt_uint16 usSendSize = 0;
13747
13748 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13750
13751 /*-------------------------------------------------------------------------
13752 Sanity check
13753 -------------------------------------------------------------------------*/
13754 if (( NULL == pEventData ) ||
13755 ( NULL == pEventData->pEventData) ||
13756 ( NULL == pEventData->pCBfnc))
13757 {
13758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13759 "%s: Invalid parameters", __func__);
13760 WDI_ASSERT(0);
13761 return WDI_STATUS_E_FAILURE;
13762 }
13763 pwdiTDLSLinkEstablishReqParams =
13764 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13765 wdiTDLSLinkEstablishReqRspCb =
13766 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13767
13768
13769 /*-----------------------------------------------------------------------
13770 Get message buffer
13771 -----------------------------------------------------------------------*/
13772 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13773 WDI_TDLS_LINK_ESTABLISH_REQ,
13774 sizeof(halSetTDLSLinkEstablishParams),
13775 &pSendBuffer, &usDataOffset, &usSendSize))||
13776 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13777 {
13778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013779 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013780 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13781 WDI_ASSERT(0);
13782 return WDI_STATUS_E_FAILURE;
13783 }
13784
13785 halSetTDLSLinkEstablishParams.staIdx =
13786 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13787 halSetTDLSLinkEstablishParams.bIsResponder =
13788 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13789 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13790 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13791 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13792 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13793 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13794 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13795 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13796 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13797 halSetTDLSLinkEstablishParams.aAck = 0;
13798 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13799 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13800 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013801 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13802 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13803
13804 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13805 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13806 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13807 halSetTDLSLinkEstablishParams.validChannelsLen =
13808 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13809
13810 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13811 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13812 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13813 halSetTDLSLinkEstablishParams.validOperClassesLen =
13814 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013815
13816 wpalMemoryCopy( pSendBuffer+usDataOffset,
13817 &halSetTDLSLinkEstablishParams,
13818 sizeof(halSetTDLSLinkEstablishParams));
13819
13820 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13821 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13822
13823 /*-------------------------------------------------------------------------
13824 Send Update Probe Resp Template Request to HAL
13825 -------------------------------------------------------------------------*/
13826 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13827 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13828 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13829 return 0;
13830}/*WDI_ProcessTdlsLinkEstablishReq*/
13831
13832
Atul Mittalc0f739f2014-07-31 13:47:47 +053013833/**
13834 @brief sends the channel switch command to f/w (called when Main FSM
13835 allows it)
13836
13837 @param pWDICtx: pointer to the WLAN DAL context
13838 pEventData: pointer to the event information structure
13839
13840 @see
13841 @return Result of the function call
13842*/
13843WDI_Status
13844WDI_ProcessTdlsChanSwitchReq
13845(
13846 WDI_ControlBlockType* pWDICtx,
13847 WDI_EventInfoType* pEventData
13848)
13849{
13850 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13851 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13852 wpt_uint8* pSendBuffer = NULL;
13853 wpt_uint16 usDataOffset = 0;
13854 wpt_uint16 usSendSize = 0;
13855 //WDI_Status wdiStatus;
13856 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13858
13859 /*-------------------------------------------------------------------------
13860 Sanity check
13861 -------------------------------------------------------------------------*/
13862 if (( NULL == pEventData ) ||
13863 ( NULL == pEventData->pEventData))
13864 {
13865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13866 "%s: Invalid parameters", __func__);
13867 WDI_ASSERT(0);
13868 return WDI_STATUS_E_FAILURE;
13869 }
13870 pwdiTDLSChanSwitchReqParams =
13871 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13872 wdiTDLSChanSwitchReqRspCb =
13873 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13874
13875 /*-----------------------------------------------------------------------
13876 Get message buffer
13877 -----------------------------------------------------------------------*/
13878 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13879 WDI_TDLS_CHAN_SWITCH_REQ,
13880 sizeof(halSetTDLSChanSwitchParams),
13881 &pSendBuffer, &usDataOffset, &usSendSize))||
13882 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13883 {
13884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13885 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13886 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13887 WDI_ASSERT(0);
13888 return WDI_STATUS_E_FAILURE;
13889 }
13890
13891 halSetTDLSChanSwitchParams.staIdx =
13892 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13893 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13894 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13895 halSetTDLSChanSwitchParams.targetOperClass =
13896 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13897 halSetTDLSChanSwitchParams.targetChannel =
13898 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13899 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13900 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13901 wpalMemoryCopy( pSendBuffer+usDataOffset,
13902 &halSetTDLSChanSwitchParams,
13903 sizeof(halSetTDLSChanSwitchParams));
13904
13905 pWDICtx->wdiReqStatusCB = NULL;
13906 pWDICtx->pReqStatusUserData = NULL;
13907
13908 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13909 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13910 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13911}/*WDI_ProcessTdlsChanSwitchReq*/
13912
13913#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013914
Jeff Johnson295189b2012-06-20 16:38:30 -070013915
13916
13917/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013918 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013919 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013920 @param None
13921
13922 @see
13923 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013924*/
13925void
13926WDI_SetPowerStateCb
13927(
13928 wpt_status status,
13929 unsigned int dxePhyAddr,
13930 void *pContext
13931)
13932{
13933 wpt_status wptStatus;
13934 WDI_ControlBlockType *pCB = NULL;
13935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013936 /*
13937 * Trigger the event to bring the Enter BMPS req function to come
13938 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013939*/
13940 if( NULL != pContext )
13941 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013942 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013943 }
13944 else
13945 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013946 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013947 pCB = &gWDICb;
13948 }
Mihir Shetea4306052014-03-25 00:02:54 +053013949
13950 if(eWLAN_PAL_STATUS_SUCCESS == status )
13951 {
13952 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13953 }
13954 else
13955 {
13956 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13957 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013958 pCB->dxePhyAddr = dxePhyAddr;
13959 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13960 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13961 {
13962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13963 "Failed to set an event");
13964
Jeff Johnsone7245742012-09-05 17:12:55 -070013965 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 }
13967 return;
13968}
13969
13970
13971/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013972 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013973 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013974
13975 @param pWDICtx: pointer to the WLAN DAL context
13976 pEventData: pointer to the event information structure
13977
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 @see
13979 @return Result of the function call
13980*/
13981WDI_Status
13982WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013983(
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 WDI_ControlBlockType* pWDICtx,
13985 WDI_EventInfoType* pEventData
13986)
13987{
Jeff Johnson43971f52012-07-17 12:26:56 -070013988 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 wpt_uint16 usDataOffset = 0;
13992 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013993 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13995
13996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013998 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013999 if ((NULL == pEventData ) ||
14000 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14001 (NULL == (pwdiEnterImpsReqParams =
14002 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014003 {
14004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014005 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014006 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014007 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014008 }
14009
14010 /*-----------------------------------------------------------------------
14011 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014014 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014015 0,
14016 &pSendBuffer, &usDataOffset, &usSendSize))||
14017 ( usSendSize < (usDataOffset )))
14018 {
14019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014020 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014021 pEventData, wdiEnterImpsRspCb);
14022 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014023 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014024 }
14025
14026 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014027 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14028 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014029 {
14030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14031 "WDI Init failed to reset an event");
14032
Jeff Johnsone7245742012-09-05 17:12:55 -070014033 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014034 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014035 }
14036
14037 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014038 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14039 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014041 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014042 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014043 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014044 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014045
14046 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014047 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014048 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014049 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14050 WDI_SET_POWER_STATE_TIMEOUT);
14051 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 {
14053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14054 "WDI Init failed to wait on an event");
14055
Jeff Johnsone7245742012-09-05 17:12:55 -070014056 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014057 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014058 }
14059
Mihir Shetea4306052014-03-25 00:02:54 +053014060 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14061 {
14062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14063 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14064
14065 goto fail;
14066 }
14067
14068 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14069 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014071 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014072 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014073 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14074 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014075
14076fail:
14077 // Release the message buffer so we don't leak
14078 wpalMemoryFree(pSendBuffer);
14079
14080failRequest:
14081 //WDA should have failure check to avoid the memory leak
14082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014083}/*WDI_ProcessEnterImpsReq*/
14084
14085/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014086 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014087 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014088
14089 @param pWDICtx: pointer to the WLAN DAL context
14090 pEventData: pointer to the event information structure
14091
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 @see
14093 @return Result of the function call
14094*/
14095WDI_Status
14096WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014097(
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 WDI_ControlBlockType* pWDICtx,
14099 WDI_EventInfoType* pEventData
14100)
14101{
14102 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014103 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 wpt_uint16 usDataOffset = 0;
14105 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014106 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14108
14109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014110 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014111 -------------------------------------------------------------------------*/
14112 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014113 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14114 (NULL == (pwdiExitImpsReqParams =
14115 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 {
14117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014118 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014121 }
14122
14123 /*-----------------------------------------------------------------------
14124 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014125 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014126 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014128 0,
14129 &pSendBuffer, &usDataOffset, &usSendSize))||
14130 ( usSendSize < (usDataOffset )))
14131 {
14132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014133 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014134 pEventData, wdiExitImpsRspCb);
14135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014137 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014138 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14139 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014141 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014142 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014143 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14144 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014145}/*WDI_ProcessExitImpsReq*/
14146
14147/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014148 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014150
14151 @param pWDICtx: pointer to the WLAN DAL context
14152 pEventData: pointer to the event information structure
14153
Jeff Johnson295189b2012-06-20 16:38:30 -070014154 @see
14155 @return Result of the function call
14156*/
14157WDI_Status
14158WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014159(
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 WDI_ControlBlockType* pWDICtx,
14161 WDI_EventInfoType* pEventData
14162)
14163{
14164 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14165 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014166 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014167 wpt_uint16 usDataOffset = 0;
14168 wpt_uint16 usSendSize = 0;
14169 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014170 wpt_status wptStatus;
14171
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14173
14174 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014175 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014176 -------------------------------------------------------------------------*/
14177 if (( NULL == pEventData ) ||
14178 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14179 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14180 {
14181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014182 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014184 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014185 }
14186
14187 /*-----------------------------------------------------------------------
14188 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014189 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014190 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014191 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014192 sizeof(enterBmpsReq),
14193 &pSendBuffer, &usDataOffset, &usSendSize))||
14194 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14195 {
14196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014197 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014198 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14199 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014200 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014201 }
14202
14203 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014204 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14205 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014206 {
14207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14208 "WDI Init failed to reset an event");
14209
Jeff Johnsone7245742012-09-05 17:12:55 -070014210 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014211 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014212 }
14213
14214 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014215 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14216 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14217 {
14218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014219 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014220 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014221 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014222 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014223
14224/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014225 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014226 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014227 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14228 WDI_SET_POWER_STATE_TIMEOUT);
14229 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 {
14231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14232 "WDI Init failed to wait on an event");
14233
Jeff Johnsone7245742012-09-05 17:12:55 -070014234 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014235 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014236 }
14237
14238 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14239
14240 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14241 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14242 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14243 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14244
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014245 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014246 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14247 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14248 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14249
14250 wpalMemoryCopy( pSendBuffer+usDataOffset,
14251 &enterBmpsReq,
14252 sizeof(enterBmpsReq));
14253
14254 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014256
14257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014258 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014259 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014260 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14261 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014262
14263fail:
14264 // Release the message buffer so we don't leak
14265 wpalMemoryFree(pSendBuffer);
14266
14267failRequest:
14268 //WDA should have failure check to avoid the memory leak
14269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014270}/*WDI_ProcessEnterBmpsReq*/
14271
14272/**
14273 @brief Process Exit BMPS Request function (called when Main FSM
14274 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014275
14276 @param pWDICtx: pointer to the WLAN DAL context
14277 pEventData: pointer to the event information structure
14278
Jeff Johnson295189b2012-06-20 16:38:30 -070014279 @see
14280 @return Result of the function call
14281*/
14282WDI_Status
14283WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014284(
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 WDI_ControlBlockType* pWDICtx,
14286 WDI_EventInfoType* pEventData
14287)
14288{
14289 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14290 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014291 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014292 wpt_uint16 usDataOffset = 0;
14293 wpt_uint16 usSendSize = 0;
14294 tHalExitBmpsReqParams exitBmpsReq;
14295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14296
14297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014299 -------------------------------------------------------------------------*/
14300 if (( NULL == pEventData ) ||
14301 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14302 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14303 {
14304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014308 }
14309
14310 /*-----------------------------------------------------------------------
14311 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014312 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014313 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014314 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014315 sizeof(exitBmpsReq),
14316 &pSendBuffer, &usDataOffset, &usSendSize))||
14317 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14318 {
14319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014320 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014321 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014323 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 }
14325 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14326
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14328
Jeff Johnson295189b2012-06-20 16:38:30 -070014329 wpalMemoryCopy( pSendBuffer+usDataOffset,
14330 &exitBmpsReq,
14331 sizeof(exitBmpsReq));
14332
14333 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014335
14336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014337 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14340 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014341}/*WDI_ProcessExitBmpsReq*/
14342
14343/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014344 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014346
14347 @param pWDICtx: pointer to the WLAN DAL context
14348 pEventData: pointer to the event information structure
14349
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 @see
14351 @return Result of the function call
14352*/
14353WDI_Status
14354WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014355(
Jeff Johnson295189b2012-06-20 16:38:30 -070014356 WDI_ControlBlockType* pWDICtx,
14357 WDI_EventInfoType* pEventData
14358)
14359{
14360 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14361 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014362 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014363 wpt_uint16 usDataOffset = 0;
14364 wpt_uint16 usSendSize = 0;
14365 tUapsdReqParams enterUapsdReq;
14366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14367
14368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014369 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014370 -------------------------------------------------------------------------*/
14371 if (( NULL == pEventData ) ||
14372 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14373 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14374 {
14375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014376 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 }
14380
14381 /*-----------------------------------------------------------------------
14382 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014385 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 sizeof(enterUapsdReq),
14387 &pSendBuffer, &usDataOffset, &usSendSize))||
14388 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14389 {
14390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014391 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014392 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014395 }
14396
14397 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14398 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14399 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14400 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14401 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14402 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14403 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14404 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014405 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014406
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 wpalMemoryCopy( pSendBuffer+usDataOffset,
14408 &enterUapsdReq,
14409 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014410
14411 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014412 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014413
14414 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014415 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14418 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014419}/*WDI_ProcessEnterUapsdReq*/
14420
14421/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014422 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014423 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014424
14425 @param pWDICtx: pointer to the WLAN DAL context
14426 pEventData: pointer to the event information structure
14427
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 @see
14429 @return Result of the function call
14430*/
14431WDI_Status
14432WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014433(
Jeff Johnson295189b2012-06-20 16:38:30 -070014434 WDI_ControlBlockType* pWDICtx,
14435 WDI_EventInfoType* pEventData
14436)
14437{
14438 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014439 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 wpt_uint16 usDataOffset = 0;
14441 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014442 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14443 wpt_uint8 bssIdx = 0;
14444
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14446
14447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014448 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 -------------------------------------------------------------------------*/
14450 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014451 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014452 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14453 {
14454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 }
14459
14460 /*-----------------------------------------------------------------------
14461 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014462 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014463 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014464 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014465 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014467 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014468 {
14469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014470 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 pEventData, wdiExitUapsdRspCb);
14472 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 }
14475
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014476 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14477
14478 wpalMemoryCopy( pSendBuffer+usDataOffset,
14479 &bssIdx,
14480 sizeof(wpt_uint8));
14481
14482 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14483 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14484
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014488 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14489 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014490}/*WDI_ProcessExitUapsdReq*/
14491
14492/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014493 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014494 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014495
14496 @param pWDICtx: pointer to the WLAN DAL context
14497 pEventData: pointer to the event information structure
14498
Jeff Johnson295189b2012-06-20 16:38:30 -070014499 @see
14500 @return Result of the function call
14501*/
14502WDI_Status
14503WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014504(
Jeff Johnson295189b2012-06-20 16:38:30 -070014505 WDI_ControlBlockType* pWDICtx,
14506 WDI_EventInfoType* pEventData
14507)
14508{
14509 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14510 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014511 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 wpt_uint16 usDataOffset = 0;
14513 wpt_uint16 usSendSize = 0;
14514 tUapsdInfo uapsdAcParamsReq;
14515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14516
14517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014518 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 -------------------------------------------------------------------------*/
14520 if (( NULL == pEventData ) ||
14521 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14522 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14523 {
14524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014528 }
14529
14530 /*-----------------------------------------------------------------------
14531 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014532 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014533 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014534 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 sizeof(uapsdAcParamsReq),
14536 &pSendBuffer, &usDataOffset, &usSendSize))||
14537 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14538 {
14539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014540 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014541 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014544 }
14545
14546 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14547 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14548 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14549 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14550 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14551 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14552
Jeff Johnsone7245742012-09-05 17:12:55 -070014553 wpalMemoryCopy( pSendBuffer+usDataOffset,
14554 &uapsdAcParamsReq,
14555 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014556
14557 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014558 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014559
14560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014561 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014562 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014563 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14564 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014565}/*WDI_ProcessSetUapsdAcParamsReq*/
14566
14567/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014568 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014569 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014570
14571 @param pWDICtx: pointer to the WLAN DAL context
14572 pEventData: pointer to the event information structure
14573
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 @see
14575 @return Result of the function call
14576*/
14577WDI_Status
14578WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014579(
Jeff Johnson295189b2012-06-20 16:38:30 -070014580 WDI_ControlBlockType* pWDICtx,
14581 WDI_EventInfoType* pEventData
14582)
14583{
14584 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14585 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014586 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014587 wpt_uint16 usDataOffset = 0;
14588 wpt_uint16 usSendSize = 0;
14589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14590
14591 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014592 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 -------------------------------------------------------------------------*/
14594 if (( NULL == pEventData ) ||
14595 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14596 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14597 {
14598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014602 }
14603
14604 /*-----------------------------------------------------------------------
14605 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014606 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014607 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014609 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14610 &pSendBuffer, &usDataOffset, &usSendSize))||
14611 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14612 {
14613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014614 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014615 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 }
14619
Jeff Johnsone7245742012-09-05 17:12:55 -070014620 wpalMemoryCopy( pSendBuffer+usDataOffset,
14621 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14622 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014623
14624 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014625 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014626
14627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014629 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014630 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14631 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014632}/*WDI_ProcessUpdateUapsdParamsReq*/
14633
14634/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014635 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014636 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014637
14638 @param pWDICtx: pointer to the WLAN DAL context
14639 pEventData: pointer to the event information structure
14640
Jeff Johnson295189b2012-06-20 16:38:30 -070014641 @see
14642 @return Result of the function call
14643*/
14644WDI_Status
14645WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014646(
Jeff Johnson295189b2012-06-20 16:38:30 -070014647 WDI_ControlBlockType* pWDICtx,
14648 WDI_EventInfoType* pEventData
14649)
14650{
14651 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14652 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014653 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014654 wpt_uint16 usDataOffset = 0;
14655 wpt_uint16 usSendSize = 0;
14656 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14657
14658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14659
14660 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014661 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014662 -------------------------------------------------------------------------*/
14663 if (( NULL == pEventData ) ||
14664 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14665 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14666 {
14667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 }
14672
14673 /*-----------------------------------------------------------------------
14674 Get message buffer
14675 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014676 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 sizeof(halRxpFilterParams),
14678 &pSendBuffer, &usDataOffset, &usSendSize))||
14679 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14680 {
14681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014682 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014683 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 }
14687
Jeff Johnsone7245742012-09-05 17:12:55 -070014688 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014689 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014690 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014691 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14692
Jeff Johnsone7245742012-09-05 17:12:55 -070014693 wpalMemoryCopy( pSendBuffer+usDataOffset,
14694 &halRxpFilterParams,
14695 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014696
14697 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014699
14700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14704 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014705}/*WDI_ProcessConfigureRxpFilterReq*/
14706
14707/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014708 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014709 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014710
14711 @param pWDICtx: pointer to the WLAN DAL context
14712 pEventData: pointer to the event information structure
14713
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 @see
14715 @return Result of the function call
14716*/
14717WDI_Status
14718WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014719(
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 WDI_ControlBlockType* pWDICtx,
14721 WDI_EventInfoType* pEventData
14722)
14723{
14724 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14725 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014726 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 wpt_uint16 usDataOffset = 0;
14728 wpt_uint16 usSendSize = 0;
14729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14730
14731 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014732 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 -------------------------------------------------------------------------*/
14734 if (( NULL == pEventData ) ||
14735 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14736 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14737 {
14738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014739 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014742 }
14743
14744 /*-----------------------------------------------------------------------
14745 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014746 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014747 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014748 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14750 &pSendBuffer, &usDataOffset, &usSendSize))||
14751 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14752 {
14753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014754 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 }
14759
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 wpalMemoryCopy( pSendBuffer+usDataOffset,
14761 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14762 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14763 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14764 &pwdiBeaconFilterParams->aFilters[0],
14765 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014766
14767 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014769
14770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014771 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014772 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014773 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14774 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014775}/*WDI_ProcessSetBeaconFilterReq*/
14776
14777/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014778 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014779 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014780
14781 @param pWDICtx: pointer to the WLAN DAL context
14782 pEventData: pointer to the event information structure
14783
Jeff Johnson295189b2012-06-20 16:38:30 -070014784 @see
14785 @return Result of the function call
14786*/
14787WDI_Status
14788WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014789(
Jeff Johnson295189b2012-06-20 16:38:30 -070014790 WDI_ControlBlockType* pWDICtx,
14791 WDI_EventInfoType* pEventData
14792)
14793{
14794 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14795 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014796 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 wpt_uint16 usDataOffset = 0;
14798 wpt_uint16 usSendSize = 0;
14799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14800
14801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 -------------------------------------------------------------------------*/
14804 if (( NULL == pEventData ) ||
14805 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14806 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14807 {
14808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014809 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014812 }
14813
14814 /*-----------------------------------------------------------------------
14815 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014816 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014818 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14820 &pSendBuffer, &usDataOffset, &usSendSize))||
14821 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14822 {
14823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014824 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014827 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014828 }
14829
Jeff Johnsone7245742012-09-05 17:12:55 -070014830 wpalMemoryCopy( pSendBuffer+usDataOffset,
14831 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14832 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014833
14834 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014835 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014836
14837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014838 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014839 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014840 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14841 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014842}
14843
14844/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014845 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014846 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014847
14848 @param pWDICtx: pointer to the WLAN DAL context
14849 pEventData: pointer to the event information structure
14850
Jeff Johnson295189b2012-06-20 16:38:30 -070014851 @see
14852 @return Result of the function call
14853*/
14854WDI_Status
14855WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014856(
Jeff Johnson295189b2012-06-20 16:38:30 -070014857 WDI_ControlBlockType* pWDICtx,
14858 WDI_EventInfoType* pEventData
14859)
14860{
14861 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14862 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 wpt_uint16 usDataOffset = 0;
14865 wpt_uint16 usSendSize = 0;
14866 tHalRSSIThresholds rssiThresholdsReq;
14867 WDI_Status ret_status = 0;
14868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14869
14870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 -------------------------------------------------------------------------*/
14873 if (( NULL == pEventData ) ||
14874 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14875 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14876 {
14877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 }
14882
14883 /*-----------------------------------------------------------------------
14884 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014886 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014887 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014888 sizeof(rssiThresholdsReq),
14889 &pSendBuffer, &usDataOffset, &usSendSize))||
14890 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14891 {
14892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014893 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014894 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014897 }
14898
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014900 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014901 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014902 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014903 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014905 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014910 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014911 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014912 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014915 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014916 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014917 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014918 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14919
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 wpalMemoryCopy( pSendBuffer+usDataOffset,
14921 &rssiThresholdsReq,
14922 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014923
14924 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014926
14927 /*-------------------------------------------------------------------------
14928 Send Set threshold req to HAL
14929 -------------------------------------------------------------------------*/
14930 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14931 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14932 {
14933 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14934 // req. Then as a result of processing the threshold cross ind, we trigger
14935 // a Set threshold req, then we need to indicate to WDI that it needs to
14936 // go to busy state as a result of the indication as we sent a req in the
14937 // same WDI context.
14938 // Hence expected state transition is to busy.
14939 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14940 }
14941
14942 return ret_status;
14943}
14944
14945/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014946 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014948
14949 @param pWDICtx: pointer to the WLAN DAL context
14950 pEventData: pointer to the event information structure
14951
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 @see
14953 @return Result of the function call
14954*/
14955WDI_Status
14956WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014957(
Jeff Johnson295189b2012-06-20 16:38:30 -070014958 WDI_ControlBlockType* pWDICtx,
14959 WDI_EventInfoType* pEventData
14960)
14961{
14962 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14963 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014964 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014965 wpt_uint16 usDataOffset = 0;
14966 wpt_uint16 usSendSize = 0;
14967 tHalHostOffloadReq hostOffloadParams;
14968 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014969 wpt_uint8 ucCurrentBSSSesIdx = 0;
14970 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014971
14972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14973
14974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 -------------------------------------------------------------------------*/
14977 if (( NULL == pEventData ) ||
14978 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14979 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14980 {
14981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014982 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014984 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014985 }
14986
14987 /*-----------------------------------------------------------------------
14988 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014990 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014991 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014992 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14993 &pSendBuffer, &usDataOffset, &usSendSize))||
14994 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14995 {
14996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014997 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14999 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015000 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015001 }
15002
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015003 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15004 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15005 &pBSSSes);
15006 if ( NULL == pBSSSes )
15007 {
c_hpothu86feba52014-10-28 15:51:18 +053015008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015009 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15010 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015011 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015012 }
15013
Jeff Johnson295189b2012-06-20 16:38:30 -070015014 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15015 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015016
Jeff Johnson295189b2012-06-20 16:38:30 -070015017 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15018 {
15019 // ARP Offload
15020 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15021 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15022 4);
15023 }
15024 else
15025 {
15026 // NS Offload
15027 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15028 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15029 16);
15030
15031#ifdef WLAN_NS_OFFLOAD
15032 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15033 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15034 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15035 16);
15036 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15037 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15038 16);
15039 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15040 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15041 16);
15042 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15043 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15044 16);
15045 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15046 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15047 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015048 nsOffloadParams.srcIPv6AddrValid =
15049 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15050
15051 nsOffloadParams.targetIPv6Addr1Valid =
15052 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15053
15054 nsOffloadParams.targetIPv6Addr2Valid =
15055 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15056
15057 nsOffloadParams.slotIndex =
15058 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015059
Jeff Johnson295189b2012-06-20 16:38:30 -070015060#endif // WLAN_NS_OFFLOAD
15061 }
15062
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015063 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15064
Jeff Johnson295189b2012-06-20 16:38:30 -070015065 // copy hostOffloadParams into pSendBuffer
15066 wpalMemoryCopy( pSendBuffer+usDataOffset,
15067 &hostOffloadParams,
15068 sizeof(hostOffloadParams));
15069
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015070 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015072 // copy nsOffloadParams into pSendBuffer
15073 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015074 &nsOffloadParams,
15075 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015076 }
15077 else
15078 {
15079#ifdef WLAN_NS_OFFLOAD
15080 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15081 {
15082 // copy nsOffloadParams into pSendBuffer
15083 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15084 &nsOffloadParams,
15085 sizeof(nsOffloadParams));
15086 }
15087#endif
15088 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015089
15090 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015091 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015092
15093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015094 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015096 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15097 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015098
15099fail:
15100 // Release the message buffer so we don't leak
15101 wpalMemoryFree(pSendBuffer);
15102
15103failRequest:
15104 //WDA should have failure check to avoid the memory leak
15105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015106}/*WDI_ProcessHostOffloadReq*/
15107
15108/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015109 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015110 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015111
15112 @param pWDICtx: pointer to the WLAN DAL context
15113 pEventData: pointer to the event information structure
15114
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 @see
15116 @return Result of the function call
15117*/
15118WDI_Status
15119WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015120(
Jeff Johnson295189b2012-06-20 16:38:30 -070015121 WDI_ControlBlockType* pWDICtx,
15122 WDI_EventInfoType* pEventData
15123)
15124{
15125 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15126 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015127 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015128 wpt_uint16 usDataOffset = 0;
15129 wpt_uint16 usSendSize = 0;
15130 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015131 wpt_uint8 ucCurrentBSSSesIdx = 0;
15132 WDI_BSSSessionType* pBSSSes = NULL;
15133
Jeff Johnson295189b2012-06-20 16:38:30 -070015134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15135
15136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015137 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015138 -------------------------------------------------------------------------*/
15139 if (( NULL == pEventData ) ||
15140 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15141 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15142 {
15143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15144 "Invalid parameters in Keep Alive req");
15145 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015146 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015147 }
15148
15149 /*-----------------------------------------------------------------------
15150 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015151 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015152 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015153 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015154 sizeof(keepAliveReq),
15155 &pSendBuffer, &usDataOffset, &usSendSize))||
15156 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15157 {
15158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015159 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15161 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015162 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 }
15164
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015165 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15166 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15167 &pBSSSes);
15168 if ( NULL == pBSSSes )
15169 {
15170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015171 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015172 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015173 }
15174
Jeff Johnson295189b2012-06-20 16:38:30 -070015175 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15176 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15177
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015178 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015179
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15181 {
15182 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15183 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15184 HAL_IPV4_ADDR_LEN);
15185 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15186 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015187 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 wpalMemoryCopy(keepAliveReq.destMacAddr,
15189 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15190 HAL_MAC_ADDR_LEN);
15191 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015192
15193 wpalMemoryCopy( pSendBuffer+usDataOffset,
15194 &keepAliveReq,
15195 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015196
15197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015198 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015199
15200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015201 "Process keep alive req time period %d",
15202 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015203
15204 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015205 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015206
15207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15208 "Sending keep alive req to HAL");
15209
15210 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015211 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015212 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015213 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15214 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015215
15216fail:
15217 // Release the message buffer so we don't leak
15218 wpalMemoryFree(pSendBuffer);
15219
15220failRequest:
15221 //WDA should have failure check to avoid the memory leak
15222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015223}/*WDI_ProcessKeepAliveReq*/
15224
15225
15226/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015227 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015228 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015229
15230 @param pWDICtx: pointer to the WLAN DAL context
15231 pEventData: pointer to the event information structure
15232
Jeff Johnson295189b2012-06-20 16:38:30 -070015233 @see
15234 @return Result of the function call
15235*/
15236WDI_Status
15237WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015238(
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 WDI_ControlBlockType* pWDICtx,
15240 WDI_EventInfoType* pEventData
15241)
15242{
15243 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15244 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015245 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015246 wpt_uint16 usDataOffset = 0;
15247 wpt_uint16 usSendSize = 0;
15248 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015249 wpt_uint8 ucCurrentBSSSesIdx = 0;
15250 WDI_BSSSessionType* pBSSSes = NULL;
15251
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15253
15254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015256 -------------------------------------------------------------------------*/
15257 if (( NULL == pEventData ) ||
15258 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15259 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15260 {
15261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015264 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 }
15266
15267 /*-----------------------------------------------------------------------
15268 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015269 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015271 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015272 sizeof(wowlAddBcPtrnReq),
15273 &pSendBuffer, &usDataOffset, &usSendSize))||
15274 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15275 {
15276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015277 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15279 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015280 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 }
15282
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015283 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15284 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15285 &pBSSSes);
15286 if ( NULL == pBSSSes )
15287 {
15288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015289 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015290 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015291 }
15292
Jeff Johnsone7245742012-09-05 17:12:55 -070015293 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015295 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015297 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015298 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015299 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15301
15302 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15303 {
15304 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15305 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15306 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15307 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15308 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15309 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15310 }
15311 else
15312 {
15313 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15314 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15315 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15316 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15317 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15318 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15319
15320 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15321 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15322 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15323 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15324 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15325 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15326 }
15327
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015328 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15329
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 wpalMemoryCopy( pSendBuffer+usDataOffset,
15331 &wowlAddBcPtrnReq,
15332 sizeof(wowlAddBcPtrnReq));
15333
15334 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015335 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015336
15337 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015338 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015339 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015340 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15341 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015342fail:
15343 // Release the message buffer so we don't leak
15344 wpalMemoryFree(pSendBuffer);
15345
15346failRequest:
15347 //WDA should have failure check to avoid the memory leak
15348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015349}/*WDI_ProcessWowlAddBcPtrnReq*/
15350
15351/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015352 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015354
15355 @param pWDICtx: pointer to the WLAN DAL context
15356 pEventData: pointer to the event information structure
15357
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 @see
15359 @return Result of the function call
15360*/
15361WDI_Status
15362WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015363(
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 WDI_ControlBlockType* pWDICtx,
15365 WDI_EventInfoType* pEventData
15366)
15367{
15368 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15369 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015371 wpt_uint16 usDataOffset = 0;
15372 wpt_uint16 usSendSize = 0;
15373 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015374 wpt_uint8 ucCurrentBSSSesIdx = 0;
15375 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15377
15378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015380 -------------------------------------------------------------------------*/
15381 if (( NULL == pEventData ) ||
15382 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15383 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15384 {
15385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015386 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015388 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015389 }
15390
15391 /*-----------------------------------------------------------------------
15392 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015393 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015394 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015395 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015396 sizeof(wowlDelBcPtrnReq),
15397 &pSendBuffer, &usDataOffset, &usSendSize))||
15398 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15399 {
15400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015401 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015402 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15403 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015404 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015405 }
15406
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015407 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15408 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15409 &pBSSSes);
15410 if ( NULL == pBSSSes )
15411 {
15412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015413 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015414 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015415 }
15416
Jeff Johnsone7245742012-09-05 17:12:55 -070015417 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015418 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015419
15420 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15421
Jeff Johnsone7245742012-09-05 17:12:55 -070015422 wpalMemoryCopy( pSendBuffer+usDataOffset,
15423 &wowlDelBcPtrnReq,
15424 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015425
15426 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015427 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015428
15429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015430 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015431 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015432 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15433 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015434
15435fail:
15436 // Release the message buffer so we don't leak
15437 wpalMemoryFree(pSendBuffer);
15438
15439failRequest:
15440 //WDA should have failure check to avoid the memory leak
15441 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015442}/*WDI_ProcessWowlDelBcPtrnReq*/
15443
15444/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015445 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015446 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015447
15448 @param pWDICtx: pointer to the WLAN DAL context
15449 pEventData: pointer to the event information structure
15450
Jeff Johnson295189b2012-06-20 16:38:30 -070015451 @see
15452 @return Result of the function call
15453*/
15454WDI_Status
15455WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015456(
Jeff Johnson295189b2012-06-20 16:38:30 -070015457 WDI_ControlBlockType* pWDICtx,
15458 WDI_EventInfoType* pEventData
15459)
15460{
15461 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15462 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015463 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015464 wpt_uint16 usDataOffset = 0;
15465 wpt_uint16 usSendSize = 0;
15466 tHalWowlEnterParams wowlEnterReq;
15467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15468
15469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015470 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015471 -------------------------------------------------------------------------*/
15472 if (( NULL == pEventData ) ||
15473 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15474 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15475 {
15476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015477 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015480 }
15481
15482 /*-----------------------------------------------------------------------
15483 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015484 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015485 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015486 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 sizeof(wowlEnterReq),
15488 &pSendBuffer, &usDataOffset, &usSendSize))||
15489 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15490 {
15491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015492 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015493 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015496 }
15497
Kumar Anandaca924e2013-07-22 14:35:34 -070015498 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15499
Jeff Johnsone7245742012-09-05 17:12:55 -070015500 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015501 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015502 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015503 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015506 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015507 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015508 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015509 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015510 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015511 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015512 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015513 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015514 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015515 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15516
15517#ifdef WLAN_WAKEUP_EVENTS
15518 wowlEnterReq.ucWoWEAPIDRequestEnable =
15519 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15520
15521 wowlEnterReq.ucWoWEAPOL4WayEnable =
15522 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15523
15524 wowlEnterReq.ucWowNetScanOffloadMatch =
15525 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15526
15527 wowlEnterReq.ucWowGTKRekeyError =
15528 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15529
15530 wowlEnterReq.ucWoWBSSConnLoss =
15531 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15532#endif // WLAN_WAKEUP_EVENTS
15533
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015534 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15535
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15537 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15538 sizeof(tSirMacAddr));
15539
Jeff Johnsone7245742012-09-05 17:12:55 -070015540 wpalMemoryCopy( pSendBuffer+usDataOffset,
15541 &wowlEnterReq,
15542 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015543
15544 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015545 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015546
15547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015548 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015549 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015550 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15551 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015552}/*WDI_ProcessWowlEnterReq*/
15553
15554/**
15555 @brief Process Wowl exit Request function (called when Main FSM
15556 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015557
15558 @param pWDICtx: pointer to the WLAN DAL context
15559 pEventData: pointer to the event information structure
15560
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 @see
15562 @return Result of the function call
15563*/
15564WDI_Status
15565WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015566(
Jeff Johnson295189b2012-06-20 16:38:30 -070015567 WDI_ControlBlockType* pWDICtx,
15568 WDI_EventInfoType* pEventData
15569)
15570{
15571 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015572 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015573 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015574 wpt_uint16 usDataOffset = 0;
15575 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015576 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15578
15579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015581 -------------------------------------------------------------------------*/
15582 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015583 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015584 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15585 {
15586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 }
15591
15592 /*-----------------------------------------------------------------------
15593 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015594 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015595 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015597 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015599 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 {
15601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015602 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015603 pEventData, wdiWowlExitCb);
15604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015606 }
15607
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015608 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15609
15610 wpalMemoryCopy( pSendBuffer+usDataOffset,
15611 &wowlExitparams,
15612 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015614 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015615 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15617 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015618}/*WDI_ProcessWowlExitReq*/
15619
15620/**
15621 @brief Process Configure Apps Cpu Wakeup State Request function
15622 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015623
15624 @param pWDICtx: pointer to the WLAN DAL context
15625 pEventData: pointer to the event information structure
15626
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 @see
15628 @return Result of the function call
15629*/
15630WDI_Status
15631WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015632(
Jeff Johnson295189b2012-06-20 16:38:30 -070015633 WDI_ControlBlockType* pWDICtx,
15634 WDI_EventInfoType* pEventData
15635)
15636{
15637 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15638 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015639 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015640 wpt_uint16 usDataOffset = 0;
15641 wpt_uint16 usSendSize = 0;
15642 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15644
15645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015647 -------------------------------------------------------------------------*/
15648 if (( NULL == pEventData ) ||
15649 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15650 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15651 {
15652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015656 }
15657
15658 /*-----------------------------------------------------------------------
15659 Get message buffer
15660 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015661 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015662 sizeof(halCfgAppsCpuWakeupStateReqParams),
15663 &pSendBuffer, &usDataOffset, &usSendSize))||
15664 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15665 {
15666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015667 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015668 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015671 }
15672
Jeff Johnsone7245742012-09-05 17:12:55 -070015673 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015674 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15675
Jeff Johnsone7245742012-09-05 17:12:55 -070015676 wpalMemoryCopy( pSendBuffer+usDataOffset,
15677 &halCfgAppsCpuWakeupStateReqParams,
15678 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015679
15680 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015682
15683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015684 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015685 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15687 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15688 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015689}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15690
15691#ifdef WLAN_FEATURE_VOWIFI_11R
15692/**
15693 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15694 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015695
15696 @param pWDICtx: pointer to the WLAN DAL context
15697 pEventData: pointer to the event information structure
15698
Jeff Johnson295189b2012-06-20 16:38:30 -070015699 @see
15700 @return Result of the function call
15701*/
15702WDI_Status
15703WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015704(
Jeff Johnson295189b2012-06-20 16:38:30 -070015705 WDI_ControlBlockType* pWDICtx,
15706 WDI_EventInfoType* pEventData
15707)
15708{
15709 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15710 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015711 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015712 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015713 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015714 wpt_uint16 usDataOffset = 0;
15715 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015716 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015717 wpt_macAddr macBSSID;
15718 tAggrAddTsReq halAggrAddTsReq;
15719 int i;
15720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15721
15722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015723 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015724 -------------------------------------------------------------------------*/
15725 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15726 ( NULL == pEventData->pCBfnc ))
15727 {
15728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015729 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015732 }
15733 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15734 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15735 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15736 /*-------------------------------------------------------------------------
15737 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015738 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015739 -------------------------------------------------------------------------*/
15740 wpalMutexAcquire(&pWDICtx->wptMutex);
15741
15742 /*------------------------------------------------------------------------
15743 Find the BSS for which the request is made and identify WDI session
15744 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015745 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15746 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015747 &macBSSID))
15748 {
15749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015750 "This station does not exist in the WDI Station Table %d",
15751 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015752 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015754 }
15755
Jeff Johnsone7245742012-09-05 17:12:55 -070015756 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15757 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015758 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15760 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15761 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015762
15763 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015764 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015766
Jeff Johnson295189b2012-06-20 16:38:30 -070015767 /*------------------------------------------------------------------------
15768 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015769 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 ------------------------------------------------------------------------*/
15771 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15772 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15774 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15775 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015776
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015779 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015780 }
15781
15782 wpalMutexRelease(&pWDICtx->wptMutex);
15783 /*-----------------------------------------------------------------------
15784 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015785 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015787 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015788 sizeof(tAggrAddTsParams),
15789 &pSendBuffer, &usDataOffset, &usSendSize))||
15790 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15791 {
15792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015793 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015797 }
15798
Jeff Johnsone7245742012-09-05 17:12:55 -070015799 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015801 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15803
15804 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15805 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015806 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015807 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015808 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015809 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015810 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015811 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15812 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015813 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015814 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15815 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015816 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15818 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015819 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015820 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15821 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015822 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15824 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15827 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015828 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015829 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15830 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015831 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015832 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15833 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015834 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015835 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015836 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015837 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015838
15839
15840 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015841 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015842 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015843 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015844 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015845 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015846 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015850 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015851 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015852 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015854 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015858 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015859 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015860 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015861 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015862 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015864 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015865 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015866 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015868 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15870 }
15871
Jeff Johnsone7245742012-09-05 17:12:55 -070015872 wpalMemoryCopy( pSendBuffer+usDataOffset,
15873 &halAggrAddTsReq,
15874 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015875
15876 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015877 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015878
15879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015880 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015881 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015882 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015884 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015885}/*WDI_ProcessAggrAddTSpecReq*/
15886#endif /* WLAN_FEATURE_VOWIFI_11R */
15887
15888/**
15889 @brief Process Shutdown Request function (called when Main FSM
15890 allows it)
15891
15892 @param pWDICtx: pointer to the WLAN DAL context
15893 pEventData: pointer to the event information structure
15894
15895 @see
15896 @return Result of the function call
15897*/
15898WDI_Status
15899WDI_ProcessShutdownReq
15900(
15901 WDI_ControlBlockType* pWDICtx,
15902 WDI_EventInfoType* pEventData
15903 )
15904{
15905 wpt_status wptStatus;
15906
15907
15908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15909
15910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015911 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 -------------------------------------------------------------------------*/
15913 if ( NULL == pEventData )
15914 {
15915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015917 WDI_ASSERT(0);
15918 return WDI_STATUS_E_FAILURE;
15919 }
15920
15921 wpalMutexAcquire(&pWDICtx->wptMutex);
15922
15923
15924 gWDIInitialized = eWLAN_PAL_FALSE;
15925 /*! TO DO: stop the data services */
15926 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15927 {
15928 /*Stop the STA Table !UT- check this logic again
15929 It is safer to do it here than on the response - because a stop is imminent*/
15930 WDI_STATableStop(pWDICtx);
15931
15932 /* Stop Transport Driver, DXE */
15933 WDTS_Stop(pWDICtx);
15934 }
15935
15936 /*Clear all pending request*/
15937 WDI_ClearPendingRequests(pWDICtx);
15938 /* Close Data transport*/
15939 /* FTM mode does not open Data Path */
15940 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15941 {
15942 WDTS_Close(pWDICtx);
15943 }
15944 /*Close the STA Table !UT- check this logic again*/
15945 WDI_STATableClose(pWDICtx);
15946 /*close the PAL */
15947 wptStatus = wpalClose(pWDICtx->pPALContext);
15948 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15949 {
15950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15951 "Failed to wpal Close %d", wptStatus);
15952 WDI_ASSERT(0);
15953 }
15954
15955 /*Transition back to init state*/
15956 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15957
15958 wpalMutexRelease(&pWDICtx->wptMutex);
15959
15960 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015961 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015962
15963
Jeff Johnsone7245742012-09-05 17:12:55 -070015964 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015965}/*WDI_ProcessShutdownReq*/
15966
15967/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015968 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015969========================================================================*/
15970
15971/**
15972 @brief Process Start Response function (called when a response
15973 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015974
15975 @param pWDICtx: pointer to the WLAN DAL context
15976 pEventData: pointer to the event information structure
15977
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 @see
15979 @return Result of the function call
15980*/
15981WDI_Status
15982WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015983(
Jeff Johnson295189b2012-06-20 16:38:30 -070015984 WDI_ControlBlockType* pWDICtx,
15985 WDI_EventInfoType* pEventData
15986)
15987{
15988 WDI_StartRspParamsType wdiRspParams;
15989 WDI_StartRspCb wdiStartRspCb = NULL;
15990
15991 tHalMacStartRspParams* startRspParams;
15992
15993#ifndef HAL_SELF_STA_PER_BSS
15994 WDI_AddStaParams wdiAddSTAParam = {0};
15995#endif
15996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15997
Jeff Johnsone7245742012-09-05 17:12:55 -070015998 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016000 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016001 -------------------------------------------------------------------------*/
16002 if (( NULL == pEventData ) ||
16003 ( NULL == pEventData->pEventData) ||
16004 ( NULL == wdiStartRspCb ))
16005 {
16006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016010 }
16011
16012 /*-------------------------------------------------------------------------
16013 Extract response and send it to UMAC
16014 -------------------------------------------------------------------------*/
16015 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16016 {
16017 // not enough data was received
16018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016019 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016020 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016023 }
16024
16025 /*-------------------------------------------------------------------------
16026 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016027 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016028 -------------------------------------------------------------------------*/
16029 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16030
16031 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16032 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16033 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16034 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16035 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16036 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16037 wdiRspParams.wlanReportedVersion.major =
16038 startRspParams->wcnssWlanVersion.major;
16039 wdiRspParams.wlanReportedVersion.minor =
16040 startRspParams->wcnssWlanVersion.minor;
16041 wdiRspParams.wlanReportedVersion.version =
16042 startRspParams->wcnssWlanVersion.version;
16043 wdiRspParams.wlanReportedVersion.revision =
16044 startRspParams->wcnssWlanVersion.revision;
16045 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16046 startRspParams->wcnssCrmVersionString,
16047 sizeof(wdiRspParams.wcnssSoftwareVersion));
16048 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16049 startRspParams->wcnssWlanVersionString,
16050 sizeof(wdiRspParams.wcnssHardwareVersion));
16051 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16052
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016053 /*Save the HAL Version*/
16054 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16055
Jeff Johnson295189b2012-06-20 16:38:30 -070016056 wpalMutexAcquire(&pWDICtx->wptMutex);
16057 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16058 {
16059 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16060
16061 /*Cache the start response for further use*/
16062 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016063 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016064 sizeof(pWDICtx->wdiCachedStartRspParams));
16065
16066 }
16067 else
16068 {
16069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16070 "Failed to start device with status %s(%d)",
16071 WDI_getHALStatusMsgString(startRspParams->status),
16072 startRspParams->status);
16073
16074 /*Set the expected state transition to stopped - because the start has
16075 failed*/
16076 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16077
16078 wpalMutexRelease(&pWDICtx->wptMutex);
16079
16080 /*Notify UMAC*/
16081 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016082
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016084 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016085
16086 /*Although the response is an error - it was processed by our function
16087 so as far as the caller is concerned this is a succesful reponse processing*/
16088 return WDI_STATUS_SUCCESS;
16089 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016090
Jeff Johnson295189b2012-06-20 16:38:30 -070016091 wpalMutexRelease(&pWDICtx->wptMutex);
16092
16093 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16094 {
16095 /* FTM mode does not need to execute below */
16096 /* Notify UMAC */
16097 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16098 return WDI_STATUS_SUCCESS;
16099 }
16100
16101 /* START the Data transport */
16102 WDTS_startTransport(pWDICtx);
16103
16104 /*Start the STA Table !- check this logic again*/
16105 WDI_STATableStart(pWDICtx);
16106
16107#ifndef HAL_SELF_STA_PER_BSS
16108 /* Store the Self STA Index */
16109 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16110
16111 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16112 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16113 WDI_MAC_ADDR_LEN);
16114
16115 /* At this point add the self-STA */
16116
16117 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16118 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16119 /*! TO DO: wdiAddSTAParam.dpuSig */
16120 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16121 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16122 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16123
16124 //all DPU indices are the same for self STA
16125 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16126 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016127 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16129 WDI_MAC_ADDR_LEN);
16130 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16131 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16132
16133 /* Note: Since we don't get an explicit config STA request for self STA, we
16134 add the self STA upon receiving the Start response message. But the
16135 self STA entry in the table is deleted when WDI gets an explicit delete STA
16136 request */
16137 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16138#endif
16139
16140 /*Notify UMAC*/
16141 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16142
Jeff Johnsone7245742012-09-05 17:12:55 -070016143 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016144}/*WDI_ProcessStartRsp*/
16145
16146
16147/**
16148 @brief Process Stop Response function (called when a response
16149 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016150
16151 @param pWDICtx: pointer to the WLAN DAL context
16152 pEventData: pointer to the event information structure
16153
Jeff Johnson295189b2012-06-20 16:38:30 -070016154 @see
16155 @return Result of the function call
16156*/
16157WDI_Status
16158WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016159(
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 WDI_ControlBlockType* pWDICtx,
16161 WDI_EventInfoType* pEventData
16162)
16163{
16164 WDI_Status wdiStatus;
16165 WDI_StopRspCb wdiStopRspCb = NULL;
16166
Jeff Johnsone7245742012-09-05 17:12:55 -070016167 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16169
Jeff Johnsone7245742012-09-05 17:12:55 -070016170 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016172 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016173 -------------------------------------------------------------------------*/
16174 if (( NULL == pEventData ) ||
16175 ( NULL == pEventData->pEventData) ||
16176 ( NULL == wdiStopRspCb ))
16177 {
16178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 }
16183
16184 /*-------------------------------------------------------------------------
16185 Extract response and send it to UMAC
16186 -------------------------------------------------------------------------*/
16187 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16188 {
16189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016190 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016191 pEventData->uEventDataSize);
16192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 }
16195
16196 /*-------------------------------------------------------------------------
16197 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016198 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016200 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16201 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016202 sizeof(halMacStopRspMsg.stopRspParams));
16203
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016205
16206 wpalMutexAcquire(&pWDICtx->wptMutex);
16207
16208 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016209 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 --------------------------------------------------------------------------*/
16211 if ( WDI_STATUS_SUCCESS != wdiStatus )
16212 {
16213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16214 "Failed to stop the device with status %s (%d)",
16215 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16216 halMacStopRspMsg.stopRspParams.status);
16217
Jeff Johnsone7245742012-09-05 17:12:55 -070016218 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016219 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016220
Jeff Johnson295189b2012-06-20 16:38:30 -070016221 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016223 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016224
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16226
16227 /*Transition now as WDI may get preempted imediately after it sends
16228 up the Stop Response and it will not get to process the state transition
16229 from Main Rsp function*/
16230 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16231 wpalMutexRelease(&pWDICtx->wptMutex);
16232
16233 /*! TO DO: - STOP the Data transport */
16234
16235 /*Notify UMAC*/
16236 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16237
Jeff Johnsone7245742012-09-05 17:12:55 -070016238 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016239}/*WDI_ProcessStopRsp*/
16240
16241/**
16242 @brief Process Close Rsp function (called when a response
16243 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016244
16245 @param pWDICtx: pointer to the WLAN DAL context
16246 pEventData: pointer to the event information structure
16247
Jeff Johnson295189b2012-06-20 16:38:30 -070016248 @see
16249 @return Result of the function call
16250*/
16251WDI_Status
16252WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016253(
Jeff Johnson295189b2012-06-20 16:38:30 -070016254 WDI_ControlBlockType* pWDICtx,
16255 WDI_EventInfoType* pEventData
16256)
16257{
16258 /*There is no close response comming from HAL - function just kept for
16259 simmetry */
16260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016261 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016262}/*WDI_ProcessCloseRsp*/
16263
16264
16265/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016266 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016267============================================================================*/
16268
16269/**
16270 @brief Process Init Scan Rsp function (called when a response
16271 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016272
16273 @param pWDICtx: pointer to the WLAN DAL context
16274 pEventData: pointer to the event information structure
16275
Jeff Johnson295189b2012-06-20 16:38:30 -070016276 @see
16277 @return Result of the function call
16278*/
16279WDI_Status
16280WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016281(
Jeff Johnson295189b2012-06-20 16:38:30 -070016282 WDI_ControlBlockType* pWDICtx,
16283 WDI_EventInfoType* pEventData
16284)
16285{
16286 WDI_Status wdiStatus;
16287 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016288 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016289 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16291
16292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 -------------------------------------------------------------------------*/
16295 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16296 ( NULL == pEventData->pEventData))
16297 {
16298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016299 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 }
16303
16304 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16305 if( NULL == wdiInitScanRspCb)
16306 {
16307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016308 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016311 }
16312
16313 /*-------------------------------------------------------------------------
16314 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016315 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016316 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016317 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16318 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016319 sizeof(halInitScanRspMsg.initScanRspParams));
16320
Jeff Johnsone7245742012-09-05 17:12:55 -070016321 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016322
16323 if ( pWDICtx->bInBmps )
16324 {
16325 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016326 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16327 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016329 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080016330 WDI_ASSERT(0);
16331 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016332 }
16333
16334 /*Notify UMAC*/
16335 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16336
Jeff Johnsone7245742012-09-05 17:12:55 -070016337 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016338}/*WDI_ProcessInitScanRsp*/
16339
16340
16341/**
16342 @brief Process Start Scan Rsp function (called when a response
16343 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016344
16345 @param pWDICtx: pointer to the WLAN DAL context
16346 pEventData: pointer to the event information structure
16347
Jeff Johnson295189b2012-06-20 16:38:30 -070016348 @see
16349 @return Result of the function call
16350*/
16351WDI_Status
16352WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016353(
Jeff Johnson295189b2012-06-20 16:38:30 -070016354 WDI_ControlBlockType* pWDICtx,
16355 WDI_EventInfoType* pEventData
16356)
16357{
16358 WDI_StartScanRspParamsType wdiStartScanParams;
16359 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016360
16361 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16363
16364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016366 -------------------------------------------------------------------------*/
16367 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16368 ( NULL == pEventData->pEventData))
16369 {
16370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016374 }
16375
16376 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16377 if( NULL == wdiStartScanRspCb)
16378 {
16379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016380 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016383 }
16384
16385 /*-------------------------------------------------------------------------
16386 Extract response and send it to UMAC
16387 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016388 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16389 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016390 sizeof(halStartScanRspMsg.startScanRspParams));
16391
16392 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16393 halStartScanRspMsg.startScanRspParams.status);
16394#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016395 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016396 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016397 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 halStartScanRspMsg.startScanRspParams.startTSF,
16399 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016400#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016401
16402 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16403 {
16404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16405 "Start scan failed with status %s (%d)",
16406 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16407 halStartScanRspMsg.startScanRspParams.status);
16408 /* send the status to UMAC, don't return from here*/
16409 }
16410
16411 /*Notify UMAC*/
16412 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16413
Jeff Johnsone7245742012-09-05 17:12:55 -070016414 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016415
16416}/*WDI_ProcessStartScanRsp*/
16417
16418
16419/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016422
16423 @param pWDICtx: pointer to the WLAN DAL context
16424 pEventData: pointer to the event information structure
16425
Jeff Johnson295189b2012-06-20 16:38:30 -070016426 @see
16427 @return Result of the function call
16428*/
16429WDI_Status
16430WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016431(
Jeff Johnson295189b2012-06-20 16:38:30 -070016432 WDI_ControlBlockType* pWDICtx,
16433 WDI_EventInfoType* pEventData
16434)
16435{
16436 WDI_Status wdiStatus;
16437 tHalEndScanRspMsg halEndScanRspMsg;
16438 WDI_EndScanRspCb wdiEndScanRspCb;
16439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16440
16441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016443 -------------------------------------------------------------------------*/
16444 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16445 ( NULL == pEventData->pEventData))
16446 {
16447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016451 }
16452
16453 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16454
16455 /*-------------------------------------------------------------------------
16456 Extract response and send it to UMAC
16457 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016458 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16459 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016460 sizeof(halEndScanRspMsg.endScanRspParams));
16461
Jeff Johnsone7245742012-09-05 17:12:55 -070016462 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016463
16464 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16465 {
16466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16467 "End Scan failed with status %s (%d )",
16468 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16469 halEndScanRspMsg.endScanRspParams.status);
16470 /* send the status to UMAC, don't return from here*/
16471 }
16472
16473 /*Notify UMAC*/
16474 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16475
Jeff Johnsone7245742012-09-05 17:12:55 -070016476 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016477}/*WDI_ProcessEndScanRsp*/
16478
16479
16480/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016481 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016482 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016483
16484 @param pWDICtx: pointer to the WLAN DAL context
16485 pEventData: pointer to the event information structure
16486
Jeff Johnson295189b2012-06-20 16:38:30 -070016487 @see
16488 @return Result of the function call
16489*/
16490WDI_Status
16491WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016492(
Jeff Johnson295189b2012-06-20 16:38:30 -070016493 WDI_ControlBlockType* pWDICtx,
16494 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016495)
Jeff Johnson295189b2012-06-20 16:38:30 -070016496{
16497 WDI_Status wdiStatus;
16498 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016499
16500 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16502
16503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016505 -------------------------------------------------------------------------*/
16506 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16507 ( NULL == pEventData->pEventData))
16508 {
16509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 }
16514
16515 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16516
16517 /*-------------------------------------------------------------------------
16518 Extract response and send it to UMAC
16519 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016520 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16521 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016522 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16523
Jeff Johnsone7245742012-09-05 17:12:55 -070016524 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016525
16526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016527 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016528 halFinishScanRspMsg.finishScanRspParams.status);
16529
16530 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16531 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16532 {
16533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16534 "Finish Scan failed with status %s (%d)",
16535 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16536 halFinishScanRspMsg.finishScanRspParams.status);
16537 /* send the status to UMAC, don't return from here*/
16538 }
16539
16540 /*Notify UMAC*/
16541 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16542
Jeff Johnsone7245742012-09-05 17:12:55 -070016543 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016544}/*WDI_ProcessFinishScanRsp*/
16545
16546/**
16547 @brief Process Join Response function (called when a response
16548 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016549
16550 @param pWDICtx: pointer to the WLAN DAL context
16551 pEventData: pointer to the event information structure
16552
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 @see
16554 @return Result of the function call
16555*/
16556WDI_Status
16557WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016558(
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 WDI_ControlBlockType* pWDICtx,
16560 WDI_EventInfoType* pEventData
16561)
16562{
16563 WDI_Status wdiStatus;
16564 WDI_JoinRspCb wdiJoinRspCb;
16565 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016566
16567 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16569
16570 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016571 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016572 -------------------------------------------------------------------------*/
16573 if (( NULL == pWDICtx ) ||
16574 ( NULL == pWDICtx->pfncRspCB ) ||
16575 ( NULL == pEventData ) ||
16576 ( NULL == pEventData->pEventData))
16577 {
16578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016579 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 }
16583
16584 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16585
16586 /*-------------------------------------------------------------------------
16587 Extract response and send it to UMAC
16588 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016589 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16590 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016591 sizeof(halJoinRspMsg.joinRspParams));
16592
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016594
16595 wpalMutexAcquire(&pWDICtx->wptMutex);
16596
16597 /*-----------------------------------------------------------------------
16598 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016599 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016601 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016602 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16603 {
16604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016605 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16606 "association no longer in progress %d - mysterious HAL response",
16607 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016608
Jeff Johnsone7245742012-09-05 17:12:55 -070016609 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016610 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016611 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016612 }
16613
16614 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16615
16616 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016617 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016618 -----------------------------------------------------------------------*/
16619 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16620 {
16621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16622 "Join only allowed in Joining state - failure state is %d "
16623 "strange HAL response", pBSSSes->wdiAssocState);
16624
Jeff Johnsone7245742012-09-05 17:12:55 -070016625 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16626
Jeff Johnson295189b2012-06-20 16:38:30 -070016627 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016629 }
16630
16631
16632 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016633 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 -----------------------------------------------------------------------*/
16635 if ( WDI_STATUS_SUCCESS != wdiStatus )
16636 {
16637 /*Association was failed by HAL - remove session*/
16638 WDI_DeleteSession(pWDICtx, pBSSSes);
16639
16640 /*Association no longer in progress */
16641 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16642
16643 /*Association no longer in progress - prepare pending assoc for processing*/
16644 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016645
Jeff Johnson295189b2012-06-20 16:38:30 -070016646 }
16647 else
16648 {
16649 /*Transition to state Joining - this may be redundant as we are supposed
16650 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016651 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016652 }
16653
16654 wpalMutexRelease(&pWDICtx->wptMutex);
16655
16656 /*Notify UMAC*/
16657 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16658
Jeff Johnsone7245742012-09-05 17:12:55 -070016659 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016660}/*WDI_ProcessJoinRsp*/
16661
16662
16663/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016664 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016665 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016666
16667 @param pWDICtx: pointer to the WLAN DAL context
16668 pEventData: pointer to the event information structure
16669
Jeff Johnson295189b2012-06-20 16:38:30 -070016670 @see
16671 @return Result of the function call
16672*/
16673WDI_Status
16674WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016675(
Jeff Johnson295189b2012-06-20 16:38:30 -070016676 WDI_ControlBlockType* pWDICtx,
16677 WDI_EventInfoType* pEventData
16678)
16679{
16680 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16681 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016682 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016683 WDI_BSSSessionType* pBSSSes = NULL;
16684
Jeff Johnsone7245742012-09-05 17:12:55 -070016685 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016686 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16687 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016688
Jeff Johnson295189b2012-06-20 16:38:30 -070016689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16690
16691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 -------------------------------------------------------------------------*/
16694 if (( NULL == pEventData ) ||
16695 ( NULL == pEventData->pEventData))
16696 {
16697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016701 }
16702
16703 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16704
16705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016706 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016707 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016708 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16709 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016710 sizeof(halConfigBssRspMsg.configBssRspParams));
16711
16712 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16713 halConfigBssRspMsg.configBssRspParams.status);
16714 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16715 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016716 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016717 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16718 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016719
Jeff Johnson295189b2012-06-20 16:38:30 -070016720 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016721
16722 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016723 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016724
16725 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016726 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016727
Jeff Johnson295189b2012-06-20 16:38:30 -070016728 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016729
Jeff Johnson295189b2012-06-20 16:38:30 -070016730 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016731 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016732 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16733 #endif
16734 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16735 halConfigBssRspMsg.configBssRspParams.staMac,
16736 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016737
Jeff Johnson295189b2012-06-20 16:38:30 -070016738 wpalMutexAcquire(&pWDICtx->wptMutex);
16739 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016740 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016741 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016742 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16743 wdiConfigBSSParams.macBSSID,
16744 &pBSSSes);
16745
Jeff Johnson295189b2012-06-20 16:38:30 -070016746 /*-----------------------------------------------------------------------
16747 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016748 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016749 -----------------------------------------------------------------------*/
16750 if ( NULL == pBSSSes )
16751 {
16752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16753 "Association sequence for this BSS does not yet exist "
16754 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016755
16756 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16757
Jeff Johnson295189b2012-06-20 16:38:30 -070016758 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016759 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016760 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016761
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 /*Save data for this BSS*/
16763 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16764 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016765 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016766 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016767 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016768 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016769 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016770 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016771 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016772 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016773 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016774 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16775 pBSSSes->bcastStaIdx =
16776 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016777
Jeff Johnson295189b2012-06-20 16:38:30 -070016778 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016779
Jeff Johnson295189b2012-06-20 16:38:30 -070016780 /*-------------------------------------------------------------------------
16781 Add Peer STA
16782 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016783 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016784 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16785 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016786
Jeff Johnson295189b2012-06-20 16:38:30 -070016787 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016788 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016789 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016790 wdiAddSTAParam.ucHTCapable =
16791 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16792 wdiAddSTAParam.ucStaType =
16793 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16794
Jeff Johnson295189b2012-06-20 16:38:30 -070016795 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016796 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16797 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016798 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016799
16800 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16801 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16802 WDI_MAC_ADDR_LEN);
16803
Jeff Johnson295189b2012-06-20 16:38:30 -070016804 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016805 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016806 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016807 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016810 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016811 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016812 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016813 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016814 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016815 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016816 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016817
Jeff Johnson295189b2012-06-20 16:38:30 -070016818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16819 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016820
Jeff Johnson295189b2012-06-20 16:38:30 -070016821 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16822 /*-------------------------------------------------------------------------
16823 Add Broadcast STA only in AP mode
16824 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016825 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016826 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016827 {
16828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16829 "Add BCAST STA to table for index: %d",
16830 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016831
16832 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016833 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016834
Jeff Johnson295189b2012-06-20 16:38:30 -070016835 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16836 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16837 }
16838 wpalMutexRelease(&pWDICtx->wptMutex);
16839 }
16840 else
16841 {
16842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16843 "Config BSS RSP failed with status : %s(%d)",
16844 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016845 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016846 halConfigBssRspMsg.configBssRspParams.status);
16847
Jeff Johnsone7245742012-09-05 17:12:55 -070016848
Jeff Johnson295189b2012-06-20 16:38:30 -070016849 /*Association was failed by HAL - remove session*/
16850 WDI_DeleteSession(pWDICtx, pBSSSes);
16851
16852 /*Association no longer in progress */
16853 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16854
16855 /*Association no longer in progress - prepare pending assoc for processing*/
16856 WDI_DequeueAssocRequest(pWDICtx);
16857
16858 }
16859
16860 /*Notify UMAC*/
16861 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16862
Jeff Johnsone7245742012-09-05 17:12:55 -070016863 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016864}/*WDI_ProcessConfigBSSRsp*/
16865
16866
16867/**
16868 @brief Process Del BSS Response function (called when a response
16869 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016870
16871 @param pWDICtx: pointer to the WLAN DAL context
16872 pEventData: pointer to the event information structure
16873
Jeff Johnson295189b2012-06-20 16:38:30 -070016874 @see
16875 @return Result of the function call
16876*/
16877WDI_Status
16878WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016879(
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 WDI_ControlBlockType* pWDICtx,
16881 WDI_EventInfoType* pEventData
16882)
16883{
16884 WDI_DelBSSRspParamsType wdiDelBSSParams;
16885 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016886 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016887 WDI_BSSSessionType* pBSSSes = NULL;
16888
Jeff Johnsone7245742012-09-05 17:12:55 -070016889 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16891
16892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016893 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016894 -------------------------------------------------------------------------*/
16895 if (( NULL == pEventData ) ||
16896 ( NULL == pEventData->pEventData))
16897 {
16898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016899 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016902 }
16903
16904 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16905
16906 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016907 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016908 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016909 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16910 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016911 sizeof(halDelBssRspMsg.deleteBssRspParams));
16912
16913
16914 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016915 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016916
16917 wpalMutexAcquire(&pWDICtx->wptMutex);
16918
16919 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016920 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016921 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016922 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16923 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16924 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016925
16926 /*-----------------------------------------------------------------------
16927 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016928 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016929 -----------------------------------------------------------------------*/
16930 if ( NULL == pBSSSes )
16931 {
16932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16933 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016934 "association no longer in progress - mysterious HAL response");
16935
16936 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16937
16938 wpalMutexRelease(&pWDICtx->wptMutex);
16939 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016940 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016941
16942 /*Extract BSSID for the response to UMAC*/
16943 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16944 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16945
16946 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16947
16948 /*-----------------------------------------------------------------------
16949 The current session will be deleted
16950 -----------------------------------------------------------------------*/
16951 WDI_DeleteSession(pWDICtx, pBSSSes);
16952
16953
16954 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016955 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16956 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016957 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016958 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016959 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016960
16961 /* Delete the STA's in this BSS */
16962 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16963
Jeff Johnson295189b2012-06-20 16:38:30 -070016964 wpalMutexRelease(&pWDICtx->wptMutex);
16965
16966 /*Notify UMAC*/
16967 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16968
Jeff Johnsone7245742012-09-05 17:12:55 -070016969 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016970}/*WDI_ProcessDelBSSRsp*/
16971
16972/**
16973 @brief Process Post Assoc Rsp function (called when a response
16974 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016975
16976 @param pWDICtx: pointer to the WLAN DAL context
16977 pEventData: pointer to the event information structure
16978
Jeff Johnson295189b2012-06-20 16:38:30 -070016979 @see
16980 @return Result of the function call
16981*/
16982WDI_Status
16983WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016984(
Jeff Johnson295189b2012-06-20 16:38:30 -070016985 WDI_ControlBlockType* pWDICtx,
16986 WDI_EventInfoType* pEventData
16987)
16988{
16989 WDI_PostAssocRspParamsType wdiPostAssocParams;
16990 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016991 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016992 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016993 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16995
16996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016998 -------------------------------------------------------------------------*/
16999 if (( NULL == pEventData ) ||
17000 ( NULL == pEventData->pEventData))
17001 {
17002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017006 }
17007
17008 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17009
17010 /*-------------------------------------------------------------------------
17011 Extract response and send it to UMAC
17012 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017013 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17014 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017015 sizeof(halPostAssocRspMsg.postAssocRspParams));
17016
17017 /*Extract the Post Assoc STA Params */
17018
Jeff Johnsone7245742012-09-05 17:12:55 -070017019 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017021 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017022 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017023 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17025
Jeff Johnsone7245742012-09-05 17:12:55 -070017026 wdiPostAssocParams.wdiStatus =
17027 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017028
17029 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17030 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017031 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17032 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017033 WDI_MAC_ADDR_LEN);
17034
17035 /* Extract Post Assoc BSS Params */
17036
Jeff Johnsone7245742012-09-05 17:12:55 -070017037 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17038 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17039 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017040
17041 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17042 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017043 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017044 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17045 .macSTA, WDI_MAC_ADDR_LEN);
17046
Jeff Johnsone7245742012-09-05 17:12:55 -070017047 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017048 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17049
Jeff Johnsone7245742012-09-05 17:12:55 -070017050 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017051 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17052
17053 wdiPostAssocParams.bssParams.ucBSSIdx =
17054 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17055
Jeff Johnsone7245742012-09-05 17:12:55 -070017056 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017057 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17058
17059 wpalMutexAcquire(&pWDICtx->wptMutex);
17060
17061 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017062 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017064 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017065 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017066 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017067
17068 /*-----------------------------------------------------------------------
17069 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017070 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017071 -----------------------------------------------------------------------*/
17072 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017073 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017074 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17075 {
17076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17077 "Association sequence for this BSS does not yet exist or "
17078 "association no longer in progress - mysterious HAL response");
17079
Jeff Johnsone7245742012-09-05 17:12:55 -070017080 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17081
Jeff Johnson295189b2012-06-20 16:38:30 -070017082 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017083 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017084 }
17085
17086 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017087 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017088 -----------------------------------------------------------------------*/
17089 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17090 {
17091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17092 "Post Assoc not allowed before JOIN - failing request "
17093 "strange HAL response");
17094
Jeff Johnsone7245742012-09-05 17:12:55 -070017095 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17096
Jeff Johnson295189b2012-06-20 16:38:30 -070017097 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017098 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017099 }
17100
17101 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017102 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017103 -----------------------------------------------------------------------*/
17104 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17105 {
17106 /*Association was failed by HAL - remove session*/
17107 WDI_DeleteSession(pWDICtx, pBSSSes);
17108 }
17109 else
17110 {
17111 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017112 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017113
17114 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017115 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017116 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017117 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017118 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017119 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017121 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017122 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17123
Jeff Johnsone7245742012-09-05 17:12:55 -070017124 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017125 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17126 }
17127
17128 /*Association no longer in progress */
17129 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17130
17131 /*Association no longer in progress - prepare pending assoc for processing*/
17132 WDI_DequeueAssocRequest(pWDICtx);
17133
17134 wpalMutexRelease(&pWDICtx->wptMutex);
17135
17136 /*Notify UMAC*/
17137 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17138
Jeff Johnsone7245742012-09-05 17:12:55 -070017139 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017140}/*WDI_ProcessPostAssocRsp*/
17141
17142/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017143 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017144 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017145
17146 @param pWDICtx: pointer to the WLAN DAL context
17147 pEventData: pointer to the event information structure
17148
Jeff Johnson295189b2012-06-20 16:38:30 -070017149 @see
17150 @return Result of the function call
17151*/
17152WDI_Status
17153WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017154(
Jeff Johnson295189b2012-06-20 16:38:30 -070017155 WDI_ControlBlockType* pWDICtx,
17156 WDI_EventInfoType* pEventData
17157)
17158{
17159 WDI_DelSTARspParamsType wdiDelSTARsp;
17160 WDI_DelSTARspCb wdiDelSTARspCb;
17161 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017162 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17164
17165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017167 -------------------------------------------------------------------------*/
17168 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17169 ( NULL == pEventData->pEventData))
17170 {
17171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017172 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017175 }
17176
17177 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17178
17179 /*-------------------------------------------------------------------------
17180 Extract response and send it to UMAC
17181 -------------------------------------------------------------------------*/
17182 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017183 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017184 sizeof(halDelStaRspMsg.delStaRspParams));
17185
17186 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017187 wdiDelSTARsp.wdiStatus =
17188 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017189
17190 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17191
17192 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17193 if(staType == WDI_STA_ENTRY_SELF)
17194 {
17195 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17196
17197 /* At this point add the self-STA */
17198
17199 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17200 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17201 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17202
17203#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17204#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17205
17206 //all DPU indices are the same for self STA
17207 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17208 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17209 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17210 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17211 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17212 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017213
17214 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017215 }
17216 else
17217 {
17218 //Delete the station in the table
17219 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17220 }
17221
17222 /*Notify UMAC*/
17223 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17224
Jeff Johnsone7245742012-09-05 17:12:55 -070017225 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017226}/*WDI_ProcessDelSTARsp*/
17227
17228
17229/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017230 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017231==========================================================================*/
17232
17233/**
17234 @brief Process Set BSS Key Rsp function (called when a response
17235 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017236
17237 @param pWDICtx: pointer to the WLAN DAL context
17238 pEventData: pointer to the event information structure
17239
Jeff Johnson295189b2012-06-20 16:38:30 -070017240 @see
17241 @return Result of the function call
17242*/
17243WDI_Status
17244WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017245(
Jeff Johnson295189b2012-06-20 16:38:30 -070017246 WDI_ControlBlockType* pWDICtx,
17247 WDI_EventInfoType* pEventData
17248)
17249{
17250 WDI_Status wdiStatus;
17251 eHalStatus halStatus;
17252 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17254
17255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017256 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 -------------------------------------------------------------------------*/
17258 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17259 ( NULL == pEventData->pEventData))
17260 {
17261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017265 }
17266
17267 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17268
17269 /*-------------------------------------------------------------------------
17270 Extract response and send it to UMAC
17271 -------------------------------------------------------------------------*/
17272 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017273 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017274
17275 if ( eHAL_STATUS_SUCCESS != halStatus )
17276 {
17277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17278 "Set BSS Key failed with status %s (%d)",
17279 WDI_getHALStatusMsgString(halStatus),
17280 halStatus);
17281 /* send the status to UMAC, don't return from here*/
17282 }
17283
17284 /*Notify UMAC*/
17285 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17286
Jeff Johnsone7245742012-09-05 17:12:55 -070017287 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017288}/*WDI_ProcessSetBssKeyRsp*/
17289
17290/**
17291 @brief Process Remove BSS Key Rsp function (called when a response
17292 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017293
17294 @param pWDICtx: pointer to the WLAN DAL context
17295 pEventData: pointer to the event information structure
17296
Jeff Johnson295189b2012-06-20 16:38:30 -070017297 @see
17298 @return Result of the function call
17299*/
17300WDI_Status
17301WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017302(
Jeff Johnson295189b2012-06-20 16:38:30 -070017303 WDI_ControlBlockType* pWDICtx,
17304 WDI_EventInfoType* pEventData
17305)
17306{
17307 WDI_Status wdiStatus;
17308 eHalStatus halStatus;
17309 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17311
17312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017313 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017314 -------------------------------------------------------------------------*/
17315 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17316 ( NULL == pEventData->pEventData))
17317 {
17318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017319 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017322 }
17323
17324 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17325
17326 /*-------------------------------------------------------------------------
17327 Extract response and send it to UMAC
17328 -------------------------------------------------------------------------*/
17329 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017330 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017331
17332 if ( eHAL_STATUS_SUCCESS != halStatus )
17333 {
17334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17335 "Remove BSS Key failed with status %s (%d )",
17336 WDI_getHALStatusMsgString(halStatus),
17337 halStatus);
17338 /* send the status to UMAC, don't return from here*/
17339 }
17340
17341 /*Notify UMAC*/
17342 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17343
Jeff Johnsone7245742012-09-05 17:12:55 -070017344 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017345}/*WDI_ProcessSetBssKeyRsp*/
17346
17347
17348/**
17349 @brief Process Set STA Key Rsp function (called when a response
17350 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017351
17352 @param pWDICtx: pointer to the WLAN DAL context
17353 pEventData: pointer to the event information structure
17354
Jeff Johnson295189b2012-06-20 16:38:30 -070017355 @see
17356 @return Result of the function call
17357*/
17358WDI_Status
17359WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017360(
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 WDI_ControlBlockType* pWDICtx,
17362 WDI_EventInfoType* pEventData
17363)
17364{
17365 WDI_Status wdiStatus;
17366 eHalStatus halStatus;
17367 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17369
17370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 -------------------------------------------------------------------------*/
17373 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17374 ( NULL == pEventData->pEventData))
17375 {
17376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 }
17381
17382 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17383
17384 /*-------------------------------------------------------------------------
17385 Extract response and send it to UMAC
17386 -------------------------------------------------------------------------*/
17387 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017388 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017389
17390 if ( eHAL_STATUS_SUCCESS != halStatus )
17391 {
17392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17393 "Set STA Key failed with status %s (%d)",
17394 WDI_getHALStatusMsgString(halStatus),
17395 halStatus);
17396 /* send the status to UMAC, don't return from here*/
17397 }
17398
17399 /*Notify UMAC*/
17400 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17401
Jeff Johnsone7245742012-09-05 17:12:55 -070017402 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017403}/*WDI_ProcessSetSTAKeyRsp*/
17404
17405/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017406 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017407 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017408
17409 @param pWDICtx: pointer to the WLAN DAL context
17410 pEventData: pointer to the event information structure
17411
Jeff Johnson295189b2012-06-20 16:38:30 -070017412 @see
17413 @return Result of the function call
17414*/
17415WDI_Status
17416WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017417(
Jeff Johnson295189b2012-06-20 16:38:30 -070017418 WDI_ControlBlockType* pWDICtx,
17419 WDI_EventInfoType* pEventData
17420)
17421{
17422 WDI_Status wdiStatus;
17423 eHalStatus halStatus;
17424 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17426
17427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017429 -------------------------------------------------------------------------*/
17430 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17431 ( NULL == pEventData->pEventData))
17432 {
17433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017437 }
17438
17439 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17440
17441 /*-------------------------------------------------------------------------
17442 Extract response and send it to UMAC
17443 -------------------------------------------------------------------------*/
17444 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017445 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017446
17447 if ( eHAL_STATUS_SUCCESS != halStatus )
17448 {
17449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17450 "Remove STA Key failed with status %s (%d)",
17451 WDI_getHALStatusMsgString(halStatus),
17452 halStatus);
17453 /* send the status to UMAC, don't return from here*/
17454 }
17455
17456 /*Notify UMAC*/
17457 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17458
Jeff Johnsone7245742012-09-05 17:12:55 -070017459 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017460}/*WDI_ProcessRemoveStaKeyRsp*/
17461
17462/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017463 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017464 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017465
17466 @param pWDICtx: pointer to the WLAN DAL context
17467 pEventData: pointer to the event information structure
17468
Jeff Johnson295189b2012-06-20 16:38:30 -070017469 @see
17470 @return Result of the function call
17471*/
17472WDI_Status
17473WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017474(
Jeff Johnson295189b2012-06-20 16:38:30 -070017475 WDI_ControlBlockType* pWDICtx,
17476 WDI_EventInfoType* pEventData
17477)
17478{
17479 WDI_Status wdiStatus;
17480 eHalStatus halStatus;
17481 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17483
17484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017486 -------------------------------------------------------------------------*/
17487 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17488 ( NULL == pEventData->pEventData))
17489 {
17490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017491 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017494 }
17495
17496 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17497
17498 /*-------------------------------------------------------------------------
17499 Extract response and send it to UMAC
17500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017501 wpalMemoryCopy( &halStatus,
17502 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017503 sizeof(halStatus));
17504
Jeff Johnsone7245742012-09-05 17:12:55 -070017505 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017506
17507 if ( eHAL_STATUS_SUCCESS != halStatus )
17508 {
17509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17510 "Set STA Key failed with status %s (%d)",
17511 WDI_getHALStatusMsgString(halStatus),
17512 halStatus);
17513 /* send the status to UMAC, don't return from here*/
17514 }
17515
17516 /*Notify UMAC*/
17517 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17518
Jeff Johnsone7245742012-09-05 17:12:55 -070017519 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017520}/*WDI_ProcessSetSTABcastKeyRsp*/
17521
17522/**
17523 @brief Process Remove STA Bcast Key Rsp function (called when a
17524 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017525
17526 @param pWDICtx: pointer to the WLAN DAL context
17527 pEventData: pointer to the event information structure
17528
Jeff Johnson295189b2012-06-20 16:38:30 -070017529 @see
17530 @return Result of the function call
17531*/
17532WDI_Status
17533WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017534(
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 WDI_ControlBlockType* pWDICtx,
17536 WDI_EventInfoType* pEventData
17537)
17538{
17539 WDI_Status wdiStatus;
17540 eHalStatus halStatus;
17541 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17543
17544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 -------------------------------------------------------------------------*/
17547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17548 ( NULL == pEventData->pEventData))
17549 {
17550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017554 }
17555
17556 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17557
17558 /*-------------------------------------------------------------------------
17559 Extract response and send it to UMAC
17560 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017561 wpalMemoryCopy( &halStatus,
17562 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017563 sizeof(halStatus));
17564
Jeff Johnsone7245742012-09-05 17:12:55 -070017565 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017566
17567 if ( eHAL_STATUS_SUCCESS != halStatus )
17568 {
17569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17570 "Remove STA Key failed with status %s (%d)",
17571 WDI_getHALStatusMsgString(halStatus),
17572 halStatus);
17573 /* send the status to UMAC, don't return from here*/
17574 }
17575
17576 /*Notify UMAC*/
17577 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17578
Jeff Johnsone7245742012-09-05 17:12:55 -070017579 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017580}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17581
17582
17583/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017584 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017585==========================================================================*/
17586
17587/**
17588 @brief Process Add TSpec Rsp function (called when a response
17589 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017590
17591 @param pWDICtx: pointer to the WLAN DAL context
17592 pEventData: pointer to the event information structure
17593
Jeff Johnson295189b2012-06-20 16:38:30 -070017594 @see
17595 @return Result of the function call
17596*/
17597WDI_Status
17598WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017599(
Jeff Johnson295189b2012-06-20 16:38:30 -070017600 WDI_ControlBlockType* pWDICtx,
17601 WDI_EventInfoType* pEventData
17602)
17603{
17604 WDI_Status wdiStatus;
17605 eHalStatus halStatus;
17606 WDI_AddTsRspCb wdiAddTsRspCb;
17607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17608
17609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017611 -------------------------------------------------------------------------*/
17612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17613 ( NULL == pEventData->pEventData))
17614 {
17615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017619 }
17620
17621 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17622
17623 /*-------------------------------------------------------------------------
17624 Extract response and send it to UMAC
17625 -------------------------------------------------------------------------*/
17626 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017627 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017628
17629 /*Notify UMAC*/
17630 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17631
Jeff Johnsone7245742012-09-05 17:12:55 -070017632 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017633}/*WDI_ProcessAddTSpecRsp*/
17634
17635
Sunil Duttbd736ed2014-05-26 21:19:41 +053017636
17637#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17638
17639WDI_Status
17640WDI_ProcessLLStatsSetRsp
17641(
17642 WDI_ControlBlockType* pWDICtx,
17643 WDI_EventInfoType* pEventData
17644)
17645{
17646 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17647
17648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17649 "%s: Enter ", __func__);
17650 /*-------------------------------------------------------------------------
17651 Sanity check
17652 -------------------------------------------------------------------------*/
17653 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17654 ( NULL == pEventData->pEventData))
17655 {
17656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17657 "%s: Invalid parameters", __func__);
17658 WDI_ASSERT(0);
17659 return WDI_STATUS_E_FAILURE;
17660 }
17661
17662 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17663
17664 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17665
17666 return WDI_STATUS_SUCCESS;
17667}
17668
17669WDI_Status
17670WDI_ProcessLLStatsGetRsp
17671(
17672 WDI_ControlBlockType* pWDICtx,
17673 WDI_EventInfoType* pEventData
17674)
17675{
17676 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17677
17678 /*-------------------------------------------------------------------------
17679 Sanity check
17680 -------------------------------------------------------------------------*/
17681 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17682 ( NULL == pEventData->pEventData))
17683 {
17684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17685 "%s: Invalid parameters", __func__);
17686 WDI_ASSERT(0);
17687 return WDI_STATUS_E_FAILURE;
17688 }
17689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17690 "%s: Enter ", __func__);
17691
17692 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17693
17694 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17695
17696 return WDI_STATUS_SUCCESS;
17697}
17698
17699WDI_Status
17700WDI_ProcessLLStatsClearRsp
17701(
17702 WDI_ControlBlockType* pWDICtx,
17703 WDI_EventInfoType* pEventData
17704)
17705{
17706 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17707
17708 /*-------------------------------------------------------------------------
17709 Sanity check
17710 -------------------------------------------------------------------------*/
17711 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17712 ( NULL == pEventData->pEventData))
17713 {
17714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17715 "%s: Invalid parameters", __func__);
17716 WDI_ASSERT(0);
17717 return WDI_STATUS_E_FAILURE;
17718 }
17719
17720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17721 "%s: CLEAR RESPONSE CALL BACK", __func__);
17722 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17723
17724 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17725
17726 return WDI_STATUS_SUCCESS;
17727}
17728#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17729
Jeff Johnson295189b2012-06-20 16:38:30 -070017730/**
17731 @brief Process Del TSpec Rsp function (called when a response
17732 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017733
17734 @param pWDICtx: pointer to the WLAN DAL context
17735 pEventData: pointer to the event information structure
17736
Jeff Johnson295189b2012-06-20 16:38:30 -070017737 @see
17738 @return Result of the function call
17739*/
17740WDI_Status
17741WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017742(
Jeff Johnson295189b2012-06-20 16:38:30 -070017743 WDI_ControlBlockType* pWDICtx,
17744 WDI_EventInfoType* pEventData
17745)
17746{
17747 WDI_Status wdiStatus;
17748 eHalStatus halStatus;
17749 WDI_DelTsRspCb wdiDelTsRspCb;
17750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17751
17752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017754 -------------------------------------------------------------------------*/
17755 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17756 ( NULL == pEventData->pEventData))
17757 {
17758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017759 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017762 }
17763
17764 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17765
17766 /*-------------------------------------------------------------------------
17767 Extract response and send it to UMAC
17768 -------------------------------------------------------------------------*/
17769 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017770 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017771
17772 /*Notify UMAC*/
17773 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17774
Jeff Johnsone7245742012-09-05 17:12:55 -070017775 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017776}/*WDI_ProcessDelTSpecRsp*/
17777
17778/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017779 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017780 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017781
17782 @param pWDICtx: pointer to the WLAN DAL context
17783 pEventData: pointer to the event information structure
17784
Jeff Johnson295189b2012-06-20 16:38:30 -070017785 @see
17786 @return Result of the function call
17787*/
17788WDI_Status
17789WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017790(
Jeff Johnson295189b2012-06-20 16:38:30 -070017791 WDI_ControlBlockType* pWDICtx,
17792 WDI_EventInfoType* pEventData
17793)
17794{
17795 WDI_Status wdiStatus;
17796 eHalStatus halStatus;
17797 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17799
17800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017802 -------------------------------------------------------------------------*/
17803 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17804 ( NULL == pEventData->pEventData))
17805 {
17806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017810 }
17811
17812 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17813
17814 /*-------------------------------------------------------------------------
17815 Extract response and send it to UMAC
17816 -------------------------------------------------------------------------*/
17817 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017818 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017819
17820 /*Notify UMAC*/
17821 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17822
Jeff Johnsone7245742012-09-05 17:12:55 -070017823 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017824}/*WDI_ProcessUpdateEDCAParamsRsp*/
17825
17826
17827/**
17828 @brief Process Add BA Rsp function (called when a response
17829 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017830
17831 @param pWDICtx: pointer to the WLAN DAL context
17832 pEventData: pointer to the event information structure
17833
Jeff Johnson295189b2012-06-20 16:38:30 -070017834 @see
17835 @return Result of the function call
17836*/
17837WDI_Status
17838WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017839(
Jeff Johnson295189b2012-06-20 16:38:30 -070017840 WDI_ControlBlockType* pWDICtx,
17841 WDI_EventInfoType* pEventData
17842)
17843{
17844 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17845
17846 tAddBASessionRspParams halBASessionRsp;
17847 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17848
Jeff Johnsone7245742012-09-05 17:12:55 -070017849
Jeff Johnson295189b2012-06-20 16:38:30 -070017850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17851
17852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017853 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017854 -------------------------------------------------------------------------*/
17855 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17856 ( NULL == pEventData->pEventData))
17857 {
17858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017859 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017860 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017862 }
17863
17864 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17865
17866 /*-------------------------------------------------------------------------
17867 Extract response and send it to UMAC
17868 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017869 wpalMemoryCopy( &halBASessionRsp,
17870 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017871 sizeof(halBASessionRsp));
17872
17873 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17874
Jeff Johnson43971f52012-07-17 12:26:56 -070017875 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017876 {
17877 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17878 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17879 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17880 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17881 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17882 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17883 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17884 }
17885
17886 /*Notify UMAC*/
17887 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17888
Jeff Johnsone7245742012-09-05 17:12:55 -070017889 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017890}/*WDI_ProcessAddSessionBARsp*/
17891
17892
17893/**
17894 @brief Process Del BA Rsp function (called when a response
17895 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017896
17897 @param pWDICtx: pointer to the WLAN DAL context
17898 pEventData: pointer to the event information structure
17899
Jeff Johnson295189b2012-06-20 16:38:30 -070017900 @see
17901 @return Result of the function call
17902*/
17903WDI_Status
17904WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017905(
Jeff Johnson295189b2012-06-20 16:38:30 -070017906 WDI_ControlBlockType* pWDICtx,
17907 WDI_EventInfoType* pEventData
17908)
17909{
17910 WDI_Status wdiStatus;
17911 eHalStatus halStatus;
17912 WDI_DelBARspCb wdiDelBARspCb;
17913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17914
17915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017917 -------------------------------------------------------------------------*/
17918 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17919 ( NULL == pEventData->pEventData))
17920 {
17921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017923 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017925 }
17926
17927 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17928
17929 /*-------------------------------------------------------------------------
17930 Extract response and send it to UMAC
17931 -------------------------------------------------------------------------*/
17932 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017933 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017934
17935 if ( eHAL_STATUS_SUCCESS == halStatus )
17936 {
17937 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17938 }
17939
17940 /*Notify UMAC*/
17941 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17942
Jeff Johnsone7245742012-09-05 17:12:55 -070017943 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017944}/*WDI_ProcessDelBARsp*/
17945
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017946#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017947/**
17948 @brief Process TSM Stats Rsp function (called when a response
17949 is being received over the bus from HAL)
17950
17951 @param pWDICtx: pointer to the WLAN DAL context
17952 pEventData: pointer to the event information structure
17953
17954 @see
17955 @return Result of the function call
17956*/
17957WDI_Status
17958WDI_ProcessTsmStatsRsp
17959(
17960 WDI_ControlBlockType* pWDICtx,
17961 WDI_EventInfoType* pEventData
17962)
17963{
17964 WDI_TsmRspCb wdiTsmStatsRspCb;
17965 tTsmStatsRspMsg halTsmStatsRspMsg;
17966 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17968
17969 /*-------------------------------------------------------------------------
17970 Sanity check
17971 -------------------------------------------------------------------------*/
17972 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17973 ( NULL == pEventData->pEventData))
17974 {
17975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017977 WDI_ASSERT(0);
17978 return WDI_STATUS_E_FAILURE;
17979 }
17980
17981 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17982
17983 /*-------------------------------------------------------------------------
17984 Unpack HAL Response Message - the header was already extracted by the
17985 main Response Handling procedure
17986 -------------------------------------------------------------------------*/
17987 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17988 pEventData->pEventData,
17989 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17990
17991 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17992 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17993 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17994 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17995 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17996 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17997 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17998 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17999 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18000 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18001 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18002 halTsmStatsRspMsg.tsmStatsRspParams.status);
18003
18004 /*Notify UMAC*/
18005 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18006
18007 return WDI_STATUS_SUCCESS;
18008}/*WDI_ProcessTsmStatsRsp*/
18009
18010#endif
18011
18012
18013
18014/**
18015 @brief Process Flush AC Rsp function (called when a response
18016 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018017
18018 @param pWDICtx: pointer to the WLAN DAL context
18019 pEventData: pointer to the event information structure
18020
Jeff Johnson295189b2012-06-20 16:38:30 -070018021 @see
18022 @return Result of the function call
18023*/
18024WDI_Status
18025WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018026(
Jeff Johnson295189b2012-06-20 16:38:30 -070018027 WDI_ControlBlockType* pWDICtx,
18028 WDI_EventInfoType* pEventData
18029)
18030{
18031 WDI_Status wdiStatus;
18032 eHalStatus halStatus;
18033 WDI_FlushAcRspCb wdiFlushAcRspCb;
18034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18035
18036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018037 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 -------------------------------------------------------------------------*/
18039 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18040 ( NULL == pEventData->pEventData))
18041 {
18042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018043 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018046 }
18047
18048 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18049
18050 /*-------------------------------------------------------------------------
18051 Extract response and send it to UMAC
18052 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018053 wpalMemoryCopy( &halStatus,
18054 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018055 sizeof(halStatus));
18056
Jeff Johnsone7245742012-09-05 17:12:55 -070018057 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018058
18059 /*Notify UMAC*/
18060 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18061
Jeff Johnsone7245742012-09-05 17:12:55 -070018062 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018063}/*WDI_ProcessFlushAcRsp*/
18064
18065/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018066 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018067 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018068
18069 @param pWDICtx: pointer to the WLAN DAL context
18070 pEventData: pointer to the event information structure
18071
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 @see
18073 @return Result of the function call
18074*/
18075WDI_Status
18076WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018077(
Jeff Johnson295189b2012-06-20 16:38:30 -070018078 WDI_ControlBlockType* pWDICtx,
18079 WDI_EventInfoType* pEventData
18080)
18081{
18082 WDI_Status wdiStatus;
18083 eHalStatus halStatus;
18084 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18086
18087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018088 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018089 -------------------------------------------------------------------------*/
18090 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18091 ( NULL == pEventData->pEventData))
18092 {
18093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018097 }
18098
18099 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18100
18101 /*-------------------------------------------------------------------------
18102 Extract response and send it to UMAC
18103 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018104 wpalMemoryCopy( &halStatus,
18105 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018106 sizeof(halStatus));
18107
Jeff Johnsone7245742012-09-05 17:12:55 -070018108 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018109
18110 /*Notify UMAC*/
18111 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18112
Jeff Johnsone7245742012-09-05 17:12:55 -070018113 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018114}/*WDI_ProcessBtAmpEventRsp*/
18115
18116
18117/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018118 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018119 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018120
18121 @param pWDICtx: pointer to the WLAN DAL context
18122 pEventData: pointer to the event information structure
18123
Jeff Johnson295189b2012-06-20 16:38:30 -070018124 @see
18125 @return Result of the function call
18126*/
18127WDI_Status
18128WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018129(
Jeff Johnson295189b2012-06-20 16:38:30 -070018130 WDI_ControlBlockType* pWDICtx,
18131 WDI_EventInfoType* pEventData
18132)
18133{
18134 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18135 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18136 tAddStaSelfRspMsg halAddStaSelfRsp;
18137 WDI_AddStaParams wdiAddSTAParam = {0};
18138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18139
18140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018141 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018142 -------------------------------------------------------------------------*/
18143 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18144 ( NULL == pEventData->pEventData))
18145 {
18146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018147 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018148 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018150 }
18151
Jeff Johnsone7245742012-09-05 17:12:55 -070018152 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018153 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18154
18155 /*-------------------------------------------------------------------------
18156 Extract response and send it to UMAC
18157 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018158 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18159 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018160 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18161
18162
Jeff Johnsone7245742012-09-05 17:12:55 -070018163 wdiAddSTASelfParams.wdiStatus =
18164 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018165
Jeff Johnsone7245742012-09-05 17:12:55 -070018166 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018167 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018168 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018169 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018170 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018171 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18172
18173 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18174 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18175 WDI_MAC_ADDR_LEN);
18176
18177
18178#ifdef HAL_SELF_STA_PER_BSS
18179
18180 /* At this point add the self-STA */
18181
18182 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18183 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18184 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18185
18186 //all DPU indices are the same for self STA
18187
18188 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018189 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018190 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18191 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18192 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18193 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18194 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18195
18196 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18197 WDI_MAC_ADDR_LEN);
18198
18199 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18200 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18201
Jeff Johnsone7245742012-09-05 17:12:55 -070018202 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018203 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18204 {
18205 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18206 }
18207#endif
18208
18209 /*Notify UMAC*/
18210 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18211
Jeff Johnsone7245742012-09-05 17:12:55 -070018212 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018213}/*WDI_ProcessAddSTASelfRsp*/
18214
18215
18216
18217/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018220
18221 @param pWDICtx: pointer to the WLAN DAL context
18222 pEventData: pointer to the event information structure
18223
Jeff Johnson295189b2012-06-20 16:38:30 -070018224 @see
18225 @return Result of the function call
18226*/
18227WDI_Status
18228WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018229(
Jeff Johnson295189b2012-06-20 16:38:30 -070018230 WDI_ControlBlockType* pWDICtx,
18231 WDI_EventInfoType* pEventData
18232)
18233{
18234 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18235 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18236 tDelStaSelfRspParams delStaSelfRspParams;
18237 wpt_uint8 ucStaIdx;
18238
18239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18240
18241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018243 -------------------------------------------------------------------------*/
18244 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18245 ( NULL == pEventData->pEventData))
18246 {
18247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018251 }
18252
18253 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18254
18255 /*-------------------------------------------------------------------------
18256 Extract response and send it to UMAC
18257 -------------------------------------------------------------------------*/
18258
Jeff Johnsone7245742012-09-05 17:12:55 -070018259 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018260 (wpt_uint8*)pEventData->pEventData,
18261 sizeof(tDelStaSelfRspParams));
18262
Jeff Johnsone7245742012-09-05 17:12:55 -070018263 wdiDelStaSelfRspParams.wdiStatus =
18264 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018265
Jeff Johnsone7245742012-09-05 17:12:55 -070018266 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018267 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18268 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18269 {
18270 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018271 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018272 delStaSelfRspParams.selfMacAddr,
18273 &ucStaIdx);
18274 if(WDI_STATUS_E_FAILURE == wdiStatus)
18275 {
18276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018277 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018280 }
18281 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18282 }
18283
18284 /*Notify UMAC*/
18285 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18286
18287 return WDI_STATUS_SUCCESS;
18288}
18289
Jeff Johnsone7245742012-09-05 17:12:55 -070018290#ifdef FEATURE_OEM_DATA_SUPPORT
18291/**
18292 @brief Start Oem Data Rsp function (called when a
18293 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018294
Jeff Johnsone7245742012-09-05 17:12:55 -070018295 @param pWDICtx: pointer to the WLAN DAL context
18296 pEventData: pointer to the event information structure
18297
18298 @see
18299 @return Result of the function call
18300*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018301
18302WDI_Status
18303WDI_ProcessStartOemDataRsp
18304(
18305 WDI_ControlBlockType* pWDICtx,
18306 WDI_EventInfoType* pEventData
18307)
18308{
18309 WDI_oemDataRspCb wdiOemDataRspCb;
18310 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18311 tStartOemDataRspParams* halStartOemDataRspParams;
18312
18313 /*-------------------------------------------------------------------------
18314 Sanity check
18315 -------------------------------------------------------------------------*/
18316 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18317 ( NULL == pEventData->pEventData))
18318 {
18319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018320 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018321 WDI_ASSERT(0);
18322 return WDI_STATUS_E_FAILURE;
18323 }
18324
18325 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18326
18327 /*-------------------------------------------------------------------------
18328 Extract response and send it to UMAC
18329 -------------------------------------------------------------------------*/
18330 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18331
18332
18333 //It is the responsibility of the application code to check for failure
18334 //conditions!
18335
18336 //Allocate memory for WDI OEM DATA RSP structure
18337 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18338
18339 if(NULL == wdiOemDataRspParams)
18340 {
18341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018342 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018343 pWDICtx, pEventData, pEventData->pEventData);
18344 WDI_ASSERT(0);
18345 return WDI_STATUS_E_FAILURE;
18346 }
18347
18348 /* Populate WDI structure members */
18349 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18350
18351 /*Notify UMAC*/
18352 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18353
18354 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18355 wpalMemoryFree(wdiOemDataRspParams);
18356
18357 return WDI_STATUS_SUCCESS;
18358}/*WDI_PrcoessStartOemDataRsp*/
18359#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018360
18361/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018362 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018363===========================================================================*/
18364
18365/**
18366 @brief Process Channel Switch Rsp function (called when a response
18367 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018368
18369 @param pWDICtx: pointer to the WLAN DAL context
18370 pEventData: pointer to the event information structure
18371
Jeff Johnson295189b2012-06-20 16:38:30 -070018372 @see
18373 @return Result of the function call
18374*/
18375WDI_Status
18376WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018377(
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 WDI_ControlBlockType* pWDICtx,
18379 WDI_EventInfoType* pEventData
18380)
18381{
18382 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18383 WDI_SwitchChRspCb wdiChSwitchRspCb;
18384 tSwitchChannelRspParams halSwitchChannelRsp;
18385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18386
18387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018389 -------------------------------------------------------------------------*/
18390 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18391 ( NULL == pEventData->pEventData))
18392 {
18393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018394 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018395 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018396 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018397 }
18398
18399 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18400
18401 /*-------------------------------------------------------------------------
18402 Extract response and send it to UMAC
18403 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018404 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018405 (wpt_uint8*)pEventData->pEventData,
18406 sizeof(halSwitchChannelRsp));
18407
Jeff Johnsone7245742012-09-05 17:12:55 -070018408 wdiSwitchChRsp.wdiStatus =
18409 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018410 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18411
18412#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018413 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018414#endif
18415
18416 /*Notify UMAC*/
18417 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18418
Jeff Johnsone7245742012-09-05 17:12:55 -070018419 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018420}/*WDI_ProcessChannelSwitchRsp*/
18421
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018422/**
18423 @brief Process Channel Switch Rsp function (called when a response
18424 is being received over the bus from HAL against
18425 WDI_ProcessChannelSwitchReq_V1)
18426
18427 @param pWDICtx: pointer to the WLAN DAL context
18428 pEventData: pointer to the event information structure
18429
18430 @see
18431 @return Result of the function call
18432*/
18433
18434WDI_Status
18435WDI_ProcessChannelSwitchRsp_V1
18436(
18437 WDI_ControlBlockType* pWDICtx,
18438 WDI_EventInfoType* pEventData
18439)
18440{
18441 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18442 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18443 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18445
18446 /*-------------------------------------------------------------------------
18447 Sanity check
18448 -------------------------------------------------------------------------*/
18449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18450 ( NULL == pEventData->pEventData))
18451 {
18452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18453 "%s: Invalid parameters", __func__);
18454 WDI_ASSERT(0);
18455 return WDI_STATUS_E_FAILURE;
18456 }
18457
18458 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18459
18460 /*-------------------------------------------------------------------------
18461 Extract response and send it to UMAC
18462 -------------------------------------------------------------------------*/
18463 wpalMemoryCopy( &halSwitchChannelRsp,
18464 (wpt_uint8*)pEventData->pEventData,
18465 sizeof(halSwitchChannelRsp));
18466
18467 wdiSwitchChRsp.wdiStatus =
18468 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18469 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18470
18471#ifdef WLAN_FEATURE_VOWIFI
18472 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18473#endif
18474
18475 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18476 if (( NULL == wdiChSwitchRspCb ) )
18477 {
18478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18479 "%s: ### Call back function is null", __func__);
18480 WDI_ASSERT(0);
18481 return WDI_STATUS_E_FAILURE;
18482 }
18483 /*Notify UMAC*/
18484 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18485
18486 return WDI_STATUS_SUCCESS;
18487}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018488
18489/**
18490 @brief Process Config STA Rsp function (called when a response
18491 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018492
18493 @param pWDICtx: pointer to the WLAN DAL context
18494 pEventData: pointer to the event information structure
18495
Jeff Johnson295189b2012-06-20 16:38:30 -070018496 @see
18497 @return Result of the function call
18498*/
18499WDI_Status
18500WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018501(
Jeff Johnson295189b2012-06-20 16:38:30 -070018502 WDI_ControlBlockType* pWDICtx,
18503 WDI_EventInfoType* pEventData
18504)
18505{
18506 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18507 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18508 WDI_AddStaParams wdiAddSTAParam;
18509
18510 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018511 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018512
Jeff Johnsone7245742012-09-05 17:12:55 -070018513 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18515
18516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018518 -------------------------------------------------------------------------*/
18519 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18520 ( NULL == pEventData->pEventData))
18521 {
18522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018523 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018526 }
18527
18528 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18529
18530 /*-------------------------------------------------------------------------
18531 Extract response and send it to UMAC
18532 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018533 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18534 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018535 sizeof(halConfigStaRsp.configStaRspParams));
18536
18537
18538 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18539 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18540 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18541 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18542 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18543
18544 /* MAC Address of STA - take from cache as it does not come back in the
18545 response*/
18546 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018547 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018548 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018549
18550 wdiCfgSTAParams.wdiStatus =
18551 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018552
18553 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18554 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18555 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18556
18557 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18558 {
18559 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18560 {
18561 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018562 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018563 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18564 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018565
Jeff Johnson295189b2012-06-20 16:38:30 -070018566 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018567 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018568 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018569 wdiAddSTAParam.ucHTCapable =
18570 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18571 wdiAddSTAParam.ucStaType =
18572 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018573 wdiAddSTAParam.ucRmfEnabled =
18574 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018575
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018577 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18578 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018579 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018580
18581 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18582 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18583 WDI_MAC_ADDR_LEN);
18584
18585 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18586 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18587 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018588
18589 if ( NULL == pBSSSes )
18590 {
18591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18592 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018593
Jeff Johnson295189b2012-06-20 16:38:30 -070018594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018595 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018596 }
18597
18598 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018599 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018600 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018601 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018602 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018603 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018604 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018605 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018606 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018607 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018608
Jeff Johnson295189b2012-06-20 16:38:30 -070018609 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18610 }
18611 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18612 {
18613 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18614
Jeff Johnsone7245742012-09-05 17:12:55 -070018615 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018616 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018617 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018618 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018619 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018620 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018621 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018622 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018623 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018624 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018625 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018626 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018627 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018628 halConfigStaRsp.configStaRspParams.ucUcastSig;
18629 }
18630 }
18631
18632 /*Notify UMAC*/
18633 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18634
Jeff Johnsone7245742012-09-05 17:12:55 -070018635 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018636}/*WDI_ProcessConfigStaRsp*/
18637
18638
18639/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018640 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018641 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018642
18643 @param pWDICtx: pointer to the WLAN DAL context
18644 pEventData: pointer to the event information structure
18645
Jeff Johnson295189b2012-06-20 16:38:30 -070018646 @see
18647 @return Result of the function call
18648*/
18649WDI_Status
18650WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018651(
Jeff Johnson295189b2012-06-20 16:38:30 -070018652 WDI_ControlBlockType* pWDICtx,
18653 WDI_EventInfoType* pEventData
18654)
18655{
18656 WDI_Status wdiStatus;
18657 eHalStatus halStatus;
18658 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18659
18660 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018661 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18663
18664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018665 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018666 -------------------------------------------------------------------------*/
18667 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18668 ( NULL == pEventData->pEventData))
18669 {
18670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018674 }
18675
18676 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18677
18678 wpalMutexAcquire(&pWDICtx->wptMutex);
18679
18680 /*If the link is being transitioned to idle - the BSS is to be deleted
18681 - this type of ending a session is possible when UMAC has failed an
18682 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018683 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18685 {
18686 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018687 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018688 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018689 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18690 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18691 &pBSSSes);
18692
Jeff Johnson295189b2012-06-20 16:38:30 -070018693 /*-----------------------------------------------------------------------
18694 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018695 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018696 -----------------------------------------------------------------------*/
18697 if ( NULL == pBSSSes )
18698 {
18699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18700 "Set link response received outside association session");
18701 }
18702 else
18703 {
18704 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18705 will be del BSS coming after this to stop the beaconing & cleaning up the
18706 sessions*/
18707 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18708 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18709 {
18710 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018711 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018712 -----------------------------------------------------------------------*/
18713 WDI_DeleteSession(pWDICtx, pBSSSes);
18714
18715 /*-----------------------------------------------------------------------
18716 Check to see if this association is in progress - if so disable the
18717 flag as this has ended
18718 -----------------------------------------------------------------------*/
18719 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018720 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018721 /*Association no longer in progress */
18722 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18723 /*Association no longer in progress - prepare pending assoc for processing*/
18724 WDI_DequeueAssocRequest(pWDICtx);
18725 }
18726 }
18727 }
18728 }
18729 /* If the link state has been set to POST ASSOC, reset the "association in
18730 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018731 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018732 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18733 {
18734 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18735 WDI_DequeueAssocRequest(pWDICtx);
18736 }
18737
18738 wpalMutexRelease(&pWDICtx->wptMutex);
18739
18740 /*-------------------------------------------------------------------------
18741 Extract response and send it to UMAC
18742 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018743 wpalMemoryCopy( &halStatus,
18744 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018745 sizeof(halStatus));
18746
Jeff Johnsone7245742012-09-05 17:12:55 -070018747 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018748
18749 /*Notify UMAC*/
18750 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18751
Jeff Johnsone7245742012-09-05 17:12:55 -070018752 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018753}/*WDI_ProcessSetLinkStateRsp*/
18754
18755/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018756 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018757 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018758
18759 @param pWDICtx: pointer to the WLAN DAL context
18760 pEventData: pointer to the event information structure
18761
Jeff Johnson295189b2012-06-20 16:38:30 -070018762 @see
18763 @return Result of the function call
18764*/
18765WDI_Status
18766WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018767(
Jeff Johnson295189b2012-06-20 16:38:30 -070018768 WDI_ControlBlockType* pWDICtx,
18769 WDI_EventInfoType* pEventData
18770)
18771{
18772 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18773 WDI_GetStatsRspCb wdiGetStatsRspCb;
18774 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018775
Jeff Johnson295189b2012-06-20 16:38:30 -070018776 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18777
18778 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018779 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018780 -------------------------------------------------------------------------*/
18781 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18782 ( NULL == pEventData->pEventData))
18783 {
18784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018785 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018786 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018787 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018788 }
18789
18790 /*-------------------------------------------------------------------------
18791 Extract response and send it to UMAC
18792 -------------------------------------------------------------------------*/
18793 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18794
18795 /*allocate the stats response buffer */
18796 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18797 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18798 + sizeof(WDI_GetStatsRspParamsType));
18799
18800 if(NULL == wdiGetStatsRsp)
18801 {
18802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018803 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018804 pWDICtx, pEventData, pEventData->pEventData);
18805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018807 }
18808
18809 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18810
18811 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18812 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18813 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18814 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18815 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18816 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18817
18818 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18819 wpalMemoryCopy(wdiGetStatsRsp + 1,
18820 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18821 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18822
18823 /*Notify UMAC*/
18824 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18825
18826 wpalMemoryFree(wdiGetStatsRsp);
18827
Jeff Johnsone7245742012-09-05 17:12:55 -070018828 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018829}/*WDI_ProcessGetStatsRsp*/
18830
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018831#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018832/**
18833 @brief Process Get Roam Rssi Rsp function (called when a response is
18834 being received over the bus from HAL)
18835
18836 @param pWDICtx: pointer to the WLAN DAL context
18837 pEventData: pointer to the event information structure
18838
18839 @see
18840 @return Result of the function call
18841*/
18842WDI_Status
18843WDI_ProcessGetRoamRssiRsp
18844(
18845 WDI_ControlBlockType* pWDICtx,
18846 WDI_EventInfoType* pEventData
18847)
18848{
18849 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18850 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18851 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18853
18854 /*-------------------------------------------------------------------------
18855 Sanity check
18856 -------------------------------------------------------------------------*/
18857 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18858 ( NULL == pEventData->pEventData))
18859 {
18860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18861 "%s: Invalid parameters", __func__);
18862 WDI_ASSERT(0);
18863 return WDI_STATUS_E_FAILURE;
18864 }
18865
18866 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18867 if(NULL == wdiGetRoamRssiRspCb)
18868 {
18869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18870 "%s: call back function is NULL", __func__);
18871 WDI_ASSERT(0);
18872 return WDI_STATUS_E_FAILURE;
18873 }
18874
18875 /*-------------------------------------------------------------------------
18876 Extract response and send it to UMAC
18877 -------------------------------------------------------------------------*/
18878 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18879 pEventData->pEventData,
18880 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18881
18882 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18883 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18884 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18885
18886 /*Notify UMAC*/
18887 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18888
18889 return WDI_STATUS_SUCCESS;
18890}/*WDI_ProcessGetRoamRssiRsp*/
18891#endif
18892
Jeff Johnson295189b2012-06-20 16:38:30 -070018893
18894/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018895 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018896 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018897
18898 @param pWDICtx: pointer to the WLAN DAL context
18899 pEventData: pointer to the event information structure
18900
Jeff Johnson295189b2012-06-20 16:38:30 -070018901 @see
18902 @return Result of the function call
18903*/
18904WDI_Status
18905WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018906(
Jeff Johnson295189b2012-06-20 16:38:30 -070018907 WDI_ControlBlockType* pWDICtx,
18908 WDI_EventInfoType* pEventData
18909)
18910{
18911 WDI_Status wdiStatus;
18912 eHalStatus halStatus;
18913 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18915
18916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018917 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018918 -------------------------------------------------------------------------*/
18919 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18920 ( NULL == pEventData->pEventData))
18921 {
18922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018926 }
18927
18928 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18929
18930 /*-------------------------------------------------------------------------
18931 Extract response and send it to UMAC
18932 -------------------------------------------------------------------------*/
18933 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018934 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018935
18936 /*Notify UMAC*/
18937 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18938
Jeff Johnsone7245742012-09-05 17:12:55 -070018939 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018940}/*WDI_ProcessUpdateCfgRsp*/
18941
18942
18943
18944/**
18945 @brief Process Add BA Rsp function (called when a response
18946 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018947
18948 @param pWDICtx: pointer to the WLAN DAL context
18949 pEventData: pointer to the event information structure
18950
Jeff Johnson295189b2012-06-20 16:38:30 -070018951 @see
18952 @return Result of the function call
18953*/
18954WDI_Status
18955WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018956(
Jeff Johnson295189b2012-06-20 16:38:30 -070018957 WDI_ControlBlockType* pWDICtx,
18958 WDI_EventInfoType* pEventData
18959)
18960{
18961 WDI_AddBARspCb wdiAddBARspCb;
18962
18963 tAddBARspParams halAddBARsp;
18964 WDI_AddBARspinfoType wdiAddBARsp;
18965
18966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18967
18968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018970 -------------------------------------------------------------------------*/
18971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18972 ( NULL == pEventData->pEventData))
18973 {
18974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018978 }
18979
18980 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18981
18982 /*-------------------------------------------------------------------------
18983 Extract response and send it to UMAC
18984 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018985 wpalMemoryCopy( &halAddBARsp,
18986 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018987 sizeof(halAddBARsp));
18988
18989 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18990
Jeff Johnson43971f52012-07-17 12:26:56 -070018991 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018992 {
18993 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18994 }
18995
18996 /*Notify UMAC*/
18997 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18998
Jeff Johnsone7245742012-09-05 17:12:55 -070018999 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019000}/*WDI_ProcessAddSessionBARsp*/
19001
19002/**
19003 @brief Process Add BA Rsp function (called when a response
19004 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019005
19006 @param pWDICtx: pointer to the WLAN DAL context
19007 pEventData: pointer to the event information structure
19008
Jeff Johnson295189b2012-06-20 16:38:30 -070019009 @see
19010 @return Result of the function call
19011*/
19012WDI_Status
19013WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019014(
Jeff Johnson295189b2012-06-20 16:38:30 -070019015 WDI_ControlBlockType* pWDICtx,
19016 WDI_EventInfoType* pEventData
19017)
19018{
19019 WDI_TriggerBARspCb wdiTriggerBARspCb;
19020
19021 tTriggerBARspParams* halTriggerBARsp;
19022 tTriggerBaRspCandidate* halBaCandidate;
19023 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19024 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19025 wpt_uint16 index;
19026 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019027 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19029
19030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019032 -------------------------------------------------------------------------*/
19033 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19034 ( NULL == pEventData->pEventData))
19035 {
19036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019040 }
19041
19042 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19043
19044 /*-------------------------------------------------------------------------
19045 Extract response and send it to UMAC
19046 -------------------------------------------------------------------------*/
19047 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19048
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019049 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19050
19051 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19052 {
19053 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019054 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019055 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019056
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019057 if(NULL == wdiTriggerBARsp)
19058 {
19059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019060 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019061 pWDICtx, pEventData, pEventData->pEventData);
19062 WDI_ASSERT(0);
19063 return WDI_STATUS_E_FAILURE;
19064 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019065
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019066 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19067
Jeff Johnson295189b2012-06-20 16:38:30 -070019068 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019069 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019070 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19071
19072 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19073 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19074
19075 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19076 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019077 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019078 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19079 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19080 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019081 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019082 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019083 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19085 }
19086 wdiTriggerBARspCandidate++;
19087 halBaCandidate++;
19088 }
19089 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019090 else
19091 {
19092 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19093
19094 if(NULL == wdiTriggerBARsp)
19095 {
19096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019097 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019098 pWDICtx, pEventData, pEventData->pEventData);
19099 WDI_ASSERT(0);
19100 return WDI_STATUS_E_FAILURE;
19101 }
19102
19103 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19104
19105 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019106
19107 /*Notify UMAC*/
19108 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19109
19110 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019111 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019112}/*WDI_ProcessAddSessionBARsp*/
19113
19114/**
19115 @brief Process Update Beacon Params Rsp function (called when a response
19116 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019117
19118 @param pWDICtx: pointer to the WLAN DAL context
19119 pEventData: pointer to the event information structure
19120
Jeff Johnson295189b2012-06-20 16:38:30 -070019121 @see
19122 @return Result of the function call
19123*/
19124WDI_Status
19125WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019126(
Jeff Johnson295189b2012-06-20 16:38:30 -070019127 WDI_ControlBlockType* pWDICtx,
19128 WDI_EventInfoType* pEventData
19129)
19130{
19131 WDI_Status wdiStatus;
19132 eHalStatus halStatus;
19133 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19135
19136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019137 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019138 -------------------------------------------------------------------------*/
19139 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19140 ( NULL == pEventData->pEventData))
19141 {
19142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019143 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019144 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019145 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019146 }
19147
19148 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19149
19150 /*-------------------------------------------------------------------------
19151 Extract response and send it to UMAC
19152 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019153 wpalMemoryCopy( &halStatus,
19154 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019155 sizeof(halStatus));
19156
Jeff Johnsone7245742012-09-05 17:12:55 -070019157 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019158
19159 /*Notify UMAC*/
19160 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19161
Jeff Johnsone7245742012-09-05 17:12:55 -070019162 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019163}/*WDI_ProcessUpdateBeaconParamsRsp*/
19164
19165/**
19166 @brief Process Send Beacon template Rsp function (called when a response
19167 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019168
19169 @param pWDICtx: pointer to the WLAN DAL context
19170 pEventData: pointer to the event information structure
19171
Jeff Johnson295189b2012-06-20 16:38:30 -070019172 @see
19173 @return Result of the function call
19174*/
19175WDI_Status
19176WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019177(
Jeff Johnson295189b2012-06-20 16:38:30 -070019178 WDI_ControlBlockType* pWDICtx,
19179 WDI_EventInfoType* pEventData
19180)
19181{
19182 WDI_Status wdiStatus;
19183 eHalStatus halStatus;
19184 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19186
19187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019188 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019189 -------------------------------------------------------------------------*/
19190 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19191 ( NULL == pEventData->pEventData))
19192 {
19193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019194 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019197 }
19198
19199 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19200
19201 /*-------------------------------------------------------------------------
19202 Extract response and send it to UMAC
19203 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019204 wpalMemoryCopy( &halStatus,
19205 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019206 sizeof(halStatus));
19207
Jeff Johnsone7245742012-09-05 17:12:55 -070019208 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019209
19210 /*Notify UMAC*/
19211 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19212
Jeff Johnsone7245742012-09-05 17:12:55 -070019213 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019214}/*WDI_ProcessSendBeaconParamsRsp*/
19215
Jeff Johnsone7245742012-09-05 17:12:55 -070019216
Jeff Johnson295189b2012-06-20 16:38:30 -070019217/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019218 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019219 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019220
19221 @param pWDICtx: pointer to the WLAN DAL context
19222 pEventData: pointer to the event information structure
19223
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 @see
19225 @return Result of the function call
19226*/
19227WDI_Status
19228WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019229(
Jeff Johnson295189b2012-06-20 16:38:30 -070019230 WDI_ControlBlockType* pWDICtx,
19231 WDI_EventInfoType* pEventData
19232)
19233{
19234 WDI_Status wdiStatus;
19235 eHalStatus halStatus;
19236 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19238
19239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019241 -------------------------------------------------------------------------*/
19242 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19243 ( NULL == pEventData->pEventData))
19244 {
19245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019249 }
19250
19251 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19252
19253 /*-------------------------------------------------------------------------
19254 Extract response and send it to UMAC
19255 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019256 wpalMemoryCopy( &halStatus,
19257 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019258 sizeof(halStatus));
19259
Jeff Johnsone7245742012-09-05 17:12:55 -070019260 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019261
19262 /*Notify UMAC*/
19263 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19264
Jeff Johnsone7245742012-09-05 17:12:55 -070019265 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019266}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19267
19268 /**
19269 @brief Process Set Max Tx Power Rsp function (called when a response
19270 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019271
19272 @param pWDICtx: pointer to the WLAN DAL context
19273 pEventData: pointer to the event information structure
19274
Jeff Johnson295189b2012-06-20 16:38:30 -070019275 @see
19276 @return Result of the function call
19277*/
19278WDI_Status
19279WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019280(
Jeff Johnson295189b2012-06-20 16:38:30 -070019281 WDI_ControlBlockType* pWDICtx,
19282 WDI_EventInfoType* pEventData
19283)
19284{
19285 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019286
Jeff Johnson295189b2012-06-20 16:38:30 -070019287 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019288
Jeff Johnson295189b2012-06-20 16:38:30 -070019289 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19291
19292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019294 -------------------------------------------------------------------------*/
19295 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19296 ( NULL == pEventData->pEventData))
19297 {
19298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019299 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019302 }
19303
19304 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19305
19306 /*-------------------------------------------------------------------------
19307 Extract response and send it to UMAC
19308 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019309 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19310 pEventData->pEventData,
19311 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019312
19313 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19314 {
19315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19316 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019318 }
19319
Jeff Johnsone7245742012-09-05 17:12:55 -070019320 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019321 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019322 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019323
19324 /*Notify UMAC*/
19325 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19326
Jeff Johnsone7245742012-09-05 17:12:55 -070019327 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019328}
19329
schang86c22c42013-03-13 18:41:24 -070019330 /**
19331 @brief Process Set Tx Power Rsp function (called when a response
19332 is being received over the bus from HAL)
19333
19334 @param pWDICtx: pointer to the WLAN DAL context
19335 pEventData: pointer to the event information structure
19336
19337 @see
19338 @return Result of the function call
19339*/
19340WDI_Status
19341WDI_ProcessSetTxPowerRsp
19342(
19343 WDI_ControlBlockType* pWDICtx,
19344 WDI_EventInfoType* pEventData
19345)
19346{
19347 tSetTxPwrRspMsg halTxpowerrsp;
19348 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19349 WDA_SetTxPowerRspCb wdiReqStatusCb;
19350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19351
19352 /*-------------------------------------------------------------------------
19353 Sanity check
19354 -------------------------------------------------------------------------*/
19355 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19356 ( NULL == pEventData->pEventData))
19357 {
19358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19359 "%s: Invalid parameters", __func__);
19360 WDI_ASSERT(0);
19361 return WDI_STATUS_E_FAILURE;
19362 }
19363
19364 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19365
19366 /*-------------------------------------------------------------------------
19367 Extract response and send it to UMAC
19368 -------------------------------------------------------------------------*/
19369 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19370 pEventData->pEventData,
19371 sizeof(halTxpowerrsp.setTxPwrRspParams));
19372
19373 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19374 {
19375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19376 "Error status returned in Set Tx Power Response ");
19377 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19378 return WDI_STATUS_E_FAILURE;
19379 }
19380
19381 wdiSetTxPowerRspMsg.wdiStatus =
19382 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19383
19384 /*Notify UMAC*/
19385 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19386
19387 return WDI_STATUS_SUCCESS;
19388}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019389
19390/**
19391 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19392 is being received over the bus from HAL)
19393
19394 @param pWDICtx: pointer to the WLAN DAL context
19395 pEventData: pointer to the event information structure
19396
19397 @see
19398 @return Result of the function call
19399*/
19400WDI_Status
19401WDI_ProcessSetMaxTxPowerPerBandRsp
19402(
19403 WDI_ControlBlockType* pWDICtx,
19404 WDI_EventInfoType* pEventData
19405)
19406{
19407 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19408 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19409 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19411
19412 /*-------------------------------------------------------------------------
19413 Sanity check
19414 -------------------------------------------------------------------------*/
19415 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19416 ( NULL == pEventData->pEventData))
19417 {
19418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19419 "%s: Invalid parameters", __func__);
19420 WDI_ASSERT(0);
19421 return WDI_STATUS_E_FAILURE;
19422 }
19423
19424 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19425
19426 /*-------------------------------------------------------------------------
19427 Extract response and send it to UMAC
19428 -------------------------------------------------------------------------*/
19429 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19430 pEventData->pEventData,
19431 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19432
19433 if (eHAL_STATUS_SUCCESS !=
19434 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19435 {
19436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19437 "Error status returned in Set Max Tx Power Per Band Response");
19438 return WDI_STATUS_E_FAILURE;
19439 }
19440
19441 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19442 WDI_HAL_2_WDI_STATUS(
19443 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19444
19445 /* Notify UMAC */
19446 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19447
19448 return WDI_STATUS_SUCCESS;
19449}
19450
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019451#ifdef FEATURE_WLAN_TDLS
19452/**
19453 @brief Process TDLS Link Establish Rsp function (called
19454 when a response is being received over the bus from HAL)
19455
19456 @param pWDICtx: pointer to the WLAN DAL context
19457 pEventData: pointer to the event information structure
19458
19459 @see
19460 @return Result of the function call
19461*/
19462WDI_Status
19463WDI_ProcessLinkEstablishReqRsp
19464(
19465 WDI_ControlBlockType* pWDICtx,
19466 WDI_EventInfoType* pEventData
19467)
19468{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019469 eHalStatus halStatus;
19470 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019471 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19472 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19473
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19475
19476 /*-------------------------------------------------------------------------
19477 Sanity check
19478 -------------------------------------------------------------------------*/
19479 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19480 ( NULL == pEventData->pEventData))
19481 {
19482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19483 "%s: Invalid parameters", __func__);
19484 WDI_ASSERT(0);
19485 return WDI_STATUS_E_FAILURE;
19486 }
19487
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019488 /*-------------------------------------------------------------------------
19489 Extract indication and send it to UMAC
19490 -------------------------------------------------------------------------*/
19491 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19492 pEventData->pEventData,
19493 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19494
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019495 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19496
19497 /*-------------------------------------------------------------------------
19498 Extract response and send it to UMAC
19499 -------------------------------------------------------------------------*/
19500 wpalMemoryCopy( &halStatus,
19501 pEventData->pEventData,
19502 sizeof(halStatus));
19503
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019504 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19505 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019506
19507 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019508 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019509
19510 return WDI_STATUS_SUCCESS;
19511}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019512
19513
19514
19515/**
19516 @brief Process TDLS Chan switch Rsp function (called
19517 when a response is being received over the bus from HAL)
19518
19519 @param pWDICtx: pointer to the WLAN DAL context
19520 pEventData: pointer to the event information structure
19521
19522 @see
19523 @return Result of the function call
19524*/
19525WDI_Status
19526WDI_ProcessChanSwitchReqRsp
19527(
19528 WDI_ControlBlockType* pWDICtx,
19529 WDI_EventInfoType* pEventData
19530)
19531{
19532 eHalStatus halStatus;
19533 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19534 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19535 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19536
19537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19538
19539 /*-------------------------------------------------------------------------
19540 Sanity check
19541 -------------------------------------------------------------------------*/
19542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19543 ( NULL == pEventData->pEventData))
19544 {
19545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19546 "%s: Invalid parameters", __func__);
19547 WDI_ASSERT(0);
19548 return WDI_STATUS_E_FAILURE;
19549 }
19550
19551 /*-------------------------------------------------------------------------
19552 Extract indication and send it to UMAC
19553 -------------------------------------------------------------------------*/
19554 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19555 pEventData->pEventData,
19556 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19557
19558 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19559
19560 /*-------------------------------------------------------------------------
19561 Extract response and send it to UMAC
19562 -------------------------------------------------------------------------*/
19563 wpalMemoryCopy( &halStatus,
19564 pEventData->pEventData,
19565 sizeof(halStatus));
19566
19567 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19568 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19569
19570 /*Notify UMAC*/
19571 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19572
19573 return WDI_STATUS_SUCCESS;
19574}/*WDI_ProcessChanSwitchReqRsp*/
19575
19576
19577
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019578#endif
schang86c22c42013-03-13 18:41:24 -070019579
Jeff Johnson295189b2012-06-20 16:38:30 -070019580/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019581 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019582 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019583
19584 @param pWDICtx: pointer to the WLAN DAL context
19585 pEventData: pointer to the event information structure
19586
Jeff Johnson295189b2012-06-20 16:38:30 -070019587 @see
19588 @return Result of the function call
19589*/
19590WDI_Status
19591WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019592(
Jeff Johnson295189b2012-06-20 16:38:30 -070019593 WDI_ControlBlockType* pWDICtx,
19594 WDI_EventInfoType* pEventData
19595)
19596{
19597 WDI_Status wdiStatus;
19598 eHalStatus halStatus;
19599 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19601
19602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019603 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019604 -------------------------------------------------------------------------*/
19605 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19606 ( NULL == pEventData->pEventData))
19607 {
19608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019612 }
19613
19614 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19615
19616 /*-------------------------------------------------------------------------
19617 Extract response and send it to UMAC
19618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019619 wpalMemoryCopy( &halStatus,
19620 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019621 sizeof(halStatus));
19622
Jeff Johnsone7245742012-09-05 17:12:55 -070019623 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019624
19625 /*Notify UMAC*/
19626 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19627
Jeff Johnsone7245742012-09-05 17:12:55 -070019628 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019629}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019630/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019631 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019633
19634 @param pWDICtx: pointer to the WLAN DAL context
19635 pEventData: pointer to the event information structure
19636
Jeff Johnson295189b2012-06-20 16:38:30 -070019637 @see
19638 @return Result of the function call
19639*/
19640WDI_Status
19641WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019642(
Jeff Johnson295189b2012-06-20 16:38:30 -070019643 WDI_ControlBlockType* pWDICtx,
19644 WDI_EventInfoType* pEventData
19645)
19646{
19647 WDI_Status wdiStatus;
19648 eHalStatus halStatus;
19649 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019650 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19652
19653 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019654 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019655 -------------------------------------------------------------------------*/
19656 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19657 ( NULL == pEventData->pEventData))
19658 {
19659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019663 }
19664
19665 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19666
19667 /*-------------------------------------------------------------------------
19668 Extract response and send it to UMAC
19669 -------------------------------------------------------------------------*/
19670 halStatus = *((eHalStatus*)pEventData->pEventData);
19671
Jeff Johnsone7245742012-09-05 17:12:55 -070019672 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019673
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019674 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19675 * Other module states are taken care by PMC.
19676 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19677 */
19678 if (wdiStatus != WDI_STATUS_SUCCESS) {
19679
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19681 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19682 halStatus);
19683 /* Call Back is not required as we are putting the DXE in FULL
19684 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019685 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19686
19687 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019689 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080019690 WDI_ASSERT(0);
19691 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019692 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019693 /*Notify UMAC*/
19694 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19695
Jeff Johnsone7245742012-09-05 17:12:55 -070019696 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019697}/*WDI_ProcessEnterImpsRsp*/
19698
19699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019700 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019701 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019702
19703 @param pWDICtx: pointer to the WLAN DAL context
19704 pEventData: pointer to the event information structure
19705
Jeff Johnson295189b2012-06-20 16:38:30 -070019706 @see
19707 @return Result of the function call
19708*/
19709WDI_Status
19710WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019711(
Jeff Johnson295189b2012-06-20 16:38:30 -070019712 WDI_ControlBlockType* pWDICtx,
19713 WDI_EventInfoType* pEventData
19714)
19715{
19716 WDI_Status wdiStatus;
19717 eHalStatus halStatus;
19718 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019719 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19721
19722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019723 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019724 -------------------------------------------------------------------------*/
19725 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19726 ( NULL == pEventData->pEventData))
19727 {
19728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019729 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019732 }
19733
19734 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19735
19736 /*-------------------------------------------------------------------------
19737 Extract response and send it to UMAC
19738 -------------------------------------------------------------------------*/
19739 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019740 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019741
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019742 if (halStatus != eHAL_STATUS_SUCCESS)
19743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19744 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19745
Jeff Johnson295189b2012-06-20 16:38:30 -070019746 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019747 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19748 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19749 {
19750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019751 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080019752 WDI_ASSERT(0);
19753 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019754 /*Notify UMAC*/
19755 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19756
Jeff Johnsone7245742012-09-05 17:12:55 -070019757 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019758}/*WDI_ProcessExitImpsRsp*/
19759
19760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019761 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019762 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019763
19764 @param pWDICtx: pointer to the WLAN DAL context
19765 pEventData: pointer to the event information structure
19766
Jeff Johnson295189b2012-06-20 16:38:30 -070019767 @see
19768 @return Result of the function call
19769*/
19770WDI_Status
19771WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019772(
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 WDI_ControlBlockType* pWDICtx,
19774 WDI_EventInfoType* pEventData
19775)
19776{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019777 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19778 tHalEnterBmpsRspParams halEnterBmpsRsp;
19779 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19780 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019781 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19783
19784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019786 -------------------------------------------------------------------------*/
19787 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19788 ( NULL == pEventData->pEventData))
19789 {
19790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019794 }
19795
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019797 Extract response and send it to UMAC
19798 -------------------------------------------------------------------------*/
19799 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19800 {
19801 wpalMemoryCopy( &halEnterBmpsRsp,
19802 pEventData->pEventData,
19803 sizeof(halEnterBmpsRsp));
19804
19805 //Used to print debug message
19806 halStatus = halEnterBmpsRsp.status;
19807 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19808 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19809 }
19810 else
19811 {
19812 halStatus = *((eHalStatus*)pEventData->pEventData);
19813 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19814 }
19815
19816 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019817
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019818 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19819 * Other module states are taken care by PMC.
19820 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19821 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019822 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19823 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019824
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019826 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19827 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019828 /* Call Back is not required as we are putting the DXE in FULL
19829 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019830 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19831 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19832 {
19833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019834 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080019835 WDI_ASSERT(0);
19836 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019837 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019838 }
19839
Jeff Johnson295189b2012-06-20 16:38:30 -070019840 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019841 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019842
Jeff Johnsone7245742012-09-05 17:12:55 -070019843 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019844}/*WDI_ProcessEnterBmpsRsp*/
19845
19846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019847 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019848 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019849
19850 @param pWDICtx: pointer to the WLAN DAL context
19851 pEventData: pointer to the event information structure
19852
Jeff Johnson295189b2012-06-20 16:38:30 -070019853 @see
19854 @return Result of the function call
19855*/
19856WDI_Status
19857WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019858(
Jeff Johnson295189b2012-06-20 16:38:30 -070019859 WDI_ControlBlockType* pWDICtx,
19860 WDI_EventInfoType* pEventData
19861)
19862{
Jeff Johnson295189b2012-06-20 16:38:30 -070019863 eHalStatus halStatus;
19864 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019865 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019866 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19867 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19869
19870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019872 -------------------------------------------------------------------------*/
19873 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19874 ( NULL == pEventData->pEventData))
19875 {
19876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019880 }
19881
19882 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19883
19884 /*-------------------------------------------------------------------------
19885 Extract response and send it to UMAC
19886 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019887
19888 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19889 {
19890 wpalMemoryCopy( &halExitBmpsRsp,
19891 pEventData->pEventData,
19892 sizeof(halExitBmpsRsp));
19893
19894 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19895 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19896 }
19897 else
19898 {
19899 halStatus = *((eHalStatus*)pEventData->pEventData);
19900 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19901 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019902
19903 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019904 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19905 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19906 {
19907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019908 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080019909 WDI_ASSERT(0);
19910 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019911 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19912
19913 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019914 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019915
Jeff Johnsone7245742012-09-05 17:12:55 -070019916 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019917}/*WDI_ProcessExitBmpsRsp*/
19918
19919/**
19920 @brief Process Enter UAPSD Rsp function (called when a response
19921 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019922
19923 @param pWDICtx: pointer to the WLAN DAL context
19924 pEventData: pointer to the event information structure
19925
Jeff Johnson295189b2012-06-20 16:38:30 -070019926 @see
19927 @return Result of the function call
19928*/
19929WDI_Status
19930WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019931(
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 WDI_ControlBlockType* pWDICtx,
19933 WDI_EventInfoType* pEventData
19934)
19935{
Jeff Johnson295189b2012-06-20 16:38:30 -070019936 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019937 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019938 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019939 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19940
Jeff Johnson295189b2012-06-20 16:38:30 -070019941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19942
19943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019945 -------------------------------------------------------------------------*/
19946 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19947 ( NULL == pEventData->pEventData))
19948 {
19949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019950 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019953 }
19954
19955 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19956
19957 /*-------------------------------------------------------------------------
19958 Extract response and send it to UMAC
19959 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019960 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19961 {
19962 wpalMemoryCopy( &halEnterUapsdRsp,
19963 pEventData->pEventData,
19964 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019965
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019966 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19967 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19968 }
19969 else
19970 {
19971 halStatus = *((eHalStatus*)pEventData->pEventData);
19972 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19973 }
19974
19975 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019976 {
19977 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19978 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19979 // the traffic to decide when to suspend the trigger frames when there is no traffic
19980 // activity on the trigger enabled ACs
19981 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19982
19983#ifdef WLAN_PERF
19984 // Increment the BD signature to refresh the fast path BD utilization
19985 pWDICtx->uBdSigSerialNum++;
19986#endif
19987 }
19988
19989 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019990 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019991
Jeff Johnsone7245742012-09-05 17:12:55 -070019992 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019993}/*WDI_ProcessEnterUapsdRsp*/
19994
19995/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019996 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019997 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019998
19999 @param pWDICtx: pointer to the WLAN DAL context
20000 pEventData: pointer to the event information structure
20001
Jeff Johnson295189b2012-06-20 16:38:30 -070020002 @see
20003 @return Result of the function call
20004*/
20005WDI_Status
20006WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020007(
Jeff Johnson295189b2012-06-20 16:38:30 -070020008 WDI_ControlBlockType* pWDICtx,
20009 WDI_EventInfoType* pEventData
20010)
20011{
Jeff Johnson295189b2012-06-20 16:38:30 -070020012 eHalStatus halStatus;
20013 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020014 tHalExitUapsdRspParams halExitUapsdRsp;
20015 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20017
20018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020019 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 -------------------------------------------------------------------------*/
20021 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20022 ( NULL == pEventData->pEventData))
20023 {
20024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020028 }
20029
20030 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20031
20032 /*-------------------------------------------------------------------------
20033 Extract response and send it to UMAC
20034 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020035 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20036 {
20037 wpalMemoryCopy( &halExitUapsdRsp,
20038 pEventData->pEventData,
20039 sizeof(halExitUapsdRsp));
20040
20041 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20042 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20043 }
20044 else
20045 {
20046 halStatus = *((eHalStatus*)pEventData->pEventData);
20047 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20048 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020049 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20050 // directly instead of the FW WQ.
20051 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20052
20053#ifdef WLAN_PERF
20054 // Increment the BD signature to refresh the fast path BD utilization
20055 pWDICtx->uBdSigSerialNum++;
20056#endif
20057
20058 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020059 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020060
Jeff Johnsone7245742012-09-05 17:12:55 -070020061 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020062}/*WDI_ProcessExitUapsdRsp*/
20063
20064/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020065 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020067
20068 @param pWDICtx: pointer to the WLAN DAL context
20069 pEventData: pointer to the event information structure
20070
Jeff Johnson295189b2012-06-20 16:38:30 -070020071 @see
20072 @return Result of the function call
20073*/
20074WDI_Status
20075WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020076(
Jeff Johnson295189b2012-06-20 16:38:30 -070020077 WDI_ControlBlockType* pWDICtx,
20078 WDI_EventInfoType* pEventData
20079)
20080{
20081 WDI_Status wdiStatus;
20082 eHalStatus halStatus;
20083 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20085
20086 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020087 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020088 -------------------------------------------------------------------------*/
20089 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20090 ( NULL == pEventData->pEventData))
20091 {
20092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020093 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020096 }
20097
20098 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20099
20100 /*-------------------------------------------------------------------------
20101 Extract response and send it to UMAC
20102 -------------------------------------------------------------------------*/
20103 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020104 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020105
20106 /*Notify UMAC*/
20107 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20108
Jeff Johnsone7245742012-09-05 17:12:55 -070020109 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020110}/*WDI_ProcessSetUapsdAcParamsRsp*/
20111
20112/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020113 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020114 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020115
20116 @param pWDICtx: pointer to the WLAN DAL context
20117 pEventData: pointer to the event information structure
20118
Jeff Johnson295189b2012-06-20 16:38:30 -070020119 @see
20120 @return Result of the function call
20121*/
20122WDI_Status
20123WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020124(
Jeff Johnson295189b2012-06-20 16:38:30 -070020125 WDI_ControlBlockType* pWDICtx,
20126 WDI_EventInfoType* pEventData
20127)
20128{
20129 WDI_Status wdiStatus;
20130 eHalStatus halStatus;
20131 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20132 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20133
20134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020135 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020136 -------------------------------------------------------------------------*/
20137 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20138 ( NULL == pEventData->pEventData))
20139 {
20140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020141 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020142 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020143 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020144 }
20145
20146 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20147
20148 /*-------------------------------------------------------------------------
20149 Extract response and send it to UMAC
20150 -------------------------------------------------------------------------*/
20151 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020152 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020153
20154 /*Notify UMAC*/
20155 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20156
Jeff Johnsone7245742012-09-05 17:12:55 -070020157 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020158}/*WDI_ProcessUpdateUapsdParamsRsp*/
20159
20160/**
20161 @brief Process Configure RXP filter Rsp function (called when a
20162 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020163
20164 @param pWDICtx: pointer to the WLAN DAL context
20165 pEventData: pointer to the event information structure
20166
Jeff Johnson295189b2012-06-20 16:38:30 -070020167 @see
20168 @return Result of the function call
20169*/
20170WDI_Status
20171WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020172(
Jeff Johnson295189b2012-06-20 16:38:30 -070020173 WDI_ControlBlockType* pWDICtx,
20174 WDI_EventInfoType* pEventData
20175)
20176{
20177 WDI_Status wdiStatus;
20178 eHalStatus halStatus;
20179 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20181
20182 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020183 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020184 -------------------------------------------------------------------------*/
20185 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20186 ( NULL == pEventData->pEventData))
20187 {
20188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020189 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020190 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020191 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020192 }
20193
20194 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20195
20196 /*-------------------------------------------------------------------------
20197 Extract response and send it to UMAC
20198 -------------------------------------------------------------------------*/
20199 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020200 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020201
20202 /*Notify UMAC*/
20203 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20204
Jeff Johnsone7245742012-09-05 17:12:55 -070020205 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020206}/*WDI_ProcessConfigureRxpFilterRsp*/
20207
20208/**
20209 @brief Process Set beacon filter Rsp function (called when a
20210 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020211
20212 @param pWDICtx: pointer to the WLAN DAL context
20213 pEventData: pointer to the event information structure
20214
Jeff Johnson295189b2012-06-20 16:38:30 -070020215 @see
20216 @return Result of the function call
20217*/
20218WDI_Status
20219WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020220(
Jeff Johnson295189b2012-06-20 16:38:30 -070020221 WDI_ControlBlockType* pWDICtx,
20222 WDI_EventInfoType* pEventData
20223)
20224{
20225 WDI_Status wdiStatus;
20226 eHalStatus halStatus;
20227 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20229
20230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 -------------------------------------------------------------------------*/
20233 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20234 ( NULL == pEventData->pEventData))
20235 {
20236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020240 }
20241
20242 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20243
20244 /*-------------------------------------------------------------------------
20245 Extract response and send it to UMAC
20246 -------------------------------------------------------------------------*/
20247 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020248 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020249
20250 /*Notify UMAC*/
20251 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20252
Jeff Johnsone7245742012-09-05 17:12:55 -070020253 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020254}/*WDI_ProcessSetBeaconFilterRsp*/
20255
20256/**
20257 @brief Process remove beacon filter Rsp function (called when a
20258 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020259
20260 @param pWDICtx: pointer to the WLAN DAL context
20261 pEventData: pointer to the event information structure
20262
Jeff Johnson295189b2012-06-20 16:38:30 -070020263 @see
20264 @return Result of the function call
20265*/
20266WDI_Status
20267WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020268(
Jeff Johnson295189b2012-06-20 16:38:30 -070020269 WDI_ControlBlockType* pWDICtx,
20270 WDI_EventInfoType* pEventData
20271)
20272{
20273 WDI_Status wdiStatus;
20274 eHalStatus halStatus;
20275 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20277
20278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020280 -------------------------------------------------------------------------*/
20281 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20282 ( NULL == pEventData->pEventData))
20283 {
20284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020288 }
20289
20290 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20291
20292 /*-------------------------------------------------------------------------
20293 Extract response and send it to UMAC
20294 -------------------------------------------------------------------------*/
20295 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020296 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020297
20298 /*Notify UMAC*/
20299 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20300
Jeff Johnsone7245742012-09-05 17:12:55 -070020301 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020302}/*WDI_ProcessRemBeaconFilterRsp*/
20303
20304/**
20305 @brief Process set RSSI thresholds Rsp function (called when a
20306 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020307
20308 @param pWDICtx: pointer to the WLAN DAL context
20309 pEventData: pointer to the event information structure
20310
Jeff Johnson295189b2012-06-20 16:38:30 -070020311 @see
20312 @return Result of the function call
20313*/
20314WDI_Status
20315WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020316(
Jeff Johnson295189b2012-06-20 16:38:30 -070020317 WDI_ControlBlockType* pWDICtx,
20318 WDI_EventInfoType* pEventData
20319)
20320{
20321 WDI_Status wdiStatus;
20322 eHalStatus halStatus;
20323 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20325
20326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 -------------------------------------------------------------------------*/
20329 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20330 ( NULL == pEventData->pEventData))
20331 {
20332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020336 }
20337
20338 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20339
20340 /*-------------------------------------------------------------------------
20341 Extract response and send it to UMAC
20342 -------------------------------------------------------------------------*/
20343 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020344 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020345
20346 /*Notify UMAC*/
20347 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20348
Jeff Johnsone7245742012-09-05 17:12:55 -070020349 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020350}/*WDI_ProcessSetRSSIThresoldsRsp*/
20351
20352/**
20353 @brief Process host offload Rsp function (called when a
20354 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020355
20356 @param pWDICtx: pointer to the WLAN DAL context
20357 pEventData: pointer to the event information structure
20358
Jeff Johnson295189b2012-06-20 16:38:30 -070020359 @see
20360 @return Result of the function call
20361*/
20362WDI_Status
20363WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020364(
Jeff Johnson295189b2012-06-20 16:38:30 -070020365 WDI_ControlBlockType* pWDICtx,
20366 WDI_EventInfoType* pEventData
20367)
20368{
20369 WDI_Status wdiStatus;
20370 eHalStatus halStatus;
20371 WDI_HostOffloadCb wdiHostOffloadCb;
20372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20373
20374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020375 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020376 -------------------------------------------------------------------------*/
20377 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20378 ( NULL == pEventData->pEventData))
20379 {
20380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020381 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020384 }
20385
20386 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20387
20388 /*-------------------------------------------------------------------------
20389 Extract response and send it to UMAC
20390 -------------------------------------------------------------------------*/
20391 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020392 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020393
20394 /*Notify UMAC*/
20395 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20396
Jeff Johnsone7245742012-09-05 17:12:55 -070020397 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020398}/*WDI_ProcessHostOffloadRsp*/
20399
20400/**
20401 @brief Process keep alive Rsp function (called when a
20402 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020403
20404 @param pWDICtx: pointer to the WLAN DAL context
20405 pEventData: pointer to the event information structure
20406
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 @see
20408 @return Result of the function call
20409*/
20410WDI_Status
20411WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020412(
Jeff Johnson295189b2012-06-20 16:38:30 -070020413 WDI_ControlBlockType* pWDICtx,
20414 WDI_EventInfoType* pEventData
20415)
20416{
20417 WDI_Status wdiStatus;
20418 eHalStatus halStatus;
20419 WDI_KeepAliveCb wdiKeepAliveCb;
20420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20422 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20423
20424
20425 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020426 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020427 -------------------------------------------------------------------------*/
20428 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20429 ( NULL == pEventData->pEventData))
20430 {
20431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020432 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020435 }
20436
Jeff Johnsone7245742012-09-05 17:12:55 -070020437 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20438
Jeff Johnson295189b2012-06-20 16:38:30 -070020439 /*-------------------------------------------------------------------------
20440 Extract response and send it to UMAC
20441 -------------------------------------------------------------------------*/
20442 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020443 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020444
20445 /*Notify UMAC*/
20446 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20447
Jeff Johnsone7245742012-09-05 17:12:55 -070020448 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020449}/*WDI_ProcessKeepAliveRsp*/
20450
20451/**
20452 @brief Process wowl add ptrn Rsp function (called when a
20453 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020454
20455 @param pWDICtx: pointer to the WLAN DAL context
20456 pEventData: pointer to the event information structure
20457
Jeff Johnson295189b2012-06-20 16:38:30 -070020458 @see
20459 @return Result of the function call
20460*/
20461WDI_Status
20462WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020463(
Jeff Johnson295189b2012-06-20 16:38:30 -070020464 WDI_ControlBlockType* pWDICtx,
20465 WDI_EventInfoType* pEventData
20466)
20467{
Jeff Johnson295189b2012-06-20 16:38:30 -070020468 eHalStatus halStatus;
20469 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020470 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20471 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20472
Jeff Johnson295189b2012-06-20 16:38:30 -070020473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20474
20475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020476 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020477 -------------------------------------------------------------------------*/
20478 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20479 ( NULL == pEventData->pEventData))
20480 {
20481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020485 }
20486
20487 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20488
20489 /*-------------------------------------------------------------------------
20490 Extract response and send it to UMAC
20491 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020492 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20493 {
20494 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20495 pEventData->pEventData,
20496 sizeof(halAddWowlBcastPtrRsp));
20497
20498 wdiWowlAddBcPtrRsp.wdiStatus =
20499 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20500 }
20501 else
20502 {
20503 halStatus = *((eHalStatus*)pEventData->pEventData);
20504 wdiWowlAddBcPtrRsp.wdiStatus =
20505 WDI_HAL_2_WDI_STATUS(halStatus);
20506 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020507
20508 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020509 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020510
Jeff Johnsone7245742012-09-05 17:12:55 -070020511 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020512}/*WDI_ProcessWowlAddBcPtrnRsp*/
20513
20514/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020515 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020517
20518 @param pWDICtx: pointer to the WLAN DAL context
20519 pEventData: pointer to the event information structure
20520
Jeff Johnson295189b2012-06-20 16:38:30 -070020521 @see
20522 @return Result of the function call
20523*/
20524WDI_Status
20525WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020526(
Jeff Johnson295189b2012-06-20 16:38:30 -070020527 WDI_ControlBlockType* pWDICtx,
20528 WDI_EventInfoType* pEventData
20529)
20530{
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 eHalStatus halStatus;
20532 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020533 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20534 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20536
20537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020538 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020539 -------------------------------------------------------------------------*/
20540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20541 ( NULL == pEventData->pEventData))
20542 {
20543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020547 }
20548
20549 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20550
20551 /*-------------------------------------------------------------------------
20552 Extract response and send it to UMAC
20553 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020554 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20555 {
20556 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20557 pEventData->pEventData,
20558 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020559
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020560 wdiWowlDelBcstPtrRsp.wdiStatus =
20561 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20562 }
20563 else
20564 {
20565 halStatus = *((eHalStatus*)pEventData->pEventData);
20566 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20567 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020568 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020569 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020570
Jeff Johnsone7245742012-09-05 17:12:55 -070020571 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020572}/*WDI_ProcessWowlDelBcPtrnRsp*/
20573
20574/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020575 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020576 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020577
20578 @param pWDICtx: pointer to the WLAN DAL context
20579 pEventData: pointer to the event information structure
20580
Jeff Johnson295189b2012-06-20 16:38:30 -070020581 @see
20582 @return Result of the function call
20583*/
20584WDI_Status
20585WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020586(
Jeff Johnson295189b2012-06-20 16:38:30 -070020587 WDI_ControlBlockType* pWDICtx,
20588 WDI_EventInfoType* pEventData
20589)
20590{
Jeff Johnson295189b2012-06-20 16:38:30 -070020591 eHalStatus halStatus;
20592 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020593 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20594 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20596
20597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020598 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020599 -------------------------------------------------------------------------*/
20600 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20601 ( NULL == pEventData->pEventData))
20602 {
20603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020604 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020607 }
20608
20609 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20610
20611 /*-------------------------------------------------------------------------
20612 Extract response and send it to UMAC
20613 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020614 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20615 {
20616 wpalMemoryCopy( &halEnterWowlRspParams,
20617 (wpt_uint8*)pEventData->pEventData,
20618 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020619
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020620 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20621 wdiwowlEnterRsp.status =
20622 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20623 }
20624 else
20625 {
20626 halStatus = *((eHalStatus*)pEventData->pEventData);
20627 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20628 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020629 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020630 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020631
Jeff Johnsone7245742012-09-05 17:12:55 -070020632 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020633}/*WDI_ProcessWowlEnterRsp*/
20634
20635/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020636 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020637 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020638
20639 @param pWDICtx: pointer to the WLAN DAL context
20640 pEventData: pointer to the event information structure
20641
Jeff Johnson295189b2012-06-20 16:38:30 -070020642 @see
20643 @return Result of the function call
20644*/
20645WDI_Status
20646WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020647(
Jeff Johnson295189b2012-06-20 16:38:30 -070020648 WDI_ControlBlockType* pWDICtx,
20649 WDI_EventInfoType* pEventData
20650)
20651{
Jeff Johnson295189b2012-06-20 16:38:30 -070020652 eHalStatus halStatus;
20653 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020654 tHalExitWowlRspParams halExitWowlRspParams;
20655 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20656
Jeff Johnson295189b2012-06-20 16:38:30 -070020657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20658
20659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020660 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020661 -------------------------------------------------------------------------*/
20662 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20663 ( NULL == pEventData->pEventData))
20664 {
20665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 }
20670
20671 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20672
20673 /*-------------------------------------------------------------------------
20674 Extract response and send it to UMAC
20675 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020676 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20677 {
20678 wpalMemoryCopy( &halExitWowlRspParams,
20679 pEventData->pEventData,
20680 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020681
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020682 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20683 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20684
20685 }
20686 else
20687 {
20688 halStatus = *((eHalStatus*)pEventData->pEventData);
20689 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20690 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020691 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020692 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020693
Jeff Johnsone7245742012-09-05 17:12:55 -070020694 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020695}/*WDI_ProcessWowlExitRsp*/
20696
20697/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020699 (called when a response is being received over the bus
20700 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020701
20702 @param pWDICtx: pointer to the WLAN DAL context
20703 pEventData: pointer to the event information structure
20704
Jeff Johnson295189b2012-06-20 16:38:30 -070020705 @see
20706 @return Result of the function call
20707*/
20708WDI_Status
20709WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020710(
Jeff Johnson295189b2012-06-20 16:38:30 -070020711 WDI_ControlBlockType* pWDICtx,
20712 WDI_EventInfoType* pEventData
20713)
20714{
20715 WDI_Status wdiStatus;
20716 eHalStatus halStatus;
20717 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20719
20720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020722 -------------------------------------------------------------------------*/
20723 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20724 ( NULL == pEventData->pEventData))
20725 {
20726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020730 }
20731
20732 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20733
20734 /*-------------------------------------------------------------------------
20735 Extract response and send it to UMAC
20736 -------------------------------------------------------------------------*/
20737 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020738 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020739
20740 /*Notify UMAC*/
20741 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20742
Jeff Johnsone7245742012-09-05 17:12:55 -070020743 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020744}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20745
20746
20747/**
20748 @brief Process Nv download(called when a response
20749 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020750
20751 @param pWDICtx: pointer to the WLAN DAL context
20752 pEventData: pointer to the event information structure
20753
Jeff Johnson295189b2012-06-20 16:38:30 -070020754 @see
20755 @return Result of the function call
20756*/
20757WDI_Status
20758WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020759(
Jeff Johnson295189b2012-06-20 16:38:30 -070020760 WDI_ControlBlockType* pWDICtx,
20761 WDI_EventInfoType* pEventData
20762)
20763{
20764
20765 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20766 tHalNvImgDownloadRspParams halNvDownloadRsp;
20767 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20768
20769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020770 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020771 -------------------------------------------------------------------------*/
20772 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20773 ( NULL == pEventData->pEventData))
20774 {
20775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020779 }
20780
20781 /*-------------------------------------------------------------------------
20782 Extract response and send it to UMAC
20783 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020784 wpalMemoryCopy( &halNvDownloadRsp,
20785 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020786 sizeof(halNvDownloadRsp));
20787
20788 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20789
20790 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020791 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20792 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 {
20794 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020795 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020796 }
20797 else
20798 {
20799 /*Reset the Nv related global information in WDI context information */
20800 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20801 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20802 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20803 /*call WDA callback function for last fragment */
20804 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20805 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20806 }
20807
Jeff Johnsone7245742012-09-05 17:12:55 -070020808 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020809}
20810#ifdef WLAN_FEATURE_VOWIFI_11R
20811/**
20812 @brief Process Add TSpec Rsp function (called when a response
20813 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020814
20815 @param pWDICtx: pointer to the WLAN DAL context
20816 pEventData: pointer to the event information structure
20817
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 @see
20819 @return Result of the function call
20820*/
20821WDI_Status
20822WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020823(
Jeff Johnson295189b2012-06-20 16:38:30 -070020824 WDI_ControlBlockType* pWDICtx,
20825 WDI_EventInfoType* pEventData
20826)
20827{
20828 WDI_Status wdiStatus;
20829 tAggrAddTsRspParams aggrAddTsRsp;
20830 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20832
20833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020834 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020835 -------------------------------------------------------------------------*/
20836 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20837 ( NULL == pEventData->pEventData))
20838 {
20839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020843 }
20844
20845 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20846
20847 /*-------------------------------------------------------------------------
20848 Extract response and send it to UMAC
20849 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020850 wpalMemoryCopy( &aggrAddTsRsp,
20851 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020852 sizeof(aggrAddTsRsp));
20853
20854 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020855 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020856
20857 /*Notify UMAC*/
20858 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20859
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020861}/*WDI_ProcessAddTSpecRsp*/
20862#endif /* WLAN_FEATURE_VOWIFI_11R */
20863
20864/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020865 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020866 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020867
20868 @param pWDICtx: pointer to the WLAN DAL context
20869 pEventData: pointer to the event information structure
20870
Jeff Johnson295189b2012-06-20 16:38:30 -070020871 @see
20872 @return Result of the function call
20873*/
20874WDI_Status
20875WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020876(
Jeff Johnson295189b2012-06-20 16:38:30 -070020877 WDI_ControlBlockType* pWDICtx,
20878 WDI_EventInfoType* pEventData
20879)
20880{
20881 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20882 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20883 tHalHostResumeRspParams hostResumeRspMsg;
20884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20885
20886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 -------------------------------------------------------------------------*/
20889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20890 ( NULL == pEventData->pEventData))
20891 {
20892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020896 }
20897
20898 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20899
20900 /*-------------------------------------------------------------------------
20901 Extract response and send it to UMAC
20902 -------------------------------------------------------------------------*/
20903
Jeff Johnsone7245742012-09-05 17:12:55 -070020904 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020905 (wpt_uint8*)pEventData->pEventData,
20906 sizeof(hostResumeRspMsg));
20907
Jeff Johnsone7245742012-09-05 17:12:55 -070020908 wdiResumeRspParams.wdiStatus =
20909 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020910
20911 /*Notify UMAC*/
20912 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20913
20914 return WDI_STATUS_SUCCESS;
20915}
20916
20917/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020918 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020919 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020920
20921 @param pWDICtx: pointer to the WLAN DAL context
20922 pEventData: pointer to the event information structure
20923
Jeff Johnson295189b2012-06-20 16:38:30 -070020924 @see
20925 @return Result of the function call
20926*/
20927WDI_Status
20928WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020929(
Jeff Johnson295189b2012-06-20 16:38:30 -070020930 WDI_ControlBlockType* pWDICtx,
20931 WDI_EventInfoType* pEventData
20932)
20933{
20934 WDI_Status wdiStatus;
20935 eHalStatus halStatus;
20936 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20938
20939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 -------------------------------------------------------------------------*/
20942 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20943 ( NULL == pEventData->pEventData))
20944 {
20945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020946 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020949 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020950
20951 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020952
20953 /*-------------------------------------------------------------------------
20954 Extract response and send it to UMAC
20955 -------------------------------------------------------------------------*/
20956 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020957 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020958
20959 /*Notify UMAC*/
20960 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20961
Jeff Johnsone7245742012-09-05 17:12:55 -070020962 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020963}/*WDI_ProcessSetTxPerTrackingRsp*/
20964
20965/*==========================================================================
20966 Indications from HAL
20967 ==========================================================================*/
20968/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020969 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020970 indication of this kind is being received over the bus
20971 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020972
20973 @param pWDICtx: pointer to the WLAN DAL context
20974 pEventData: pointer to the event information structure
20975
Jeff Johnson295189b2012-06-20 16:38:30 -070020976 @see
20977 @return Result of the function call
20978*/
20979WDI_Status
20980WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020981(
Jeff Johnson295189b2012-06-20 16:38:30 -070020982 WDI_ControlBlockType* pWDICtx,
20983 WDI_EventInfoType* pEventData
20984)
20985{
20986 WDI_LowLevelIndType wdiInd;
20987 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20989
20990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020991 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020992 -------------------------------------------------------------------------*/
20993 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20994 ( NULL == pEventData->pEventData))
20995 {
20996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020997 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020998 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020999 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 }
21001
21002 /*-------------------------------------------------------------------------
21003 Extract indication and send it to UMAC
21004 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021005 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21006 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021007 sizeof(tHalRSSINotification));
21008
21009 /*Fill in the indication parameters*/
21010 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21011 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21012 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21013 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21014 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21015 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21016 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21017 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21018 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21019 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21020 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21021 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21022 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021023 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21024 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021025
ltimariub77f24b2013-01-24 18:54:33 -080021026 if ( pWDICtx->wdiLowLevelIndCB )
21027 {
21028 /*Notify UMAC of indication*/
21029 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21030 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021031
21032 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021033}/*WDI_ProcessLowRSSIInd*/
21034
21035
21036/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021037 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021038 an indication of this kind is being received over the
21039 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021040
21041 @param pWDICtx: pointer to the WLAN DAL context
21042 pEventData: pointer to the event information structure
21043
Jeff Johnson295189b2012-06-20 16:38:30 -070021044 @see
21045 @return Result of the function call
21046*/
21047WDI_Status
21048WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021049(
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 WDI_ControlBlockType* pWDICtx,
21051 WDI_EventInfoType* pEventData
21052)
21053{
21054 WDI_Status wdiStatus;
21055 eHalStatus halStatus;
21056 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021057 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21059
21060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021061 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021062 -------------------------------------------------------------------------*/
21063 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21064 ( NULL == pEventData->pEventData))
21065 {
21066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021067 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021068 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021070 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021071 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021072 /*-------------------------------------------------------------------------
21073 Extract indication and send it to UMAC
21074 -------------------------------------------------------------------------*/
21075 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21076 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021077 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021078
21079 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021080 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021081 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21082 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021083 if ( pWDICtx->wdiLowLevelIndCB )
21084 {
21085 /*Notify UMAC*/
21086 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21087 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021088
21089 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021090}/*WDI_ProcessMissedBeaconInd*/
21091
21092
21093/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021094 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021095 an indication of this kind is being received over the
21096 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021097
21098 @param pWDICtx: pointer to the WLAN DAL context
21099 pEventData: pointer to the event information structure
21100
Jeff Johnson295189b2012-06-20 16:38:30 -070021101 @see
21102 @return Result of the function call
21103*/
21104WDI_Status
21105WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021106(
Jeff Johnson295189b2012-06-20 16:38:30 -070021107 WDI_ControlBlockType* pWDICtx,
21108 WDI_EventInfoType* pEventData
21109)
21110{
21111 WDI_Status wdiStatus;
21112 eHalStatus halStatus;
21113 WDI_LowLevelIndType wdiInd;
21114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21115
21116 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021118 -------------------------------------------------------------------------*/
21119 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21120 ( NULL == pEventData->pEventData))
21121 {
21122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021123 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021124 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021126 }
21127
21128 /*-------------------------------------------------------------------------
21129 Extract indication and send it to UMAC
21130 -------------------------------------------------------------------------*/
21131 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21132 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021134
21135 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021136 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021137 /* ! TO DO - fill in from HAL struct:
21138 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21139
ltimariub77f24b2013-01-24 18:54:33 -080021140 if ( pWDICtx->wdiLowLevelIndCB )
21141 {
21142 /*Notify UMAC*/
21143 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21144 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021145
21146 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021147}/*WDI_ProcessUnkAddrFrameInd*/
21148
21149
21150/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021151 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021152 indication of this kind is being received over the bus
21153 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021154
21155 @param pWDICtx: pointer to the WLAN DAL context
21156 pEventData: pointer to the event information structure
21157
Jeff Johnson295189b2012-06-20 16:38:30 -070021158 @see
21159 @return Result of the function call
21160*/
21161WDI_Status
21162WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021163(
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 WDI_ControlBlockType* pWDICtx,
21165 WDI_EventInfoType* pEventData
21166)
21167{
21168 WDI_LowLevelIndType wdiInd;
21169 tpSirMicFailureInd pHalMicFailureInd;
21170
21171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21172
21173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021175 -------------------------------------------------------------------------*/
21176 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21177 ( NULL == pEventData->pEventData))
21178 {
21179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021183 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021184
Jeff Johnson295189b2012-06-20 16:38:30 -070021185 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21186 /*-------------------------------------------------------------------------
21187 Extract indication and send it to UMAC
21188 -------------------------------------------------------------------------*/
21189
21190 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021191 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021192 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21193 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21194 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21195 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21196 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21197 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21198 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21199 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021200 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021201 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021202 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021203 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021204 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021205 pHalMicFailureInd->info.keyId;
21206 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21207 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21208 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21209 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021210
21211 if ( pWDICtx->wdiLowLevelIndCB )
21212 {
21213 /*Notify UMAC*/
21214 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21215 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021216
21217 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021218}/*WDI_ProcessMicFailureInd*/
21219
21220
21221/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021222 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021223 an indication of this kind is being received over the
21224 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021225
21226 @param pWDICtx: pointer to the WLAN DAL context
21227 pEventData: pointer to the event information structure
21228
Jeff Johnson295189b2012-06-20 16:38:30 -070021229 @see
21230 @return Result of the function call
21231*/
21232WDI_Status
21233WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021234(
Jeff Johnson295189b2012-06-20 16:38:30 -070021235 WDI_ControlBlockType* pWDICtx,
21236 WDI_EventInfoType* pEventData
21237)
21238{
21239 WDI_Status wdiStatus;
21240 eHalStatus halStatus;
21241 WDI_LowLevelIndType wdiInd;
21242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21243
21244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021245 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021246 -------------------------------------------------------------------------*/
21247 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21248 ( NULL == pEventData->pEventData))
21249 {
21250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021251 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021254 }
21255
21256 /*-------------------------------------------------------------------------
21257 Extract indication and send it to UMAC
21258 -------------------------------------------------------------------------*/
21259
21260 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21261 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021263
21264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21265 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021266
Jeff Johnson295189b2012-06-20 16:38:30 -070021267 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021268 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21269 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021270
ltimariub77f24b2013-01-24 18:54:33 -080021271 if ( pWDICtx->wdiLowLevelIndCB )
21272 {
21273 /*Notify UMAC*/
21274 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21275 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021276
21277 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021278}/*WDI_ProcessFatalErrorInd*/
21279
21280/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021281 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021282 an indication of this kind is being received over the
21283 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021284
21285 @param pWDICtx: pointer to the WLAN DAL context
21286 pEventData: pointer to the event information structure
21287
Jeff Johnson295189b2012-06-20 16:38:30 -070021288 @see
21289 @return Result of the function call
21290*/
21291WDI_Status
21292WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021293(
Jeff Johnson295189b2012-06-20 16:38:30 -070021294 WDI_ControlBlockType* pWDICtx,
21295 WDI_EventInfoType* pEventData
21296)
21297{
21298 tDeleteStaContextParams halDelSTACtx;
21299 WDI_LowLevelIndType wdiInd;
21300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21301
21302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 -------------------------------------------------------------------------*/
21305 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21306 ( NULL == pEventData->pEventData))
21307 {
21308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021309 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021312 }
21313
21314 /*-------------------------------------------------------------------------
21315 Extract indication and send it to UMAC
21316 -------------------------------------------------------------------------*/
21317
21318 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021319 wpalMemoryCopy( &halDelSTACtx,
21320 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021321 sizeof(halDelSTACtx));
21322
21323 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021324 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021325
21326 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21327 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21328 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21329 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21330
Jeff Johnsone7245742012-09-05 17:12:55 -070021331 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021332 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021333 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021334 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021335 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21336 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021337
ltimariub77f24b2013-01-24 18:54:33 -080021338 if ( pWDICtx->wdiLowLevelIndCB )
21339 {
21340 /*Notify UMAC*/
21341 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21342 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021343
21344 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021345}/*WDI_ProcessDelSTAInd*/
21346
21347/**
21348*@brief Process Coex Indication function (called when
21349 an indication of this kind is being received over the
21350 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021351
21352 @param pWDICtx: pointer to the WLAN DAL context
21353 pEventData: pointer to the event information structure
21354
Jeff Johnson295189b2012-06-20 16:38:30 -070021355 @see
21356 @return Result of the function call
21357*/
21358WDI_Status
21359WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021360(
Jeff Johnson295189b2012-06-20 16:38:30 -070021361 WDI_ControlBlockType* pWDICtx,
21362 WDI_EventInfoType* pEventData
21363)
21364{
21365 WDI_LowLevelIndType wdiInd;
21366 tCoexIndMsg halCoexIndMsg;
21367 wpt_uint32 index;
21368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21369
21370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021371 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021372 -------------------------------------------------------------------------*/
21373 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21374 ( NULL == pEventData->pEventData ))
21375 {
21376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021378 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021380 }
21381
21382 /*-------------------------------------------------------------------------
21383 Extract indication and send it to UMAC
21384 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021385 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21386 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021387 sizeof(halCoexIndMsg.coexIndParams) );
21388
21389 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021390 wdiInd.wdiIndicationType = WDI_COEX_IND;
21391 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021392 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21393 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021394 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021395 }
21396
21397 // DEBUG
21398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21399 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021400 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21401 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21402 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21403 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21404 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021405
ltimariub77f24b2013-01-24 18:54:33 -080021406 if ( pWDICtx->wdiLowLevelIndCB )
21407 {
21408 /*Notify UMAC*/
21409 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21410 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021411
21412 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021413}/*WDI_ProcessCoexInd*/
21414
21415/**
21416*@brief Process Tx Complete Indication function (called when
21417 an indication of this kind is being received over the
21418 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021419
21420 @param pWDICtx: pointer to the WLAN DAL context
21421 pEventData: pointer to the event information structure
21422
Jeff Johnson295189b2012-06-20 16:38:30 -070021423 @see
21424 @return Result of the function call
21425*/
21426WDI_Status
21427WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021428(
Jeff Johnson295189b2012-06-20 16:38:30 -070021429 WDI_ControlBlockType* pWDICtx,
21430 WDI_EventInfoType* pEventData
21431)
21432{
21433 WDI_LowLevelIndType wdiInd;
21434 tTxComplIndMsg halTxComplIndMsg;
21435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21436
21437 /*-------------------------------------------------------------------------
21438 Sanity check
21439 -------------------------------------------------------------------------*/
21440 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21441 ( NULL == pEventData->pEventData ))
21442 {
21443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021444 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021445 WDI_ASSERT( 0 );
21446 return WDI_STATUS_E_FAILURE;
21447 }
21448
21449 /*-------------------------------------------------------------------------
21450 Extract indication and send it to UMAC
21451 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021452 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21453 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021454 sizeof(halTxComplIndMsg.txComplParams) );
21455
21456 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021457 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
21458 wdiInd.wdiIndicationData.tx_complete_status
21459 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070021460
ltimariub77f24b2013-01-24 18:54:33 -080021461 if ( pWDICtx->wdiLowLevelIndCB )
21462 {
21463 /*Notify UMAC*/
21464 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21465 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021466
21467 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021468}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021469#ifdef FEATURE_WLAN_TDLS
21470/**
21471*@brief Process TDLS Indication function (called when
21472 an indication of this kind is being received over the
21473 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021474
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021475 @param pWDICtx: pointer to the WLAN DAL context
21476 pEventData: pointer to the event information structure
21477
21478 @see
21479 @return Result of the function call
21480*/
21481WDI_Status
21482WDI_ProcessTdlsInd
21483(
21484 WDI_ControlBlockType* pWDICtx,
21485 WDI_EventInfoType* pEventData
21486)
21487{
21488 WDI_LowLevelIndType wdiInd;
21489 tTdlsIndMsg halTdlsIndMsg;
21490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21491
21492 /*-------------------------------------------------------------------------
21493 Sanity check
21494 -------------------------------------------------------------------------*/
21495 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21496 ( NULL == pEventData->pEventData ))
21497 {
21498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21499 "%s: Invalid parameters", __func__);
21500 WDI_ASSERT( 0 );
21501 return WDI_STATUS_E_FAILURE;
21502 }
21503
21504 /*-------------------------------------------------------------------------
21505 Extract indication and send it to UMAC
21506 -------------------------------------------------------------------------*/
21507 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21508 pEventData->pEventData,
21509 sizeof(halTdlsIndMsg.tdlsIndParams) );
21510
21511 /*Fill in the indication parameters*/
21512 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21513
21514 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21515 = halTdlsIndMsg.tdlsIndParams.status;
21516
21517 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21518 = halTdlsIndMsg.tdlsIndParams.staIdx;
21519
21520 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21521 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21522
Atul Mittalbb2aad02014-09-22 19:09:36 +053021523 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21524 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021525 /*Notify UMAC*/
21526 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21527
21528 return WDI_STATUS_SUCCESS;
21529}/*WDI_ProcessTdlsInd*/
21530#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021531/**
Viral Modid86bde22012-12-10 13:09:21 -080021532*@brief Process Noa Start Indication function (called when
21533 an indication of this kind is being received over the
21534 bus from HAL)
21535
21536 @param pWDICtx: pointer to the WLAN DAL context
21537 pEventData: pointer to the event information structure
21538
21539 @see
21540 @return Result of the function call
21541*/
21542WDI_Status
21543WDI_ProcessP2pNoaStartInd
21544(
21545 WDI_ControlBlockType* pWDICtx,
21546 WDI_EventInfoType* pEventData
21547)
21548{
21549 WDI_LowLevelIndType wdiInd;
21550 tNoaStartIndMsg halNoaStartIndMsg;
21551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21552
21553 /*-------------------------------------------------------------------------
21554 Sanity check
21555 -------------------------------------------------------------------------*/
21556 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21557 ( NULL == pEventData->pEventData ))
21558 {
21559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21560 "%s: Invalid parameters", __func__);
21561 WDI_ASSERT( 0 );
21562 return WDI_STATUS_E_FAILURE;
21563 }
21564
21565 /*-------------------------------------------------------------------------
21566 Extract indication and send it to UMAC
21567 -------------------------------------------------------------------------*/
21568 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21569 pEventData->pEventData,
21570 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21571
21572 /*Fill in the indication parameters*/
21573 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21574
21575 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21576 = halNoaStartIndMsg.noaStartIndParams.status;
21577
21578 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21579 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21580
21581 /*Notify UMAC*/
21582 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21583
21584 return WDI_STATUS_SUCCESS;
21585}/*WDI_ProcessNoaAttrInd*/
21586
21587/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021588*@brief Process Noa Attr Indication function (called when
21589 an indication of this kind is being received over the
21590 bus from HAL)
21591
21592 @param pWDICtx: pointer to the WLAN DAL context
21593 pEventData: pointer to the event information structure
21594
21595 @see
21596 @return Result of the function call
21597*/
21598WDI_Status
21599WDI_ProcessP2pNoaAttrInd
21600(
21601 WDI_ControlBlockType* pWDICtx,
21602 WDI_EventInfoType* pEventData
21603)
21604{
21605 WDI_LowLevelIndType wdiInd;
21606 tNoaAttrIndMsg halNoaAttrIndMsg;
21607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21608
21609 /*-------------------------------------------------------------------------
21610 Sanity check
21611 -------------------------------------------------------------------------*/
21612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21613 ( NULL == pEventData->pEventData ))
21614 {
21615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021617 WDI_ASSERT( 0 );
21618 return WDI_STATUS_E_FAILURE;
21619 }
21620
21621 /*-------------------------------------------------------------------------
21622 Extract indication and send it to UMAC
21623 -------------------------------------------------------------------------*/
21624 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21625 pEventData->pEventData,
21626 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21627
21628 /*Fill in the indication parameters*/
21629 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021630
Jeff Johnson295189b2012-06-20 16:38:30 -070021631 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21632 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021633
Jeff Johnson295189b2012-06-20 16:38:30 -070021634 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21635 = halNoaAttrIndMsg.noaAttrIndParams.index;
21636 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21637 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21638 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21639 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021640
Jeff Johnson295189b2012-06-20 16:38:30 -070021641 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21642 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21643 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21644 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21645 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21646 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21647 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21648 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021649
Jeff Johnson295189b2012-06-20 16:38:30 -070021650 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21651 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21652 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21653 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21654 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21655 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21656 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21657 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21658
ltimariub77f24b2013-01-24 18:54:33 -080021659 if ( pWDICtx->wdiLowLevelIndCB )
21660 {
21661 /*Notify UMAC*/
21662 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21663 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021664
21665 return WDI_STATUS_SUCCESS;
21666}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021667
21668/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021669 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021670 an indication of this kind is being received over the
21671 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021672
21673 @param pWDICtx: pointer to the WLAN DAL context
21674 pEventData: pointer to the event information structure
21675
Jeff Johnson295189b2012-06-20 16:38:30 -070021676 @see
21677 @return Result of the function call
21678*/
21679WDI_Status
21680WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021681(
Jeff Johnson295189b2012-06-20 16:38:30 -070021682 WDI_ControlBlockType* pWDICtx,
21683 WDI_EventInfoType* pEventData
21684)
21685{
21686 WDI_LowLevelIndType wdiInd;
21687 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021688
Jeff Johnson295189b2012-06-20 16:38:30 -070021689 /*-------------------------------------------------------------------------
21690 Extract indication and send it to UMAC
21691 -------------------------------------------------------------------------*/
21692 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021693 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21694
ltimariub77f24b2013-01-24 18:54:33 -080021695 if ( pWDICtx->wdiLowLevelIndCB )
21696 {
21697 /*Notify UMAC*/
21698 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21699 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021700
Jeff Johnsone7245742012-09-05 17:12:55 -070021701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021702}/*WDI_ProcessTxPerHitInd*/
21703
Jeff Johnson295189b2012-06-20 16:38:30 -070021704/**
Yue Mab9c86f42013-08-14 15:59:08 -070021705 @brief Process Periodic Tx Pattern Fw Indication function
21706
21707 @param pWDICtx: pointer to the WLAN DAL context
21708 pEventData: pointer to the event information structure
21709
21710 @see
21711 @return Result of the function call
21712*/
21713WDI_Status
21714WDI_ProcessPeriodicTxPtrnFwInd
21715(
21716 WDI_ControlBlockType* pWDICtx,
21717 WDI_EventInfoType* pEventData
21718)
21719{
21720 WDI_LowLevelIndType wdiInd;
21721
21722 /*-------------------------------------------------------------------------
21723 Sanity check
21724 -------------------------------------------------------------------------*/
21725 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21726 (NULL == pEventData->pEventData))
21727 {
21728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21729 "%s: Invalid parameters", __func__);
21730 WDI_ASSERT(0);
21731 return WDI_STATUS_E_FAILURE;
21732 }
21733
21734 /*-------------------------------------------------------------------------
21735 Extract indication and send it to UMAC
21736 -------------------------------------------------------------------------*/
21737 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21738 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21739 sizeof(tHalPeriodicTxPtrnFwInd));
21740
21741 if (pWDICtx->wdiLowLevelIndCB)
21742 {
21743 /*Notify UMAC*/
21744 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21745 }
21746
21747 return WDI_STATUS_SUCCESS;
21748}
21749
21750/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021751 @brief WDI_ProcessFTMCommandReq
21752 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021753
21754 @param pWDICtx: pointer to the WLAN DAL context
21755 pEventData: pointer to the event information structure
21756
Jeff Johnson295189b2012-06-20 16:38:30 -070021757 @see
21758 @return Result of the function call
21759*/
21760WDI_Status
21761WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021762(
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 WDI_ControlBlockType* pWDICtx,
21764 WDI_EventInfoType* pEventData
21765)
21766{
21767 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21768 wpt_uint8 *ftmCommandBuffer = NULL;
21769 wpt_uint16 dataOffset;
21770 wpt_uint16 bufferSize;
21771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021772 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021773 -------------------------------------------------------------------------*/
21774 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21775 ( NULL == pEventData->pEventData))
21776
21777 {
21778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021779 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021780 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021782 }
21783
21784 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21785
21786 /* Get MSG Buffer */
21787 WDI_GetMessageBuffer(pWDICtx,
21788 WDI_FTM_CMD_REQ,
21789 ftmCommandReq->bodyLength,
21790 &ftmCommandBuffer,
21791 &dataOffset,
21792 &bufferSize);
21793
21794 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21795 ftmCommandReq->FTMCommandBody,
21796 ftmCommandReq->bodyLength);
21797
21798 /* Send MSG */
21799 return WDI_SendMsg(pWDICtx,
21800 ftmCommandBuffer,
21801 bufferSize,
21802 pEventData->pCBfnc,
21803 pEventData->pUserData,
21804 WDI_FTM_CMD_RESP);
21805}
21806
21807/**
21808 @brief WDI_ProcessFTMCommandRsp
21809 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021810
21811 @param pWDICtx: pointer to the WLAN DAL context
21812 pEventData: pointer to the event information structure
21813
Jeff Johnson295189b2012-06-20 16:38:30 -070021814 @see
21815 @return Result of the function call
21816*/
21817WDI_Status
21818WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021819(
Jeff Johnson295189b2012-06-20 16:38:30 -070021820 WDI_ControlBlockType* pWDICtx,
21821 WDI_EventInfoType* pEventData
21822)
21823{
21824 WDI_FTMCommandRspCb ftmCMDRspCb;
21825 tProcessPttRspParams *ftmCMDRspData = NULL;
21826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21827
21828 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021829 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021830 -------------------------------------------------------------------------*/
21831 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21832 ( NULL == pEventData->pEventData))
21833 {
21834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021835 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021838 }
21839
21840 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21841
21842 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21843
Jeff Johnsone7245742012-09-05 17:12:55 -070021844 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21845 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021846 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21847
21848 /*Notify UMAC*/
21849 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21850
Jeff Johnsone7245742012-09-05 17:12:55 -070021851 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021852}
Jeff Johnson295189b2012-06-20 16:38:30 -070021853/**
21854 @brief WDI_ProcessHalDumpCmdReq
21855 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021856
21857 @param pWDICtx: pointer to the WLAN DAL context
21858 pEventData: pointer to the event information structure
21859
Jeff Johnson295189b2012-06-20 16:38:30 -070021860 @see
21861 @return Result of the function call
21862*/
21863WDI_Status
21864WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021865(
Jeff Johnson295189b2012-06-20 16:38:30 -070021866 WDI_ControlBlockType* pWDICtx,
21867 WDI_EventInfoType* pEventData
21868)
21869{
21870 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21871 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21872 wpt_uint16 usDataOffset = 0;
21873 wpt_uint16 usSendSize = 0;
21874 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021875 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021876
21877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021878 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021879 -------------------------------------------------------------------------*/
21880 if (( NULL == pEventData ) ||
21881 ( NULL == pEventData->pEventData) ||
21882 ( NULL == pEventData->pCBfnc ))
21883 {
21884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021885 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021888 }
21889
21890 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21891 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21892
21893 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021894 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021895 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021896 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021897 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021898 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021899 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021900 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021901 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021902 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021903 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021904
Jeff Johnson295189b2012-06-20 16:38:30 -070021905 /*-----------------------------------------------------------------------
21906 Get message buffer
21907 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021908 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021909 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21910 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021911 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021912 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21913 {
21914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021915 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021916 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021919 }
21920
Jeff Johnsone7245742012-09-05 17:12:55 -070021921 wpalMemoryCopy( pSendBuffer+usDataOffset,
21922 &halDumpCmdReqMsg.dumpCmdReqParams,
21923 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021924
21925 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021926 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021927
21928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021929 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021930 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021931 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21932 wdiHALDumpCmdRspCb, pEventData->pUserData,
21933 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021934}
21935
21936/**
21937 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021938 Process hal Dump Command Response from HAL, simply route to HDD
21939
21940 @param pWDICtx: pointer to the WLAN DAL context
21941 pEventData: pointer to the event information structure
21942
Jeff Johnson295189b2012-06-20 16:38:30 -070021943 @see
21944 @return Result of the function call
21945*/
21946WDI_Status
21947WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021948(
Jeff Johnson295189b2012-06-20 16:38:30 -070021949 WDI_ControlBlockType* pWDICtx,
21950 WDI_EventInfoType* pEventData
21951)
21952{
21953 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021954 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021955 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21956
21957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021958 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 -------------------------------------------------------------------------*/
21960 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21961 ( NULL == pEventData->pEventData))
21962 {
21963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021964 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021967 }
21968
Jeff Johnsone7245742012-09-05 17:12:55 -070021969 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021970
21971 /*Initialize the WDI Response structure */
21972 wdiHALDumpCmdRsp.usBufferLen = 0;
21973 wdiHALDumpCmdRsp.pBuffer = NULL;
21974
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021975 wpalMemoryCopy( &halDumpCmdRspParams,
21976 pEventData->pEventData,
21977 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021978
21979 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021980 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021981
21982 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021983 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021984 {
21985 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021986 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21987 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21988
21989 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21990 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021991 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021992 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021993
Jeff Johnson295189b2012-06-20 16:38:30 -070021994 /*Notify UMAC*/
21995 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21996
21997 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21998 {
21999 /* Free the allocated buffer */
22000 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22001 }
22002 return WDI_STATUS_SUCCESS;
22003}
22004
22005/*==========================================================================
22006 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022007
Jeff Johnson295189b2012-06-20 16:38:30 -070022008 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022009 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022010==========================================================================*/
22011/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022012 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022013 when it wishes to send up a notification like the ones
22014 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022015
Jeff Johnson295189b2012-06-20 16:38:30 -070022016 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022017
22018 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022019 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022020 wctsNotifyCBData: the callback data of the user
22021
Jeff Johnson295189b2012-06-20 16:38:30 -070022022 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022023
22024 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022025*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022026void
Jeff Johnson295189b2012-06-20 16:38:30 -070022027WDI_NotifyMsgCTSCB
22028(
Jeff Johnsone7245742012-09-05 17:12:55 -070022029 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022030 WCTS_NotifyEventType wctsEvent,
22031 void* wctsNotifyCBData
22032)
22033{
Jeff Johnsone7245742012-09-05 17:12:55 -070022034 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22036
22037 if (NULL == pWDICtx )
22038 {
22039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022042 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022043 }
22044
22045 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22046 {
22047 /* callback presumably occurred after close */
22048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022049 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022050 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022051 }
22052
22053 if ( WCTS_EVENT_OPEN == wctsEvent )
22054 {
22055 /*Flag must be set atomically as it is checked from incoming request
22056 functions*/
22057 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022058 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022059
22060 /*Nothing to do - so try to dequeue any pending request that may have
22061 occurred while we were trying to establish this*/
22062 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022063 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022064 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022065 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022066 {
22067 /*Flag must be set atomically as it is checked from incoming request
22068 functions*/
22069 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022070 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022071
22072 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022073 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022074 wpalMutexRelease(&pWDICtx->wptMutex);
22075
22076 /*Notify that the Control Channel is closed */
22077 wpalEventSet(&pWDICtx->wctsActionEvent);
22078 }
22079
22080}/*WDI_NotifyMsgCTSCB*/
22081
22082
22083/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022084 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022085 when it wishes to send up a packet received over the
22086 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022087
Jeff Johnson295189b2012-06-20 16:38:30 -070022088 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022089
22090 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022091 pMsg: the packet
22092 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022093 wctsRxMsgCBData: the callback data of the user
22094
Jeff Johnson295189b2012-06-20 16:38:30 -070022095 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022096
22097 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022098*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022099void
22100WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022101(
Jeff Johnsone7245742012-09-05 17:12:55 -070022102 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022103 void* pMsg,
22104 wpt_uint32 uLen,
22105 void* wctsRxMsgCBData
22106)
22107{
Jeff Johnsone7245742012-09-05 17:12:55 -070022108 tHalMsgHeader *pHalMsgHeader;
22109 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022110 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22112
22113 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022114 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022115 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 ( uLen < sizeof(tHalMsgHeader)))
22118 {
22119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022120 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022121 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022122 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022123 }
22124
22125 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22126 {
22127 /* callback presumably occurred after close */
22128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022129 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022130 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022131 }
22132
Jeff Johnsone7245742012-09-05 17:12:55 -070022133 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022134 context - so no serialization is necessary here
22135 ! - revisit this assumption */
22136
22137 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22138
22139 if ( uLen != pHalMsgHeader->msgLen )
22140 {
22141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22142 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022143 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022144 wpalWlanReload();
22145
Jeff Johnsone7245742012-09-05 17:12:55 -070022146 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022147 }
22148
22149 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22150
22151 /*The message itself starts after the header*/
22152 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22153 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22154 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22155 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22156
22157
22158 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22159 {
22160 /*Stop the timer as the response was received */
22161 /*!UT - check for potential race conditions between stop and response */
22162 wpalTimerStop(&pWDICtx->wptResponseTimer);
22163 }
22164 /* Check if we receive a response message which is not expected */
22165 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22166 {
22167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22168 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22169 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022170 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022171 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22172 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022173
22174 if (gWDICb.bEnableSSR == false)
22175 {
22176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22177 "SSR is not enabled on WDI timeout");
22178 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22179 return;
22180 }
22181 wpalWcnssResetIntr();
22182 /* if this timer fires, it means Riva did not receive the FIQ */
22183 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22184
Jeff Johnson295189b2012-06-20 16:38:30 -070022185 return;
22186 }
22187
22188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22189 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22190
22191 /*Post response event to the state machine*/
22192 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22193
22194}/*WDI_RXMsgCTSCB*/
22195
22196
22197/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022198 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022199========================================================================*/
22200
22201/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022202 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022203 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022204
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 @param pWDICtx - pointer to the control block
22206
22207 @return Result of the function call
22208*/
22209WPT_INLINE WDI_Status
22210WDI_CleanCB
22211(
22212 WDI_ControlBlockType* pWDICtx
22213)
22214{
22215 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22216
22217 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022218 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022219
Jeff Johnsone7245742012-09-05 17:12:55 -070022220 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022221 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22222 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22223
22224 WDI_ResetAssocSessions( pWDICtx );
22225
22226 return WDI_STATUS_SUCCESS;
22227}/*WDI_CleanCB*/
22228
22229
22230/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022231 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022232
Jeff Johnsone7245742012-09-05 17:12:55 -070022233
22234 @param pWDICtx: pointer to the WLAN DAL context
22235 pEventData: pointer to the event information structure
22236
Jeff Johnson295189b2012-06-20 16:38:30 -070022237 @see
22238 @return Result of the function call
22239*/
22240WPT_INLINE WDI_Status
22241WDI_ProcessRequest
22242(
22243 WDI_ControlBlockType* pWDICtx,
22244 WDI_EventInfoType* pEventData
22245)
22246{
22247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22248
Jeff Johnsone7245742012-09-05 17:12:55 -070022249 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022250 already checked these pointers*/
22251
22252 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22253 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022254 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022256 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022257 WDI_getReqMsgString(pEventData->wdiRequest),
22258 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22259 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22260 }
22261 else
22262 {
22263 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022264 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022265 pEventData->wdiRequest);
22266 return WDI_STATUS_E_NOT_IMPLEMENT;
22267 }
22268}/*WDI_ProcessRequest*/
22269
22270
22271/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022272 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022273 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022274 prefixes it with a send message header
22275
22276 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022277 wdiReqType: type of the request being sent
22278 uBufferLen: message buffer len
22279 pMsgBuffer: resulting allocated buffer
22280 pusDataOffset: offset in the buffer where the caller
22281 can start copying its message data
22282 puBufferSize: the resulting buffer size (offset+buff
22283 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022284
Jeff Johnson295189b2012-06-20 16:38:30 -070022285 @see
22286 @return Result of the function call
22287*/
22288WDI_Status
22289WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022290(
22291 WDI_ControlBlockType* pWDICtx,
22292 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022293 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022294 wpt_uint8** pMsgBuffer,
22295 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022296 wpt_uint16* pusBufferSize
22297)
22298{
22299 tHalMsgHeader halMsgHeader;
22300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22301
Jeff Johnsone7245742012-09-05 17:12:55 -070022302 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022303 again*/
22304
22305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022306 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022307 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022308 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022309 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22310 if ( NULL == *pMsgBuffer )
22311 {
22312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22313 "Unable to allocate message buffer for req %s (%d)",
22314 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022315 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022317 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022318 }
22319
22320 /*-------------------------------------------------------------------------
22321 Fill in the message header
22322 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022323 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22324 /* Fill msgVersion */
22325#ifdef WLAN_FEATURE_11AC
22326 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022327 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022328 else
22329#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022330 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022331
Jeff Johnsone7245742012-09-05 17:12:55 -070022332 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22333 *pusDataOffset = sizeof(halMsgHeader);
22334 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22335
22336 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022337}/*WDI_GetMessageBuffer*/
22338
22339
22340/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022341 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022342 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022343 the CB
22344
22345 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022346 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022347
Jeff Johnson295189b2012-06-20 16:38:30 -070022348 usSendSize size of the buffer to be sent
22349 pRspCb: response callback - save in the WDI
22350 CB
22351 pUserData: user data associated with the
22352 callback
22353 wdiExpectedResponse: the code of the response that is
22354 expected to be rx-ed for this request
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*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022359WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022360WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022361(
22362 WDI_ControlBlockType* pWDICtx,
22363 wpt_uint8* pSendBuffer,
22364 wpt_uint32 usSendSize,
22365 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022366 void* pUserData,
22367 WDI_ResponseEnumType wdiExpectedResponse
22368)
22369{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022370 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022371 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22373
22374 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022375 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 ------------------------------------------------------------------------*/
22377 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022378 pWDICtx->pfncRspCB = pRspCb;
22379 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022380
22381 /*-----------------------------------------------------------------------
22382 Call the CTS to send this message over - free message afterwards
22383 - notify transport failure
22384 Note: CTS is reponsible for freeing the message buffer.
22385 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022386 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22387 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22388 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022389 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022391 "Failed to send message with expected response %s (%d)"
22392 " over the bus - catastrophic failure",
22393 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22394 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022395
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022396 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22397 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022398 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022399 else
22400 {
22401 /* even when message was placed in CTS deferred Q, we will treat it
22402 success but log this info
22403 */
22404 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22405 {
22406 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22407 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22408 "response %s (%d)",
22409 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22410 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022411 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022412 }
22413 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022414
Jeff Johnsond13512a2012-07-17 11:42:19 -070022415 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022416 if ( NULL != pWDICtx->wdiReqStatusCB )
22417 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022418 /*Inform originator whether request went through or not*/
22419 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22420 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022421 pWDICtx->wdiReqStatusCB = NULL;
22422 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022423 callback(wdiStatus, callbackContext);
22424
22425 /*For WDI requests which have registered a request callback,
22426 inform the WDA caller of the same via setting the return value
22427 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22428 end up repeating the functonality in the req callback for the
22429 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022430 if (wdiStatus != WDI_STATUS_SUCCESS)
22431 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022432 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022433 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022434 }
22435
Jeff Johnsond13512a2012-07-17 11:42:19 -070022436 if ( wdiStatus == WDI_STATUS_SUCCESS )
22437 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022438 /*Start timer for the expected response */
22439 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022440
22441 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022442 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022443 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022444 }
22445 else
22446 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022447 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022448 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22449 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022450
Jeff Johnsond13512a2012-07-17 11:42:19 -070022451 return wdiStatus;
22452
Jeff Johnson295189b2012-06-20 16:38:30 -070022453}/*WDI_SendMsg*/
22454
22455
22456
22457/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022458 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022459 the bus using the control transport and saves some info
22460 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022461
22462 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022463 pSendBuffer: buffer to be sent
22464 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022465
Jeff Johnson295189b2012-06-20 16:38:30 -070022466 @see
22467 @return Result of the function call
22468*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022469WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022470WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022471(
22472 WDI_ControlBlockType* pWDICtx,
22473 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022474 wpt_uint32 usSendSize
22475)
22476{
22477 wpt_uint32 uStatus ;
22478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22479
22480 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022481 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022482 Note: CTS is reponsible for freeing the message buffer.
22483 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022484 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022485 (void*)pSendBuffer, usSendSize );
22486
22487 /*Inform Upper MAC about the outcome of the request*/
22488 if ( NULL != pWDICtx->wdiReqStatusCB )
22489 {
22490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22491 "Send indication status : %d", uStatus);
22492
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022493 /* even if CTS placed indication into its deferred Q, we treat it
22494 * as success and let CTS drain its queue as per smd interrupt to CTS
22495 */
22496 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 -070022497 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022498 }
22499
22500 /*If sending of the message failed - it is considered catastrophic and
22501 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022502 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22503 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22504
Jeff Johnson295189b2012-06-20 16:38:30 -070022505 {
22506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022507 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022508
22509 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22510 return WDI_STATUS_E_FAILURE;
22511 }
22512
Jeff Johnsone7245742012-09-05 17:12:55 -070022513 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022514}/*WDI_SendIndication*/
22515
22516
22517/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022518 @brief WDI_DetectedDeviceError - called internally by DAL when
22519 it has detected a failure in the device
22520
22521 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022522 usErrorCode: error code detected by WDI or received
22523 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022524
Jeff Johnson295189b2012-06-20 16:38:30 -070022525 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022526 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022527*/
22528void
22529WDI_DetectedDeviceError
22530(
22531 WDI_ControlBlockType* pWDICtx,
22532 wpt_uint16 usErrorCode
22533)
22534{
22535 WDI_LowLevelIndType wdiInd;
22536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22537
22538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22539 "Device Error detected code: %d - transitioning to stopped state",
22540 usErrorCode);
22541
Katya Nigamf02ad012014-05-05 16:12:49 +053022542 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22543
Jeff Johnson295189b2012-06-20 16:38:30 -070022544 wpalMutexAcquire(&pWDICtx->wptMutex);
22545
22546 WDI_STATableStop(pWDICtx);
22547
22548 WDI_ResetAssocSessions(pWDICtx);
22549
22550 /*Set the expected state transition to stopped - because the device
22551 experienced a failure*/
22552 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22553
22554 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022555 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022556
Jeff Johnsone7245742012-09-05 17:12:55 -070022557 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022558
22559 /*TO DO: - there should be an attempt to reset the device here*/
22560
22561 wpalMutexRelease(&pWDICtx->wptMutex);
22562
22563 /*------------------------------------------------------------------------
22564 Notify UMAC if a handler is registered
22565 ------------------------------------------------------------------------*/
22566 if (pWDICtx->wdiLowLevelIndCB)
22567 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022568 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22569 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022570
22571 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22572 }
22573}/*WDI_DetectedDeviceError*/
22574
22575/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022576 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022577 we started on send message has expire - this should
22578 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022579 reply - trigger catastrophic failure
22580 @param
22581
Jeff Johnson295189b2012-06-20 16:38:30 -070022582 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022583
22584 @see
22585 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022586*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022587void
Jeff Johnson295189b2012-06-20 16:38:30 -070022588WDI_ResponseTimerCB
22589(
22590 void *pUserData
22591)
22592{
22593 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22595
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022596 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022597 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022601 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022602 }
22603
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022604 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022605 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022606 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022607
22608 /* If response timer is running at this time that means this timer
22609 * event is not for the last request but rather last-to-last request and
22610 * this timer event has come after we recevied respone for last-to-last
22611 * message
22612 */
22613 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22614 {
22615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22616 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022617 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022618 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22620 "uArchTimeStampTmrStart: %llu seconds, "
22621 "uArchTimeStampTmrExp: %llu seconds",
22622 pWDICtx->uArchTimeStampRspTmrStart,
22623 pWDICtx->uArchTimeStampRspTmrExp);
22624
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022625 return;
22626 }
22627
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022628 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022629 {
22630
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022632 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022633 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022634 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022635 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22636 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22638 "uArchTimeStampTmrStart: %llu seconds, "
22639 "uArchTimeStampTmrExp: %llu seconds",
22640 pWDICtx->uArchTimeStampRspTmrStart,
22641 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022642
22643 /* WDI timeout means Riva is not responding or SMD communication to Riva
22644 * is not happening. The only possible way to recover from this error
22645 * is to initiate SSR from APPS.
22646 * There is also an option to re-enable wifi, which will eventually
22647 * trigger SSR
22648 */
22649 if (gWDICb.bEnableSSR == false)
22650 {
22651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22652 "SSR is not enabled on WDI timeout");
22653 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22654 return;
22655 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022656#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022657 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053022658 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053022659 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022660 if(wpalIsSsrPanicOnFailure())
22661 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022662 } else {
22663 /* if this timer fires, it means Riva did not receive the FIQ */
22664 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022665 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022666#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022667 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22668 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022669#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022670 }
22671 else
22672 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022673 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022674 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022675 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022676 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22677 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22679 "uArchTimeStampTmrStart: %llu seconds, "
22680 "uArchTimeStampTmrExp: %llu seconds",
22681 pWDICtx->uArchTimeStampRspTmrStart,
22682 pWDICtx->uArchTimeStampRspTmrExp);
22683
Jeff Johnson295189b2012-06-20 16:38:30 -070022684 }
22685
22686 return;
22687
22688}/*WDI_ResponseTimerCB*/
22689
22690
22691/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022692 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022693
Jeff Johnsone7245742012-09-05 17:12:55 -070022694
22695 @param pWDICtx: pointer to the WLAN DAL context
22696 pEventData: pointer to the event information structure
22697
Jeff Johnson295189b2012-06-20 16:38:30 -070022698 @see
22699 @return Result of the function call
22700*/
22701WPT_INLINE WDI_Status
22702WDI_ProcessResponse
22703(
22704 WDI_ControlBlockType* pWDICtx,
22705 WDI_EventInfoType* pEventData
22706)
22707{
22708 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22709
Jeff Johnsone7245742012-09-05 17:12:55 -070022710 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022711 already checked these pointers
22712 ! - revisit this assumption */
22713 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22714 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022715 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022717 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022718 WDI_getRespMsgString(pEventData->wdiResponse),
22719 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22720 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22721 }
22722 else
22723 {
22724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022725 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022726 pEventData->wdiResponse);
22727 return WDI_STATUS_E_NOT_IMPLEMENT;
22728 }
22729}/*WDI_ProcessResponse*/
22730
22731
22732/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022733 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022734=========================================================================*/
22735
22736/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022737 @brief Utility function used by the DAL Core to help queue a
22738 request that cannot be processed right away.
22739 @param
22740
Jeff Johnson295189b2012-06-20 16:38:30 -070022741 pWDICtx: - pointer to the WDI control block
22742 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022743 queued
22744
22745 @see
22746 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022747*/
22748WDI_Status
22749WDI_QueuePendingReq
22750(
22751 WDI_ControlBlockType* pWDICtx,
22752 WDI_EventInfoType* pEventData
22753)
22754{
Jeff Johnsone7245742012-09-05 17:12:55 -070022755 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022756 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022757 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022758 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22759
22760 if ( NULL == pEventDataQueue )
22761 {
22762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022763 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022764 WDI_ASSERT(0);
22765 return WDI_STATUS_MEM_FAILURE;
22766 }
22767
22768 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22769 pEventDataQueue->pUserData = pEventData->pUserData;
22770 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22771 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022772 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022773
22774 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22775 {
22776 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022777
Jeff Johnson295189b2012-06-20 16:38:30 -070022778 if ( NULL == pEventInfo )
22779 {
22780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022781 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022782 WDI_ASSERT(0);
22783 wpalMemoryFree(pEventDataQueue);
22784 return WDI_STATUS_MEM_FAILURE;
22785 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022786
Jeff Johnson295189b2012-06-20 16:38:30 -070022787 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22788
22789 }
22790 pEventDataQueue->pEventData = pEventInfo;
22791
22792 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022793 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022794
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022795 if (eWLAN_PAL_STATUS_E_FAILURE ==
22796 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22797 {
22798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22799 "pEventDataQueue wpal_list_insert_back failed");
22800 WDI_ASSERT(0);
22801 wpalMemoryFree(pEventDataQueue);
22802 wpalMemoryFree(pEventInfo);
22803 return WDI_STATUS_MEM_FAILURE;
22804 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022805
22806 return WDI_STATUS_SUCCESS;
22807}/*WDI_QueuePendingReq*/
22808
22809/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022810 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022811 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022812 @param
22813
22814 pMsg - pointer to the message
22815
22816 @see
22817 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022818*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022819void
Jeff Johnson295189b2012-06-20 16:38:30 -070022820WDI_PALCtrlMsgCB
22821(
22822 wpt_msg *pMsg
22823)
22824{
22825 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022826 WDI_ControlBlockType* pWDICtx = NULL;
22827 WDI_Status wdiStatus;
22828 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022829 void* pUserData;
22830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22831
22832 if (( NULL == pMsg )||
22833 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22834 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22835 {
22836 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022837 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022838 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022839 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022840 }
22841
22842 /*Transition back to the state that we had before serialization
22843 - serialization transitions us to BUSY to stop any incomming requests
22844 ! TO DO L: possible race condition here if a request comes in between the
22845 state transition and the post function*/
22846
Jeff Johnsone7245742012-09-05 17:12:55 -070022847 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022848
22849 /*-----------------------------------------------------------------------
22850 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022851 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022852 -----------------------------------------------------------------------*/
22853 switch ( pEventData->wdiRequest )
22854 {
22855
Jeff Johnsone7245742012-09-05 17:12:55 -070022856 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022857 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22858 break;
22859
Jeff Johnson295189b2012-06-20 16:38:30 -070022860 case WDI_NV_DOWNLOAD_REQ:
22861 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22862 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22863 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22864 {
22865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022866 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022867 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22868 }
22869 else
22870 {
22871 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22872 }
22873
22874 break;
22875
22876 default:
22877 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22878 break;
22879 }/*switch ( pEventData->wdiRequest )*/
22880
22881 if ( WDI_STATUS_SUCCESS != wdiStatus )
22882 {
22883 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22884
22885 if ( NULL != pfnReqStatusCB )
22886 {
22887 /*Fail the request*/
22888 pfnReqStatusCB( wdiStatus, pUserData);
22889 }
22890 }
22891
22892 /* Free data - that was allocated when queueing*/
22893 if( pEventData != NULL )
22894 {
22895 if( pEventData->pEventData != NULL )
22896 {
22897 wpalMemoryFree(pEventData->pEventData);
22898 }
22899 wpalMemoryFree(pEventData);
22900 }
22901
22902 if( pMsg != NULL )
22903 {
22904 wpalMemoryFree(pMsg);
22905 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022906
Jeff Johnson295189b2012-06-20 16:38:30 -070022907}/*WDI_PALCtrlMsgCB*/
22908
22909/**
22910 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022911 and schedule for execution a pending request
22912 @param
22913
Jeff Johnson295189b2012-06-20 16:38:30 -070022914 pWDICtx: - pointer to the WDI control block
22915 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022916 queued
22917
22918 @see
22919 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022920*/
22921WDI_Status
22922WDI_DequeuePendingReq
22923(
22924 WDI_ControlBlockType* pWDICtx
22925)
22926{
Jeff Johnsone7245742012-09-05 17:12:55 -070022927 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022928 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022929 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22931
Jeff Johnsone7245742012-09-05 17:12:55 -070022932 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022933
22934 if ( NULL == pNode )
22935 {
22936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022937 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022938 return WDI_STATUS_SUCCESS;
22939 }
22940
22941 /*The node actually points to the 1st element inside the Event Data struct -
22942 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022943 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022944
22945 /*Serialize processing in the control thread
22946 !TO DO: - check to see if these are all the messages params that need
22947 to be filled in*/
22948 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22949
22950 if ( NULL == palMsg )
22951 {
22952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022953 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022955 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022956 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022957 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022958 palMsg->callback = WDI_PALCtrlMsgCB;
22959 palMsg->ptr = pEventData;
22960
22961 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022962 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022963 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022964
Jeff Johnson295189b2012-06-20 16:38:30 -070022965 /*Transition back to BUSY as we need to handle a queued request*/
22966 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022967
Jeff Johnson295189b2012-06-20 16:38:30 -070022968 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22969
22970 return WDI_STATUS_PENDING;
22971}/*WDI_DequeuePendingReq*/
22972
22973
22974/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022975 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022976 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022977 away.- The assoc requests will be queued by BSSID
22978 @param
22979
Jeff Johnson295189b2012-06-20 16:38:30 -070022980 pWDICtx: - pointer to the WDI control block
22981 pEventData: pointer to the evnt info that needs to be queued
22982 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022983
22984 @see
22985 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022986*/
22987WDI_Status
22988WDI_QueueNewAssocRequest
22989(
22990 WDI_ControlBlockType* pWDICtx,
22991 WDI_EventInfoType* pEventData,
22992 wpt_macAddr macBSSID
22993)
22994{
Jeff Johnsone7245742012-09-05 17:12:55 -070022995 wpt_uint8 i;
22996 WDI_BSSSessionType* pSession = NULL;
22997 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022998 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022999 void* pEventInfo;
23000 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023002
Jeff Johnsone7245742012-09-05 17:12:55 -070023003
23004 /*------------------------------------------------------------------------
23005 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023006 ------------------------------------------------------------------------*/
23007 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23008 {
23009 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23010 {
23011 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023012 pSession = &pWDICtx->aBSSSessions[i];
23013 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023014 }
23015 }
23016
23017 if ( i >= WDI_MAX_BSS_SESSIONS )
23018 {
23019 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023021 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023022
Jeff Johnson295189b2012-06-20 16:38:30 -070023023 /*------------------------------------------------------------------------
23024 Fill in the BSSID for this session and set the usage flag
23025 ------------------------------------------------------------------------*/
23026 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023027 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023028
23029 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023030 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023031 ------------------------------------------------------------------------*/
23032 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23033 if ( NULL == pEventDataQueue )
23034 {
23035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023036 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023037 WDI_ASSERT(0);
23038 return WDI_STATUS_MEM_FAILURE;
23039 }
23040
23041 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23042 if ( NULL == pSessionIdElement )
23043 {
23044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023045 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023046 WDI_ASSERT(0);
23047 wpalMemoryFree(pEventDataQueue);
23048 return WDI_STATUS_MEM_FAILURE;
23049 }
23050
23051 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23052 if ( NULL == pEventInfo )
23053 {
23054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023055 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023056 WDI_ASSERT(0);
23057 wpalMemoryFree(pSessionIdElement);
23058 wpalMemoryFree(pEventDataQueue);
23059 return WDI_STATUS_MEM_FAILURE;
23060 }
23061
23062 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23063 pEventDataQueue->pUserData = pEventData->pUserData;
23064 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23065 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023066 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023067
23068 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23069 pEventDataQueue->pEventData = pEventInfo;
23070
23071 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023072 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023073
23074 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023075 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023076
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023077 if (eWLAN_PAL_STATUS_E_FAILURE ==
23078 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23079 {
23080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23081 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23082 WDI_ASSERT(0);
23083 wpalMemoryFree(pSessionIdElement);
23084 wpalMemoryFree(pEventDataQueue);
23085 wpalMemoryFree(pEventInfo);
23086 return WDI_STATUS_MEM_FAILURE;
23087 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023088
23089 /*We need to maintain a separate list that keeps track of the order in which
23090 the new assoc requests are being queued such that we can start processing
23091 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023092 pSessionIdElement->ucIndex = i;
23093 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023094
23095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23096 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023097 if (eWLAN_PAL_STATUS_E_FAILURE ==
23098 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23099 {
23100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23101 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23102 WDI_ASSERT(0);
23103 wpalMemoryFree(pSessionIdElement);
23104 wpalMemoryFree(pEventDataQueue);
23105 wpalMemoryFree(pEventInfo);
23106 return WDI_STATUS_MEM_FAILURE;
23107 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023108
23109 /*Return pending as this is what the status of the request is since it has
23110 been queued*/
23111 return WDI_STATUS_PENDING;
23112}/*WDI_QueueNewAssocRequest*/
23113
23114/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023115 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023116 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023117 away.- The assoc requests will be queued by BSSID
23118 @param
23119
Jeff Johnson295189b2012-06-20 16:38:30 -070023120 pWDICtx: - pointer to the WDI control block
23121 pSession: - session in which to queue
23122 pEventData: pointer to the event info that needs to be
23123 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023124
23125 @see
23126 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023127*/
23128WDI_Status
23129WDI_QueueAssocRequest
23130(
23131 WDI_ControlBlockType* pWDICtx,
23132 WDI_BSSSessionType* pSession,
23133 WDI_EventInfoType* pEventData
23134)
23135{
Jeff Johnsone7245742012-09-05 17:12:55 -070023136 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023137 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023138 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023139 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023140
23141 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023142 Sanity check
23143 ------------------------------------------------------------------------*/
23144 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23145 {
23146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023147 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023148
Jeff Johnsone7245742012-09-05 17:12:55 -070023149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023150 }
23151
23152 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023153 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023154 ------------------------------------------------------------------------*/
23155 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23156 if ( NULL == pEventDataQueue )
23157 {
23158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023159 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023160 WDI_ASSERT(0);
23161 return WDI_STATUS_MEM_FAILURE;
23162 }
23163
23164 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23165 if ( NULL == pEventInfo )
23166 {
23167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23168 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023169 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023170 WDI_ASSERT(0);
23171 wpalMemoryFree(pEventDataQueue);
23172 return WDI_STATUS_MEM_FAILURE;
23173 }
23174
23175 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23176 pEventDataQueue->pUserData = pEventData->pUserData;
23177 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23178 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023179 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023180 pEventDataQueue->pEventData = pEventInfo;
23181
23182 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23183
23184 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023185 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023186
23187 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023188 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023189
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023190 if (eWLAN_PAL_STATUS_E_FAILURE ==
23191 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23192 {
23193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23194 "%s: Cannot allocate memory for queueing event data info",
23195 __func__);
23196 WDI_ASSERT(0);
23197 wpalMemoryFree(pEventDataQueue);
23198 wpalMemoryFree(pEventInfo);
23199 return WDI_STATUS_MEM_FAILURE;
23200 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023201
23202 /*The result of this operation is pending because the request has been
23203 queued and it will be processed at a later moment in time */
23204 return WDI_STATUS_PENDING;
23205}/*WDI_QueueAssocRequest*/
23206
23207/**
23208 @brief Utility function used by the DAL Core to help dequeue
23209 an association request that was pending
23210 The request will be queued up in front of the main
23211 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023212 @param
23213
Jeff Johnson295189b2012-06-20 16:38:30 -070023214 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023215
23216
23217 @see
23218 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023219*/
23220WDI_Status
23221WDI_DequeueAssocRequest
23222(
23223 WDI_ControlBlockType* pWDICtx
23224)
23225{
Jeff Johnsone7245742012-09-05 17:12:55 -070023226 wpt_list_node* pNode = NULL;
23227 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023228 WDI_BSSSessionType* pSession;
23229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023230
23231 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023232 Sanity check
23233 ------------------------------------------------------------------------*/
23234 if ( NULL == pWDICtx )
23235 {
23236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023238
Jeff Johnsone7245742012-09-05 17:12:55 -070023239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023240 }
23241
23242 /*------------------------------------------------------------------------
23243 An association has been completed => a new association can occur
23244 Check to see if there are any pending associations ->
23245 If so , transfer all the pending requests into the busy queue for
23246 processing
23247 These requests have arrived prior to the requests in the busy queue
23248 (bc they needed to be processed in order to be placed in this queue)
23249 => they will be placed at the front of the busy queue
23250 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023251 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023252
23253 if ( NULL == pNode )
23254 {
23255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023256 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023257 return WDI_STATUS_SUCCESS;
23258 }
23259
23260 /*The node actually points to the 1st element inside the Session Id struct -
23261 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023262 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023263
23264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23265 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23266
23267 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23268 {
23269 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023270
Jeff Johnson295189b2012-06-20 16:38:30 -070023271 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023272 the front of the main waiting queue for subsequent execution*/
23273 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023274 while ( NULL != pNode )
23275 {
23276 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023277 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23278 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023279 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023281 }
23282 else
23283 {
23284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023285 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023286 WPAL_ASSERT(0);
23287 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023289 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023290
Jeff Johnson295189b2012-06-20 16:38:30 -070023291 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23292 wpalMemoryFree(pSessionIdElement);
23293 return WDI_STATUS_SUCCESS;
23294}/*WDI_DequeueAssocRequest*/
23295
23296/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023297 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023298 pending requests - all req cb will be called with
23299 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023300 @param
23301
Jeff Johnson295189b2012-06-20 16:38:30 -070023302 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023303
23304 @see
23305 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023306*/
23307WDI_Status
23308WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023309(
Jeff Johnson295189b2012-06-20 16:38:30 -070023310 WDI_ControlBlockType* pWDICtx
23311)
23312{
Jeff Johnsone7245742012-09-05 17:12:55 -070023313 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023314 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023315 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023316 void* pUserData;
23317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23318
Jeff Johnsone7245742012-09-05 17:12:55 -070023319 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023320
23321 /*------------------------------------------------------------------------
23322 Go through all the requests and fail them - this will only be called
23323 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023324 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023325 ------------------------------------------------------------------------*/
23326 while( pNode )
23327 {
23328 /*The node actually points to the 1st element inside the Event Data struct -
23329 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023330 pEventDataQueue = (WDI_EventInfoType*)pNode;
23331
Jeff Johnson295189b2012-06-20 16:38:30 -070023332 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23333 if ( NULL != pfnReqStatusCB )
23334 {
23335 /*Fail the request*/
23336 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23337 }
23338 /* Free data - that was allocated when queueing */
23339 if ( pEventDataQueue->pEventData != NULL )
23340 {
23341 wpalMemoryFree(pEventDataQueue->pEventData);
23342 }
23343 wpalMemoryFree(pEventDataQueue);
23344
23345 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23346 {
23347 break;
23348 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023349 }
23350
Jeff Johnson295189b2012-06-20 16:38:30 -070023351 return WDI_STATUS_SUCCESS;
23352}/*WDI_ClearPendingRequests*/
23353
23354/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023355 @brief Helper routine used to init the BSS Sessions in the WDI control block
23356
23357
23358 @param pWDICtx: pointer to the WLAN DAL context
23359
Jeff Johnson295189b2012-06-20 16:38:30 -070023360 @see
23361*/
23362void
23363WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023364(
Jeff Johnson295189b2012-06-20 16:38:30 -070023365 WDI_ControlBlockType* pWDICtx
23366)
23367{
Jeff Johnsone7245742012-09-05 17:12:55 -070023368 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23370
23371 /*-------------------------------------------------------------------------
23372 No Sanity check
23373 -------------------------------------------------------------------------*/
23374 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23375 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023376 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023377 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23378 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23379 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23380 }
23381}/*WDI_ResetAssocSessions*/
23382
23383/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023384 @brief Helper routine used to find a session based on the BSSID
23385
23386
23387 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023388 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023389 pSession: pointer to the session (if found)
23390
Jeff Johnson295189b2012-06-20 16:38:30 -070023391 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023392 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023393*/
23394wpt_uint8
23395WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023396(
Jeff Johnson295189b2012-06-20 16:38:30 -070023397 WDI_ControlBlockType* pWDICtx,
23398 wpt_macAddr macBSSID,
23399 WDI_BSSSessionType** ppSession
23400)
23401{
Jeff Johnsone7245742012-09-05 17:12:55 -070023402 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23404
23405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023406 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023407 -------------------------------------------------------------------------*/
23408 if ( NULL == ppSession )
23409 {
23410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023411 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023412 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023413 }
23414
Jeff Johnsone7245742012-09-05 17:12:55 -070023415 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023416
Jeff Johnsone7245742012-09-05 17:12:55 -070023417 /*------------------------------------------------------------------------
23418 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023419 ------------------------------------------------------------------------*/
23420 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23421 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023422 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23423 (eWLAN_PAL_TRUE ==
23424 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23425 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023426 {
23427 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023428 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023429 return i;
23430 }
23431 }
23432
Jeff Johnsone7245742012-09-05 17:12:55 -070023433 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023434}/*WDI_FindAssocSession*/
23435
23436/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023437 @brief Helper routine used to find a session based on the BSSID
23438
23439
23440 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023441 ucBSSIdx: BSS Index of the session
23442 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023443
Jeff Johnson295189b2012-06-20 16:38:30 -070023444 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023445 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023446*/
23447wpt_uint8
23448WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023449(
Jeff Johnson295189b2012-06-20 16:38:30 -070023450 WDI_ControlBlockType* pWDICtx,
23451 wpt_uint16 ucBSSIdx,
23452 WDI_BSSSessionType** ppSession
23453)
23454{
Jeff Johnsone7245742012-09-05 17:12:55 -070023455 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23457
23458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023460 -------------------------------------------------------------------------*/
23461 if ( NULL == ppSession )
23462 {
23463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023464 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023465 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023466 }
23467
Jeff Johnsone7245742012-09-05 17:12:55 -070023468 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023469
Jeff Johnsone7245742012-09-05 17:12:55 -070023470 /*------------------------------------------------------------------------
23471 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023472 ------------------------------------------------------------------------*/
23473 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23474 {
23475 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23476 {
23477 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023478 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023479 return i;
23480 }
23481 }
23482
Jeff Johnsone7245742012-09-05 17:12:55 -070023483 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023484}/*WDI_FindAssocSessionByBSSIdx*/
23485
23486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023487 @brief Helper routine used to find a session based on the BSSID
23488
23489
23490 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023491 ucBSSIdx: BSS Index of the session
23492 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023493
Jeff Johnson295189b2012-06-20 16:38:30 -070023494 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023495 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023496*/
23497wpt_uint8
23498WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023499(
Jeff Johnson295189b2012-06-20 16:38:30 -070023500 WDI_ControlBlockType* pWDICtx,
23501 wpt_uint16 usIdx,
23502 WDI_BSSSessionType** ppSession
23503)
23504{
23505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23506
23507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023508 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023509 -------------------------------------------------------------------------*/
23510 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23511 {
23512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023513 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023514 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023515 }
23516
23517 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023518 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023519
23520 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023521
Jeff Johnson295189b2012-06-20 16:38:30 -070023522}/*WDI_FindAssocSessionByBSSIdx*/
23523
23524/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023525 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023526 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023527
23528
23529 @param pWDICtx: pointer to the WLAN DAL context
23530 pSession: pointer to the session (if found)
23531
Jeff Johnson295189b2012-06-20 16:38:30 -070023532 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023533 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023534*/
23535wpt_uint8
23536WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023537(
Jeff Johnson295189b2012-06-20 16:38:30 -070023538 WDI_ControlBlockType* pWDICtx,
23539 WDI_BSSSessionType** ppSession
23540)
23541{
Jeff Johnsone7245742012-09-05 17:12:55 -070023542 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023546 -------------------------------------------------------------------------*/
23547 if ( NULL == ppSession )
23548 {
23549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023550 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023551 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023552 }
23553
Jeff Johnsone7245742012-09-05 17:12:55 -070023554 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023555
Jeff Johnsone7245742012-09-05 17:12:55 -070023556 /*------------------------------------------------------------------------
23557 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023558 ------------------------------------------------------------------------*/
23559 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23560 {
23561 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23562 {
23563 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023564 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023565 return i;
23566 }
23567 }
23568
Jeff Johnsone7245742012-09-05 17:12:55 -070023569 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023570}/*WDI_FindEmptySession*/
23571
23572
23573/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023574 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023575 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023576
23577
23578 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023579 macBSSID: pointer to BSSID. If NULL, get all the session.
23580 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23581 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23582 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023583 @see
23584 @return Number of sessions in use
23585*/
23586wpt_uint8
23587WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023588(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023589 WDI_ControlBlockType* pWDICtx,
23590 wpt_macAddr macBSSID,
23591 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023592)
23593{
Jeff Johnsone7245742012-09-05 17:12:55 -070023594 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023596
23597 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023598 Count all sessions in use
23599 ------------------------------------------------------------------------*/
23600 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23601 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023602 if ( macBSSID && skipBSSID &&
23603 (eWLAN_PAL_TRUE ==
23604 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23605 WDI_MAC_ADDR_LEN)))
23606 {
23607 continue;
23608 }
23609 else if ( pWDICtx->aBSSSessions[i].bInUse )
23610 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023611 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023612 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023613 }
23614
Jeff Johnsone7245742012-09-05 17:12:55 -070023615 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023616}/*WDI_GetActiveSessionsCount*/
23617
23618/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023619 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023620 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023621
23622
23623 @param pWDICtx: pointer to the WLAN DAL context
23624 pSession: pointer to the session (if found)
23625
Jeff Johnson295189b2012-06-20 16:38:30 -070023626 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023627 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023628*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023629void
Jeff Johnson295189b2012-06-20 16:38:30 -070023630WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023631(
Jeff Johnson295189b2012-06-20 16:38:30 -070023632 WDI_ControlBlockType* pWDICtx,
23633 WDI_BSSSessionType* ppSession
23634)
23635{
23636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023638 -------------------------------------------------------------------------*/
23639 if ( NULL == ppSession )
23640 {
23641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023642 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023643 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023644 }
23645
Jeff Johnsone7245742012-09-05 17:12:55 -070023646 /*------------------------------------------------------------------------
23647 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023648 ------------------------------------------------------------------------*/
23649 wpal_list_destroy(&ppSession->wptPendingQueue);
23650 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023651 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23652 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023653 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23654 wpal_list_init(&ppSession->wptPendingQueue);
23655
23656}/*WDI_DeleteSession*/
23657
23658/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023659 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023660 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023661 @param
23662
Jeff Johnson295189b2012-06-20 16:38:30 -070023663 WDI_AddStaParams: - pointer to the WDI Add STA params
23664 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023665
23666 @see
23667 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023668*/
23669void
23670WDI_AddBcastSTAtoSTATable
23671(
23672 WDI_ControlBlockType* pWDICtx,
23673 WDI_AddStaParams * staParams,
23674 wpt_uint16 usBcastStaIdx
23675)
23676{
23677 WDI_AddStaParams wdiAddSTAParam = {0};
23678 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23680
23681 /*---------------------------------------------------------------------
23682 Sanity check
23683 ---------------------------------------------------------------------*/
23684 if ( NULL == staParams )
23685 {
23686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023687 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023688
Jeff Johnsone7245742012-09-05 17:12:55 -070023689 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023690 }
23691
23692 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23693 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23694 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23695 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23696 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23697 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23698 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23699 WDI_MAC_ADDR_LEN );
23700 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23701 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23702 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23703 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23704 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23705 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23706 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023707
Jeff Johnson295189b2012-06-20 16:38:30 -070023708 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23709}
23710
23711/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023712 @brief NV blob will be divided into fragments of size 4kb and
23713 Sent to HAL
23714
23715 @param pWDICtx: pointer to the WLAN DAL context
23716 pEventData: pointer to the event information structure
23717
Jeff Johnson295189b2012-06-20 16:38:30 -070023718 @see
23719 @return Result of the function call
23720 */
23721
23722WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023723(
Jeff Johnson295189b2012-06-20 16:38:30 -070023724 WDI_ControlBlockType* pWDICtx,
23725 WDI_EventInfoType* pEventData
23726)
23727{
23728
23729 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23730 wpt_uint8* pSendBuffer = NULL;
23731 wpt_uint16 usDataOffset = 0;
23732 wpt_uint16 usSendSize = 0;
23733 wpt_uint16 usCurrentFragmentSize =0;
23734 wpt_uint8* pSrcBuffer = NULL;
23735 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23736 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23737
23738 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23739 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23740 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23741
Jeff Johnsone7245742012-09-05 17:12:55 -070023742 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023743 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23744
23745 /* Update the current Fragment Number */
23746 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23747
23748 /*Update the HAL REQ structure */
23749 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23750 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23751 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23752
23753 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023754 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023755 image will be sent to HAL*/
23756
Jeff Johnsone7245742012-09-05 17:12:55 -070023757 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023758 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023759 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023760 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023761 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023762 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23763 usCurrentFragmentSize = FRAGMENT_SIZE;
23764
23765 /*Update the HAL REQ structure */
23766 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23767 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23768
23769 }
23770 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023771 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023772 usCurrentFragmentSize = FRAGMENT_SIZE;
23773
23774 /*Update the HAL REQ structure */
23775 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23776 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23777 }
23778
23779 /*-----------------------------------------------------------------------
23780 Get message buffer
23781 -----------------------------------------------------------------------*/
23782 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23783 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23784 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023785 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023786 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23787 {
23788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023789 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023790 pEventData, pwdiNvDownloadReqParams);
23791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023793 }
23794
23795 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023796 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23798
23799 /* Appending the NV image fragment */
23800 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23801 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23802 usCurrentFragmentSize);
23803
23804 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023805 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023806
Jeff Johnsone7245742012-09-05 17:12:55 -070023807 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23808 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023809 WDI_NV_DOWNLOAD_RESP);
23810
23811}
Jeff Johnsone7245742012-09-05 17:12:55 -070023812/*============================================================================
23813 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023814 ============================================================================*/
23815/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023816 @brief Helper routine used to find a session based on the BSSID
23817 @param pContext: pointer to the WLAN DAL context
23818 @param pDPContext: pointer to the Datapath context
23819
Jeff Johnson295189b2012-06-20 16:38:30 -070023820 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023821 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023822*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023823WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023824WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23825{
23826 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23827
23828 pCB->pDPContext = pDPContext;
23829 return;
23830}
23831
23832/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023833 @brief Helper routine used to find a session based on the BSSID
23834
23835
23836 @param pContext: pointer to the WLAN DAL context
23837
Jeff Johnson295189b2012-06-20 16:38:30 -070023838 @see
23839 @return pointer to Datapath context
23840*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023841WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023842WDI_DS_GetDatapathContext (void *pContext)
23843{
23844 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23845 return pCB->pDPContext;
23846}
23847/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023848 @brief Helper routine used to find a session based on the BSSID
23849
23850
23851 @param pContext: pointer to the WLAN DAL context
23852 @param pDTDriverContext: pointer to the Transport Driver context
23853
Jeff Johnson295189b2012-06-20 16:38:30 -070023854 @see
23855 @return void
23856*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023857WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023858WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23859{
23860 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23861
23862 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023863 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023864}
23865
23866/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023867 @brief Helper routine used to find a session based on the BSSID
23868
23869
23870 @param pWDICtx: pointer to the WLAN DAL context
23871
Jeff Johnson295189b2012-06-20 16:38:30 -070023872 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023873 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023874*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023875WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023876WDT_GetTransportDriverContext (void *pContext)
23877{
23878 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023879 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023880}
23881
Jeff Johnsone7245742012-09-05 17:12:55 -070023882/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023883 Helper inline converters
23884 ============================================================================*/
23885/*Convert WDI driver type into HAL driver type*/
23886WPT_STATIC WPT_INLINE WDI_Status
23887WDI_HAL_2_WDI_STATUS
23888(
23889 eHalStatus halStatus
23890)
23891{
Jeff Johnsone7245742012-09-05 17:12:55 -070023892 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023893 the chances of getting inlined*/
23894 switch( halStatus )
23895 {
23896 case eHAL_STATUS_SUCCESS:
23897 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23898 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23899 return WDI_STATUS_SUCCESS;
23900 case eHAL_STATUS_FAILURE:
23901 return WDI_STATUS_E_FAILURE;
23902 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023903 return WDI_STATUS_MEM_FAILURE;
23904 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023905 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023906 default:
23907 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23908 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023909
Jeff Johnsone7245742012-09-05 17:12:55 -070023910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023911}/*WDI_HAL_2_WDI_STATUS*/
23912
23913/*Convert WDI request type into HAL request type*/
23914WPT_STATIC WPT_INLINE tHalHostMsgType
23915WDI_2_HAL_REQ_TYPE
23916(
23917 WDI_RequestEnumType wdiReqType
23918)
23919{
Jeff Johnsone7245742012-09-05 17:12:55 -070023920 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023921 the chances of getting inlined*/
23922 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023923 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023924 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023925 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023926 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023927 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023928 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023929 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023930 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023931 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023932 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023933 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023934 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023935 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023936 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023937 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023938 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023939 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023941 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023942 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023943 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023944 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023945 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023946 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023947 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023948 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023949 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023950 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023951 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023952 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023953 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023954 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023955 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023956 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023957 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023958 return WLAN_HAL_RMV_STAKEY_REQ;
23959 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023960 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023961 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023962 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023963 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023964 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023965 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023966 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023967 case WDI_DEL_BA_REQ:
23968 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023969#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023970 case WDI_TSM_STATS_REQ:
23971 return WLAN_HAL_TSM_STATS_REQ;
23972#endif
23973 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023974 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023975 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023976 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023977 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023978 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023979 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023980 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023981 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023982 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023983 case WDI_ADD_BA_SESSION_REQ:
23984 return WLAN_HAL_ADD_BA_SESSION_REQ;
23985 case WDI_TRIGGER_BA_REQ:
23986 return WLAN_HAL_TRIGGER_BA_REQ;
23987 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023988 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023989 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023990 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023991 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23992 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23993 case WDI_SET_MAX_TX_POWER_REQ:
23994 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023995 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23996 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023997 case WDI_SET_TX_POWER_REQ:
23998 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023999 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24000 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024001#ifdef FEATURE_WLAN_TDLS
24002 case WDI_TDLS_LINK_ESTABLISH_REQ:
24003 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024004 case WDI_TDLS_CHAN_SWITCH_REQ:
24005 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024006#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024007 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024008 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024009 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024010 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024011 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024012 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024013 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024014 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024015 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024016 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024017 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024018 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024019 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024020 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024021 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024022 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024023 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024024 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024025 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024026 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024027 case WDI_REM_BEACON_FILTER_REQ:
24028 return WLAN_HAL_REM_BCN_FILTER_REQ;
24029 case WDI_SET_RSSI_THRESHOLDS_REQ:
24030 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24031 case WDI_HOST_OFFLOAD_REQ:
24032 return WLAN_HAL_HOST_OFFLOAD_REQ;
24033 case WDI_WOWL_ADD_BC_PTRN_REQ:
24034 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24035 case WDI_WOWL_DEL_BC_PTRN_REQ:
24036 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24037 case WDI_WOWL_ENTER_REQ:
24038 return WLAN_HAL_ENTER_WOWL_REQ;
24039 case WDI_WOWL_EXIT_REQ:
24040 return WLAN_HAL_EXIT_WOWL_REQ;
24041 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24042 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24043 case WDI_NV_DOWNLOAD_REQ:
24044 return WLAN_HAL_DOWNLOAD_NV_REQ;
24045 case WDI_FLUSH_AC_REQ:
24046 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24047 case WDI_BTAMP_EVENT_REQ:
24048 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24049#ifdef WLAN_FEATURE_VOWIFI_11R
24050 case WDI_AGGR_ADD_TS_REQ:
24051 return WLAN_HAL_AGGR_ADD_TS_REQ;
24052#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024053 case WDI_FTM_CMD_REQ:
24054 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024055 case WDI_ADD_STA_SELF_REQ:
24056 return WLAN_HAL_ADD_STA_SELF_REQ;
24057 case WDI_DEL_STA_SELF_REQ:
24058 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024059#ifdef FEATURE_OEM_DATA_SUPPORT
24060 case WDI_START_OEM_DATA_REQ:
24061 return WLAN_HAL_START_OEM_DATA_REQ;
24062#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024063 case WDI_HOST_RESUME_REQ:
24064 return WLAN_HAL_HOST_RESUME_REQ;
24065 case WDI_HOST_SUSPEND_IND:
24066 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024067 case WDI_TRAFFIC_STATS_IND:
24068 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024069#ifdef WLAN_FEATURE_11W
24070 case WDI_EXCLUDE_UNENCRYPTED_IND:
24071 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24072#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024073 case WDI_KEEP_ALIVE_REQ:
24074 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024075#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024076 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24077 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024078#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024079#ifdef FEATURE_WLAN_SCAN_PNO
24080 case WDI_SET_PREF_NETWORK_REQ:
24081 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24082 case WDI_SET_RSSI_FILTER_REQ:
24083 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24084 case WDI_UPDATE_SCAN_PARAMS_REQ:
24085 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24086#endif // FEATURE_WLAN_SCAN_PNO
24087 case WDI_SET_TX_PER_TRACKING_REQ:
24088 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24089#ifdef WLAN_FEATURE_PACKET_FILTERING
24090 case WDI_8023_MULTICAST_LIST_REQ:
24091 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24092 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024093 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024094 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24095 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24096 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24097 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24098#endif // WLAN_FEATURE_PACKET_FILTERING
24099 case WDI_HAL_DUMP_CMD_REQ:
24100 return WLAN_HAL_DUMP_COMMAND_REQ;
24101#ifdef WLAN_FEATURE_GTK_OFFLOAD
24102 case WDI_GTK_OFFLOAD_REQ:
24103 return WLAN_HAL_GTK_OFFLOAD_REQ;
24104 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24105 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24106#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24107
24108 case WDI_INIT_SCAN_CON_REQ:
24109 return WLAN_HAL_INIT_SCAN_CON_REQ;
24110 case WDI_SET_POWER_PARAMS_REQ:
24111 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24112 case WDI_SET_TM_LEVEL_REQ:
24113 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24114 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24115 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024116#ifdef WLAN_FEATURE_11AC
24117 case WDI_UPDATE_VHT_OP_MODE_REQ:
24118 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24119#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024120 case WDI_GET_ROAM_RSSI_REQ:
24121 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024122 case WDI_DHCP_START_IND:
24123 return WLAN_HAL_DHCP_START_IND;
24124 case WDI_DHCP_STOP_IND:
24125 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024126#ifdef FEATURE_WLAN_LPHB
24127 case WDI_LPHB_CFG_REQ:
24128 return WLAN_HAL_LPHB_CFG_REQ;
24129#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024130 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24131 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24132 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24133 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24134
Rajeev79dbe4c2013-10-05 11:03:42 +053024135#ifdef FEATURE_WLAN_BATCH_SCAN
24136 case WDI_SET_BATCH_SCAN_REQ:
24137 return WLAN_HAL_BATCHSCAN_SET_REQ;
24138 case WDI_STOP_BATCH_SCAN_IND:
24139 return WLAN_HAL_BATCHSCAN_STOP_IND;
24140 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24141 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24142#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024143 case WDI_RATE_UPDATE_IND:
24144 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024145 case WDI_START_HT40_OBSS_SCAN_IND:
24146 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24147 case WDI_STOP_HT40_OBSS_SCAN_IND:
24148 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024149 case WDI_UPDATE_CHAN_REQ:
24150 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024151 case WDI_CH_SWITCH_REQ_V1:
24152 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024153 case WDI_GET_BCN_MISS_RATE_REQ:
24154 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024155
24156#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24157 case WDI_LL_STATS_SET_REQ:
24158 return WLAN_HAL_LL_SET_STATS_REQ;
24159 case WDI_LL_STATS_GET_REQ:
24160 return WLAN_HAL_LL_GET_STATS_REQ;
24161 case WDI_LL_STATS_CLEAR_REQ:
24162 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24163#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024164#ifdef WLAN_FEATURE_EXTSCAN
24165 case WDI_EXTSCAN_START_REQ:
24166 return WLAN_HAL_EXT_SCAN_START_REQ;
24167 case WDI_EXTSCAN_STOP_REQ:
24168 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24169 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24170 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24171 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24172 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24173 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24174 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24175 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24176 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
24177 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
24178 return WLAN_HAL_SIG_RSSI_SET_REQ;
24179 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
24180 return WLAN_HAL_SIG_RSSI_RESET_REQ;
24181#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024182 case WDI_SPOOF_MAC_ADDR_REQ:
24183 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024184 case WDI_GET_FW_STATS_REQ:
24185 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024186 case WDI_ENCRYPT_MSG_REQ:
24187 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024188 case WDI_FW_LOGGING_INIT_REQ:
24189 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024190 case WDI_GET_FRAME_LOG_REQ:
24191 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024192 case WDI_NAN_REQUEST:
24193 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024194 case WDI_SET_RTS_CTS_HTVHT_IND:
24195 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024196 case WDI_MON_START_REQ:
24197 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24198 case WDI_MON_STOP_REQ:
24199 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024200 case WDI_FW_LOGGING_DXE_DONE_IND:
24201 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024202 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024203 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024204 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024205
Jeff Johnson295189b2012-06-20 16:38:30 -070024206}/*WDI_2_HAL_REQ_TYPE*/
24207
24208/*Convert WDI response type into HAL response type*/
24209WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24210HAL_2_WDI_RSP_TYPE
24211(
24212 tHalHostMsgType halMsg
24213)
24214{
Jeff Johnsone7245742012-09-05 17:12:55 -070024215 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024216 the chances of getting inlined*/
24217 switch( halMsg )
24218 {
24219 case WLAN_HAL_START_RSP:
24220 return WDI_START_RESP;
24221 case WLAN_HAL_STOP_RSP:
24222 return WDI_STOP_RESP;
24223 case WLAN_HAL_INIT_SCAN_RSP:
24224 return WDI_INIT_SCAN_RESP;
24225 case WLAN_HAL_START_SCAN_RSP:
24226 return WDI_START_SCAN_RESP;
24227 case WLAN_HAL_END_SCAN_RSP:
24228 return WDI_END_SCAN_RESP;
24229 case WLAN_HAL_FINISH_SCAN_RSP:
24230 return WDI_FINISH_SCAN_RESP;
24231 case WLAN_HAL_CONFIG_STA_RSP:
24232 return WDI_CONFIG_STA_RESP;
24233 case WLAN_HAL_DELETE_STA_RSP:
24234 return WDI_DEL_STA_RESP;
24235 case WLAN_HAL_CONFIG_BSS_RSP:
24236 return WDI_CONFIG_BSS_RESP;
24237 case WLAN_HAL_DELETE_BSS_RSP:
24238 return WDI_DEL_BSS_RESP;
24239 case WLAN_HAL_JOIN_RSP:
24240 return WDI_JOIN_RESP;
24241 case WLAN_HAL_POST_ASSOC_RSP:
24242 return WDI_POST_ASSOC_RESP;
24243 case WLAN_HAL_SET_BSSKEY_RSP:
24244 return WDI_SET_BSS_KEY_RESP;
24245 case WLAN_HAL_SET_STAKEY_RSP:
24246 return WDI_SET_STA_KEY_RESP;
24247 case WLAN_HAL_RMV_BSSKEY_RSP:
24248 return WDI_RMV_BSS_KEY_RESP;
24249 case WLAN_HAL_RMV_STAKEY_RSP:
24250 return WDI_RMV_STA_KEY_RESP;
24251 case WLAN_HAL_SET_BCASTKEY_RSP:
24252 return WDI_SET_STA_BCAST_KEY_RESP;
24253 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24254 // return WDI_RMV_STA_BCAST_KEY_RESP;
24255 case WLAN_HAL_ADD_TS_RSP:
24256 return WDI_ADD_TS_RESP;
24257 case WLAN_HAL_DEL_TS_RSP:
24258 return WDI_DEL_TS_RESP;
24259 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24260 return WDI_UPD_EDCA_PRMS_RESP;
24261 case WLAN_HAL_ADD_BA_RSP:
24262 return WDI_ADD_BA_RESP;
24263 case WLAN_HAL_DEL_BA_RSP:
24264 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024265#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024266 case WLAN_HAL_TSM_STATS_RSP:
24267 return WDI_TSM_STATS_RESP;
24268#endif
24269 case WLAN_HAL_CH_SWITCH_RSP:
24270 return WDI_CH_SWITCH_RESP;
24271 case WLAN_HAL_SET_LINK_ST_RSP:
24272 return WDI_SET_LINK_ST_RESP;
24273 case WLAN_HAL_GET_STATS_RSP:
24274 return WDI_GET_STATS_RESP;
24275 case WLAN_HAL_UPDATE_CFG_RSP:
24276 return WDI_UPDATE_CFG_RESP;
24277 case WLAN_HAL_ADD_BA_SESSION_RSP:
24278 return WDI_ADD_BA_SESSION_RESP;
24279 case WLAN_HAL_TRIGGER_BA_RSP:
24280 return WDI_TRIGGER_BA_RESP;
24281 case WLAN_HAL_UPDATE_BEACON_RSP:
24282 return WDI_UPD_BCON_PRMS_RESP;
24283 case WLAN_HAL_SEND_BEACON_RSP:
24284 return WDI_SND_BCON_RESP;
24285 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24286 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24287 /*Indications*/
24288 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24289 return WDI_HAL_RSSI_NOTIFICATION_IND;
24290 case WLAN_HAL_MISSED_BEACON_IND:
24291 return WDI_HAL_MISSED_BEACON_IND;
24292 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24293 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24294 case WLAN_HAL_MIC_FAILURE_IND:
24295 return WDI_HAL_MIC_FAILURE_IND;
24296 case WLAN_HAL_FATAL_ERROR_IND:
24297 return WDI_HAL_FATAL_ERROR_IND;
24298 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24299 return WDI_HAL_DEL_STA_IND;
24300 case WLAN_HAL_COEX_IND:
24301 return WDI_HAL_COEX_IND;
24302 case WLAN_HAL_OTA_TX_COMPL_IND:
24303 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024304 case WLAN_HAL_P2P_NOA_ATTR_IND:
24305 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024306 case WLAN_HAL_P2P_NOA_START_IND:
24307 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024308 case WLAN_HAL_DEL_BA_IND:
24309 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024310 case WLAN_HAL_TX_PER_HIT_IND:
24311 return WDI_HAL_TX_PER_HIT_IND;
24312 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24313 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024314 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24315 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024316 case WLAN_HAL_SET_TX_POWER_RSP:
24317 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024318 case WLAN_HAL_SET_P2P_GONOA_RSP:
24319 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024320#ifdef FEATURE_WLAN_TDLS
24321 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24322 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024323 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24324 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024325 case WLAN_HAL_TDLS_IND:
24326 return WDI_HAL_TDLS_IND;
24327#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024328 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024329 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024330 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024331 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024332 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024333 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024334 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024335 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024336 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024337 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024338 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024339 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024340 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024341 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024342 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024343 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024344 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024345 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024346 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24347 return WDI_SET_BEACON_FILTER_RESP;
24348 case WLAN_HAL_REM_BCN_FILTER_RSP:
24349 return WDI_REM_BEACON_FILTER_RESP;
24350 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24351 return WDI_SET_RSSI_THRESHOLDS_RESP;
24352 case WLAN_HAL_HOST_OFFLOAD_RSP:
24353 return WDI_HOST_OFFLOAD_RESP;
24354 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24355 return WDI_WOWL_ADD_BC_PTRN_RESP;
24356 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24357 return WDI_WOWL_DEL_BC_PTRN_RESP;
24358 case WLAN_HAL_ENTER_WOWL_RSP:
24359 return WDI_WOWL_ENTER_RESP;
24360 case WLAN_HAL_EXIT_WOWL_RSP:
24361 return WDI_WOWL_EXIT_RESP;
24362 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24363 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24364 case WLAN_HAL_DOWNLOAD_NV_RSP:
24365 return WDI_NV_DOWNLOAD_RESP;
24366 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24367 return WDI_FLUSH_AC_RESP;
24368 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24369 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024370 case WLAN_HAL_PROCESS_PTT_RSP:
24371 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024372 case WLAN_HAL_ADD_STA_SELF_RSP:
24373 return WDI_ADD_STA_SELF_RESP;
24374case WLAN_HAL_DEL_STA_SELF_RSP:
24375 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024376#ifdef FEATURE_OEM_DATA_SUPPORT
24377 case WLAN_HAL_START_OEM_DATA_RSP:
24378 return WDI_START_OEM_DATA_RESP;
24379#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024380 case WLAN_HAL_HOST_RESUME_RSP:
24381 return WDI_HOST_RESUME_RESP;
24382 case WLAN_HAL_KEEP_ALIVE_RSP:
24383 return WDI_KEEP_ALIVE_RESP;
24384#ifdef FEATURE_WLAN_SCAN_PNO
24385 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24386 return WDI_SET_PREF_NETWORK_RESP;
24387 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024388 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024389 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24390 return WDI_UPDATE_SCAN_PARAMS_RESP;
24391 case WLAN_HAL_PREF_NETW_FOUND_IND:
24392 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24393#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024394#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024395 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24396 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024397#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024398 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24399 return WDI_SET_TX_PER_TRACKING_RESP;
24400#ifdef WLAN_FEATURE_PACKET_FILTERING
24401 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24402 return WDI_8023_MULTICAST_LIST_RESP;
24403 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24404 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24405 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24406 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24407 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24408 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24409#endif // WLAN_FEATURE_PACKET_FILTERING
24410
24411 case WLAN_HAL_DUMP_COMMAND_RSP:
24412 return WDI_HAL_DUMP_CMD_RESP;
24413 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24414 return WDI_SET_POWER_PARAMS_RESP;
24415#ifdef WLAN_FEATURE_VOWIFI_11R
24416 case WLAN_HAL_AGGR_ADD_TS_RSP:
24417 return WDI_AGGR_ADD_TS_RESP;
24418#endif
24419
24420#ifdef WLAN_FEATURE_GTK_OFFLOAD
24421 case WLAN_HAL_GTK_OFFLOAD_RSP:
24422 return WDI_GTK_OFFLOAD_RESP;
24423 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24424 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24425#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24426#ifdef WLAN_WAKEUP_EVENTS
24427 case WLAN_HAL_WAKE_REASON_IND:
24428 return WDI_HAL_WAKE_REASON_IND;
24429#endif // WLAN_WAKEUP_EVENTS
24430
24431 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24432 return WDI_SET_TM_LEVEL_RESP;
24433 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24434 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024435#ifdef WLAN_FEATURE_11AC
24436 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24437 return WDI_UPDATE_VHT_OP_MODE_RESP;
24438#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024439#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024440 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24441 return WDI_GET_ROAM_RSSI_RESP;
24442#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024443
Leo Chang9056f462013-08-01 19:21:11 -070024444#ifdef FEATURE_WLAN_LPHB
24445 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024446 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024447 case WLAN_HAL_LPHB_CFG_RSP:
24448 return WDI_LPHB_CFG_RESP;
24449#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024450
24451 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24452 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024453 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24454 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024455
Rajeev79dbe4c2013-10-05 11:03:42 +053024456#ifdef FEATURE_WLAN_BATCH_SCAN
24457 case WLAN_HAL_BATCHSCAN_SET_RSP:
24458 return WDI_SET_BATCH_SCAN_RESP;
24459 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24460 return WDI_BATCHSCAN_RESULT_IND;
24461#endif // FEATURE_WLAN_BATCH_SCAN
24462
Leo Chang0b0e45a2013-12-15 15:18:55 -080024463#ifdef FEATURE_WLAN_CH_AVOID
24464 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24465 return WDI_HAL_CH_AVOID_IND;
24466#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024467 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24468 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024469 case WLAN_HAL_PRINT_REG_INFO_IND:
24470 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024471 case WLAN_HAL_CH_SWITCH_V1_RSP:
24472 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024473 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24474 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024475#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24476 case WLAN_HAL_LL_SET_STATS_RSP:
24477 return WDI_LL_STATS_SET_RSP;
24478 case WLAN_HAL_LL_GET_STATS_RSP:
24479 return WDI_LL_STATS_GET_RSP;
24480 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24481 return WDI_LL_STATS_CLEAR_RSP;
24482 case WLAN_HAL_LL_NOTIFY_STATS:
24483 return WDI_HAL_LL_STATS_RESULTS_IND;
24484#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024485#ifdef WLAN_FEATURE_EXTSCAN
24486 case WLAN_HAL_EXT_SCAN_START_RSP:
24487 return WDI_EXTSCAN_START_RSP;
24488 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24489 return WDI_EXTSCAN_STOP_RSP;
24490 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24491 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24492 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24493 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24494 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24495 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24496 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24497 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
24498 case WLAN_HAL_SIG_RSSI_SET_RSP:
24499 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
24500 case WLAN_HAL_SIG_RSSI_RESET_RSP:
24501 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
24502 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24503 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24504 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24505 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24506 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24507 return WDI_HAL_EXTSCAN_RESULT_IND;
24508 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24509 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
24510 case WLAN_HAL_SIG_RSSI_RESULT_IND:
24511 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
24512#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024513 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24514 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024515 case WLAN_HAL_FW_STATS_RSP:
24516 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024517 case WLAN_HAL_ENCRYPT_DATA_RSP:
24518 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024519 case WLAN_HAL_FW_LOGGING_INIT_RSP:
24520 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024521 case WLAN_HAL_GET_FRAME_LOG_RSP:
24522 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024523 case WLAN_HAL_NAN_RSP:
24524 return WDI_NAN_RESPONSE;
24525 case WLAN_HAL_NAN_EVT:
24526 return WDI_HAL_NAN_EVENT;
Katya Nigamf0511f62015-05-05 16:40:57 +053024527 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
24528 return WDI_MON_START_RSP;
24529 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
24530 return WDI_MON_STOP_RSP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024531 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024532 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024533 }
24534
24535}/*HAL_2_WDI_RSP_TYPE*/
24536
24537
24538/*Convert WDI driver type into HAL driver type*/
24539WPT_STATIC WPT_INLINE tDriverType
24540WDI_2_HAL_DRV_TYPE
24541(
24542 WDI_DriverType wdiDriverType
24543)
24544{
Jeff Johnsone7245742012-09-05 17:12:55 -070024545 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024546 the chances of getting inlined*/
24547 switch( wdiDriverType )
24548 {
24549 case WDI_DRIVER_TYPE_PRODUCTION:
24550 return eDRIVER_TYPE_PRODUCTION;
24551 case WDI_DRIVER_TYPE_MFG:
24552 return eDRIVER_TYPE_MFG;
24553 case WDI_DRIVER_TYPE_DVT:
24554 return eDRIVER_TYPE_DVT;
24555 }
24556
Jeff Johnsone7245742012-09-05 17:12:55 -070024557 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024558}/*WDI_2_HAL_DRV_TYPE*/
24559
24560
24561/*Convert WDI stop reason into HAL stop reason*/
24562WPT_STATIC WPT_INLINE tHalStopType
24563WDI_2_HAL_STOP_REASON
24564(
24565 WDI_StopType wdiDriverType
24566)
24567{
Jeff Johnsone7245742012-09-05 17:12:55 -070024568 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024569 the chances of getting inlined*/
24570 switch( wdiDriverType )
24571 {
24572 case WDI_STOP_TYPE_SYS_RESET:
24573 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024574 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24575 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024576 case WDI_STOP_TYPE_RF_KILL:
24577 return HAL_STOP_TYPE_RF_KILL;
24578 }
24579
Jeff Johnsone7245742012-09-05 17:12:55 -070024580 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024581}/*WDI_2_HAL_STOP_REASON*/
24582
24583
24584/*Convert WDI scan mode type into HAL scan mode type*/
24585WPT_STATIC WPT_INLINE eHalSysMode
24586WDI_2_HAL_SCAN_MODE
24587(
24588 WDI_ScanMode wdiScanMode
24589)
24590{
Jeff Johnsone7245742012-09-05 17:12:55 -070024591 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024592 the chances of getting inlined*/
24593 switch( wdiScanMode )
24594 {
24595 case WDI_SCAN_MODE_NORMAL:
24596 return eHAL_SYS_MODE_NORMAL;
24597 case WDI_SCAN_MODE_LEARN:
24598 return eHAL_SYS_MODE_LEARN;
24599 case WDI_SCAN_MODE_SCAN:
24600 return eHAL_SYS_MODE_SCAN;
24601 case WDI_SCAN_MODE_PROMISC:
24602 return eHAL_SYS_MODE_PROMISC;
24603 case WDI_SCAN_MODE_SUSPEND_LINK:
24604 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024605 case WDI_SCAN_MODE_ROAM_SCAN:
24606 return eHAL_SYS_MODE_ROAM_SCAN;
24607 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24608 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024609 }
24610
Jeff Johnsone7245742012-09-05 17:12:55 -070024611 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024612}/*WDI_2_HAL_SCAN_MODE*/
24613
24614/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024615WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024616WDI_2_HAL_SEC_CH_OFFSET
24617(
24618 WDI_HTSecondaryChannelOffset wdiSecChOffset
24619)
24620{
Jeff Johnsone7245742012-09-05 17:12:55 -070024621 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024622 the chances of getting inlined*/
24623 switch( wdiSecChOffset )
24624 {
24625 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024626 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024627 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024628 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024629 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024630 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24631#ifdef WLAN_FEATURE_11AC
24632 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24633 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24634 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24635 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24636 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24637 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24638 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24639 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24640 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24641 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24642 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24643 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24644 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24645 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24646#endif
24647 default:
24648 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024649 }
24650
Jeff Johnsone7245742012-09-05 17:12:55 -070024651 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024652}/*WDI_2_HAL_SEC_CH_OFFSET*/
24653
24654/*Convert WDI BSS type into HAL BSS type*/
24655WPT_STATIC WPT_INLINE tSirBssType
24656WDI_2_HAL_BSS_TYPE
24657(
24658 WDI_BssType wdiBSSType
24659)
24660{
Jeff Johnsone7245742012-09-05 17:12:55 -070024661 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024662 the chances of getting inlined*/
24663 switch( wdiBSSType )
24664 {
24665 case WDI_INFRASTRUCTURE_MODE:
24666 return eSIR_INFRASTRUCTURE_MODE;
24667 case WDI_INFRA_AP_MODE:
24668 return eSIR_INFRA_AP_MODE;
24669 case WDI_IBSS_MODE:
24670 return eSIR_IBSS_MODE;
24671 case WDI_BTAMP_STA_MODE:
24672 return eSIR_BTAMP_STA_MODE;
24673 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024674 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024675 case WDI_BSS_AUTO_MODE:
24676 return eSIR_AUTO_MODE;
24677 }
24678
Jeff Johnsone7245742012-09-05 17:12:55 -070024679 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024680}/*WDI_2_HAL_BSS_TYPE*/
24681
24682/*Convert WDI NW type into HAL NW type*/
24683WPT_STATIC WPT_INLINE tSirNwType
24684WDI_2_HAL_NW_TYPE
24685(
24686 WDI_NwType wdiNWType
24687)
24688{
Jeff Johnsone7245742012-09-05 17:12:55 -070024689 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024690 the chances of getting inlined*/
24691 switch( wdiNWType )
24692 {
24693 case WDI_11A_NW_TYPE:
24694 return eSIR_11A_NW_TYPE;
24695 case WDI_11B_NW_TYPE:
24696 return eSIR_11B_NW_TYPE;
24697 case WDI_11G_NW_TYPE:
24698 return eSIR_11G_NW_TYPE;
24699 case WDI_11N_NW_TYPE:
24700 return eSIR_11N_NW_TYPE;
24701 }
24702
Jeff Johnsone7245742012-09-05 17:12:55 -070024703 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024704}/*WDI_2_HAL_NW_TYPE*/
24705
24706/*Convert WDI chanel bonding type into HAL cb type*/
24707WPT_STATIC WPT_INLINE ePhyChanBondState
24708WDI_2_HAL_CB_STATE
24709(
24710 WDI_PhyChanBondState wdiCbState
24711)
24712{
Jeff Johnsone7245742012-09-05 17:12:55 -070024713 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024714 the chances of getting inlined*/
24715 switch ( wdiCbState )
24716 {
24717 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24718 return PHY_SINGLE_CHANNEL_CENTERED;
24719 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24720 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24721 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24722 return PHY_DOUBLE_CHANNEL_CENTERED;
24723 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24724 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024725#ifdef WLAN_FEATURE_11AC
24726 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24727 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24728 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24729 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24730 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24731 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24732 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24733 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24734 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24735 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24736 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24737 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24738 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24739 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24740#endif
24741 case WDI_MAX_CB_STATE:
24742 default:
24743 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024744 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024745
Jeff Johnson295189b2012-06-20 16:38:30 -070024746 return PHY_CHANNEL_BONDING_STATE_MAX;
24747}/*WDI_2_HAL_CB_STATE*/
24748
24749/*Convert WDI chanel bonding type into HAL cb type*/
24750WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24751WDI_2_HAL_HT_OPER_MODE
24752(
24753 WDI_HTOperatingMode wdiHTOperMode
24754)
24755{
Jeff Johnsone7245742012-09-05 17:12:55 -070024756 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024757 the chances of getting inlined*/
24758 switch ( wdiHTOperMode )
24759 {
24760 case WDI_HT_OP_MODE_PURE:
24761 return eSIR_HT_OP_MODE_PURE;
24762 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24763 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24764 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24765 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24766 case WDI_HT_OP_MODE_MIXED:
24767 return eSIR_HT_OP_MODE_MIXED;
24768 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024769
Jeff Johnson295189b2012-06-20 16:38:30 -070024770 return eSIR_HT_OP_MODE_MAX;
24771}/*WDI_2_HAL_HT_OPER_MODE*/
24772
24773/*Convert WDI mimo PS type into HAL mimo PS type*/
24774WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24775WDI_2_HAL_MIMO_PS
24776(
24777 WDI_HTMIMOPowerSaveState wdiHTOperMode
24778)
24779{
Jeff Johnsone7245742012-09-05 17:12:55 -070024780 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024781 the chances of getting inlined*/
24782 switch ( wdiHTOperMode )
24783 {
24784 case WDI_HT_MIMO_PS_STATIC:
24785 return eSIR_HT_MIMO_PS_STATIC;
24786 case WDI_HT_MIMO_PS_DYNAMIC:
24787 return eSIR_HT_MIMO_PS_DYNAMIC;
24788 case WDI_HT_MIMO_PS_NA:
24789 return eSIR_HT_MIMO_PS_NA;
24790 case WDI_HT_MIMO_PS_NO_LIMIT:
24791 return eSIR_HT_MIMO_PS_NO_LIMIT;
24792 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024793
Jeff Johnson295189b2012-06-20 16:38:30 -070024794 return eSIR_HT_MIMO_PS_MAX;
24795}/*WDI_2_HAL_MIMO_PS*/
24796
24797/*Convert WDI ENC type into HAL ENC type*/
24798WPT_STATIC WPT_INLINE tAniEdType
24799WDI_2_HAL_ENC_TYPE
24800(
24801 WDI_EncryptType wdiEncType
24802)
24803{
Jeff Johnsone7245742012-09-05 17:12:55 -070024804 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024805 the chances of getting inlined*/
24806 switch ( wdiEncType )
24807 {
24808 case WDI_ENCR_NONE:
24809 return eSIR_ED_NONE;
24810
24811 case WDI_ENCR_WEP40:
24812 return eSIR_ED_WEP40;
24813
24814 case WDI_ENCR_WEP104:
24815 return eSIR_ED_WEP104;
24816
24817 case WDI_ENCR_TKIP:
24818 return eSIR_ED_TKIP;
24819
24820 case WDI_ENCR_CCMP:
24821 return eSIR_ED_CCMP;
24822
24823 case WDI_ENCR_AES_128_CMAC:
24824 return eSIR_ED_AES_128_CMAC;
24825#if defined(FEATURE_WLAN_WAPI)
24826 case WDI_ENCR_WPI:
24827 return eSIR_ED_WPI;
24828#endif
24829 default:
24830 return eSIR_ED_NOT_IMPLEMENTED;
24831 }
24832
24833}/*WDI_2_HAL_ENC_TYPE*/
24834
24835/*Convert WDI WEP type into HAL WEP type*/
24836WPT_STATIC WPT_INLINE tAniWepType
24837WDI_2_HAL_WEP_TYPE
24838(
24839 WDI_WepType wdiWEPType
24840)
24841{
Jeff Johnsone7245742012-09-05 17:12:55 -070024842 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024843 the chances of getting inlined*/
24844 switch ( wdiWEPType )
24845 {
24846 case WDI_WEP_STATIC:
24847 return eSIR_WEP_STATIC;
24848
24849 case WDI_WEP_DYNAMIC:
24850 return eSIR_WEP_DYNAMIC;
24851 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024852
Jeff Johnson295189b2012-06-20 16:38:30 -070024853 return eSIR_WEP_MAX;
24854}/*WDI_2_HAL_WEP_TYPE*/
24855
24856WPT_STATIC WPT_INLINE tSirLinkState
24857WDI_2_HAL_LINK_STATE
24858(
24859 WDI_LinkStateType wdiLinkState
24860)
24861{
Jeff Johnsone7245742012-09-05 17:12:55 -070024862 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024863 the chances of getting inlined*/
24864 switch ( wdiLinkState )
24865 {
24866 case WDI_LINK_IDLE_STATE:
24867 return eSIR_LINK_IDLE_STATE;
24868
24869 case WDI_LINK_PREASSOC_STATE:
24870 return eSIR_LINK_PREASSOC_STATE;
24871
24872 case WDI_LINK_POSTASSOC_STATE:
24873 return eSIR_LINK_POSTASSOC_STATE;
24874
24875 case WDI_LINK_AP_STATE:
24876 return eSIR_LINK_AP_STATE;
24877
24878 case WDI_LINK_IBSS_STATE:
24879 return eSIR_LINK_IBSS_STATE;
24880
24881 case WDI_LINK_BTAMP_PREASSOC_STATE:
24882 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24883
24884 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24885 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24886
24887 case WDI_LINK_BTAMP_AP_STATE:
24888 return eSIR_LINK_BTAMP_AP_STATE;
24889
24890 case WDI_LINK_BTAMP_STA_STATE:
24891 return eSIR_LINK_BTAMP_STA_STATE;
24892
24893 case WDI_LINK_LEARN_STATE:
24894 return eSIR_LINK_LEARN_STATE;
24895
24896 case WDI_LINK_SCAN_STATE:
24897 return eSIR_LINK_SCAN_STATE;
24898
24899 case WDI_LINK_FINISH_SCAN_STATE:
24900 return eSIR_LINK_FINISH_SCAN_STATE;
24901
24902 case WDI_LINK_INIT_CAL_STATE:
24903 return eSIR_LINK_INIT_CAL_STATE;
24904
24905 case WDI_LINK_FINISH_CAL_STATE:
24906 return eSIR_LINK_FINISH_CAL_STATE;
24907
Jeff Johnson295189b2012-06-20 16:38:30 -070024908 case WDI_LINK_LISTEN_STATE:
24909 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024910
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024911 case WDI_LINK_SEND_ACTION_STATE:
24912 return eSIR_LINK_SEND_ACTION_STATE;
24913
Jeff Johnson295189b2012-06-20 16:38:30 -070024914 default:
24915 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024916 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024917}
24918
Jeff Johnsone7245742012-09-05 17:12:55 -070024919/*Translate a STA Context from WDI into HAL*/
24920WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024921void
24922WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024923(
Jeff Johnson295189b2012-06-20 16:38:30 -070024924 tConfigStaParams* phalConfigSta,
24925 WDI_ConfigStaReqInfoType* pwdiConfigSta
24926)
24927{
24928 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024929#ifdef WLAN_FEATURE_11AC
24930 /* Get the Version 1 Handler */
24931 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24932 if (WDI_getFwWlanFeatCaps(DOT11AC))
24933 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024934 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024935 }
24936#endif
24937 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024938 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053024939
Jeff Johnsone7245742012-09-05 17:12:55 -070024940 wpalMemoryCopy(phalConfigSta->bssId,
24941 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24942
24943 wpalMemoryCopy(phalConfigSta->staMac,
24944 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024945
24946 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24947 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24948 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24949 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24950 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24951 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24952 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24953 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24954 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24955 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24956 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24957 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24958 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24959 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24960 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24961 phalConfigSta->action = pwdiConfigSta->wdiAction;
24962 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24963 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24964 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24965 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24966 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24967 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24968 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053024969
Jeff Johnson295189b2012-06-20 16:38:30 -070024970 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24971
Jeff Johnsone7245742012-09-05 17:12:55 -070024972 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024973 pwdiConfigSta->wdiSupportedRates.opRateMode;
24974 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24975 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024976 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024977 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24978 }
24979 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24980 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024981 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024982 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24983 }
24984 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24985 {
24986 phalConfigSta->supportedRates.aniLegacyRates[i] =
24987 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24988 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024989 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024990 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24991 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24992 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024993 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024994 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24995 }
24996 phalConfigSta->supportedRates.rxHighestDataRate =
24997 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24998
Jeff Johnsone7245742012-09-05 17:12:55 -070024999#ifdef WLAN_FEATURE_11AC
25000 if(phalConfigSta_V1 != NULL)
25001 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025002 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25003 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25004 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25005 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025006 }
25007#endif
25008
Jeff Johnson295189b2012-06-20 16:38:30 -070025009 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025010
Jeff Johnsone7245742012-09-05 17:12:55 -070025011#ifdef WLAN_FEATURE_11AC
25012 if(phalConfigSta_V1 != NULL)
25013 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025014 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25015 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025016 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025017 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025018 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25019 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25020
Jeff Johnsone7245742012-09-05 17:12:55 -070025021 }
25022#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025023}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025024
25025/*Translate a Rate set info from WDI into HAL*/
25026WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025027WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025028(
Jeff Johnson295189b2012-06-20 16:38:30 -070025029 tSirMacRateSet* pHalRateSet,
25030 WDI_RateSet* pwdiRateSet
25031)
25032{
Jeff Johnsone7245742012-09-05 17:12:55 -070025033 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25035
25036 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25037 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25038
25039 for ( i = 0; i < pHalRateSet->numRates; i++ )
25040 {
25041 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25042 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025043
Jeff Johnson295189b2012-06-20 16:38:30 -070025044}/*WDI_CopyWDIRateSetToHALRateSet*/
25045
25046
25047/*Translate an EDCA Parameter Record from WDI into HAL*/
25048WPT_STATIC WPT_INLINE void
25049WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025050(
Jeff Johnson295189b2012-06-20 16:38:30 -070025051 tSirMacEdcaParamRecord* phalEdcaParam,
25052 WDI_EdcaParamRecord* pWDIEdcaParam
25053)
25054{
Jeff Johnsone7245742012-09-05 17:12:55 -070025055 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025056 the chances of getting inlined*/
25057
25058 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25059 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25060 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25061 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25062
25063 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25064 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25065 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25066}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25067
25068
25069/*Copy a management frame header from WDI fmt into HAL fmt*/
25070WPT_STATIC WPT_INLINE void
25071WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25072(
25073 tSirMacMgmtHdr* pmacMgmtHdr,
25074 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25075)
25076{
25077 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25078 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25079 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25080 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25081 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25082 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25083 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25084 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25085 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25086 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25087 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25088
25089 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25090 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25091
Jeff Johnsone7245742012-09-05 17:12:55 -070025092 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025093 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025094 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025095 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025096 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025097 pwdiMacMgmtHdr->bssId, 6);
25098
25099 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25100 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25101 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25102
25103}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25104
25105
25106/*Copy config bss parameters from WDI fmt into HAL fmt*/
25107WPT_STATIC WPT_INLINE void
25108WDI_CopyWDIConfigBSSToHALConfigBSS
25109(
25110 tConfigBssParams* phalConfigBSS,
25111 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25112)
25113{
25114
25115 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025116#ifdef WLAN_FEATURE_11AC
25117 /* Get the Version 1 Handler */
25118 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25119 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025120 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025121#endif
25122
Jeff Johnson295189b2012-06-20 16:38:30 -070025123 wpalMemoryCopy( phalConfigBSS->bssId,
25124 pwdiConfigBSS->macBSSID,
25125 WDI_MAC_ADDR_LEN);
25126
25127#ifdef HAL_SELF_STA_PER_BSS
25128 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25129 pwdiConfigBSS->macSelfAddr,
25130 WDI_MAC_ADDR_LEN);
25131#endif
25132
25133 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25134
25135 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25136 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25137
Jeff Johnsone7245742012-09-05 17:12:55 -070025138 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025139 pwdiConfigBSS->ucShortSlotTimeSupported;
25140 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25141 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25142 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25143 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25144 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025145 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025146 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25147 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25148 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25149 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25150 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25151 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25152 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25153 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25154 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25155 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25156 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25157
Jeff Johnsone7245742012-09-05 17:12:55 -070025158 phalConfigBSS->htOperMode =
25159 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025160
25161 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25162 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25163 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25164 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25165
25166#ifdef WLAN_FEATURE_VOWIFI
25167 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25168#endif
25169
25170 /*! Used 32 as magic number because that is how the ssid is declared inside the
25171 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025172 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025173 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25174 pwdiConfigBSS->wdiSSID.ucLength : 32;
25175 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025176 pwdiConfigBSS->wdiSSID.sSSID,
25177 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025178
25179 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25180 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025181
Jeff Johnson295189b2012-06-20 16:38:30 -070025182 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25183 &pwdiConfigBSS->wdiRateSet);
25184
25185 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25186
25187 if(phalConfigBSS->edcaParamsValid)
25188 {
25189 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25190 &pwdiConfigBSS->wdiBEEDCAParams);
25191 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25192 &pwdiConfigBSS->wdiBKEDCAParams);
25193 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25194 &pwdiConfigBSS->wdiVIEDCAParams);
25195 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25196 &pwdiConfigBSS->wdiVOEDCAParams);
25197 }
25198
Jeff Johnsone7245742012-09-05 17:12:55 -070025199 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025200
25201 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25202
25203#ifdef WLAN_FEATURE_VOWIFI_11R
25204
Jeff Johnsone7245742012-09-05 17:12:55 -070025205 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025206 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025207
Jeff Johnson295189b2012-06-20 16:38:30 -070025208 if( phalConfigBSS->extSetStaKeyParamValid )
25209 {
25210 /*-----------------------------------------------------------------------
25211 Copy the STA Key parameters into the HAL message
25212 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025213 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025214 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25215
Jeff Johnsone7245742012-09-05 17:12:55 -070025216 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025217 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25218
25219 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25220
25221 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25222
25223 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25224
Jeff Johnson295189b2012-06-20 16:38:30 -070025225 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25226 keyIndex++)
25227 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025228 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025229 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25230 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25231 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25232 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25233 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25234 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025235 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025236 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025237 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025238 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025239 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025240 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25241 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025242 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025243 WDI_MAX_KEY_LENGTH);
25244 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025245 }
25246 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25247 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025248 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025249 sizeof(phalConfigBSS->extSetStaKeyParam) );
25250 }
25251
25252#endif /*WLAN_FEATURE_VOWIFI_11R*/
25253
Jeff Johnsone7245742012-09-05 17:12:55 -070025254#ifdef WLAN_FEATURE_11AC
25255 if(phalConfigBSS_V1 != NULL)
25256 {
25257 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25258 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25259 }
25260#endif
25261
Jeff Johnson295189b2012-06-20 16:38:30 -070025262}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25263
25264
Jeff Johnsone7245742012-09-05 17:12:55 -070025265/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025266 pointed to by user data */
25267WPT_STATIC WPT_INLINE void
25268WDI_ExtractRequestCBFromEvent
25269(
25270 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025271 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025272 void** ppUserData
25273)
25274{
25275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25276 switch ( pEvent->wdiRequest )
25277 {
25278 case WDI_START_REQ:
25279 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25280 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25281 break;
25282 case WDI_STOP_REQ:
25283 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25284 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25285 break;
25286 case WDI_INIT_SCAN_REQ:
25287 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25288 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25289 break;
25290 case WDI_START_SCAN_REQ:
25291 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25292 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25293 break;
25294 case WDI_END_SCAN_REQ:
25295 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25296 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25297 break;
25298 case WDI_FINISH_SCAN_REQ:
25299 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25300 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25301 break;
25302 case WDI_JOIN_REQ:
25303 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25304 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25305 break;
25306 case WDI_CONFIG_BSS_REQ:
25307 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25308 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25309 break;
25310 case WDI_DEL_BSS_REQ:
25311 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25312 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25313 break;
25314 case WDI_POST_ASSOC_REQ:
25315 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25316 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25317 break;
25318 case WDI_DEL_STA_REQ:
25319 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25320 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25321 break;
25322 case WDI_DEL_STA_SELF_REQ:
25323 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25324 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25325 break;
25326
25327 case WDI_SET_BSS_KEY_REQ:
25328 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25329 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25330 break;
25331 case WDI_RMV_BSS_KEY_REQ:
25332 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25333 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25334 break;
25335 case WDI_SET_STA_KEY_REQ:
25336 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25337 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25338 break;
25339 case WDI_RMV_STA_KEY_REQ:
25340 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25341 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25342 break;
25343 case WDI_ADD_TS_REQ:
25344 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25345 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25346 break;
25347 case WDI_DEL_TS_REQ:
25348 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25349 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25350 break;
25351 case WDI_UPD_EDCA_PRMS_REQ:
25352 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25353 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25354 break;
25355 case WDI_ADD_BA_SESSION_REQ:
25356 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25357 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25358 break;
25359 case WDI_DEL_BA_REQ:
25360 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25361 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25362 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025363#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025364 case WDI_TSM_STATS_REQ:
25365 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25366 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25367 break;
25368#endif
25369 case WDI_CH_SWITCH_REQ:
25370 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25371 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25372 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025373 case WDI_CH_SWITCH_REQ_V1:
25374 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25375 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25376 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025377 case WDI_CONFIG_STA_REQ:
25378 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25379 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25380 break;
25381 case WDI_SET_LINK_ST_REQ:
25382 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25383 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25384 break;
25385 case WDI_GET_STATS_REQ:
25386 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25387 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25388 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025389#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025390 case WDI_GET_ROAM_RSSI_REQ:
25391 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25392 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25393 break;
25394#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025395 case WDI_UPDATE_CFG_REQ:
25396 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25397 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25398 break;
25399 case WDI_ADD_BA_REQ:
25400 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25401 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25402 break;
25403 case WDI_TRIGGER_BA_REQ:
25404 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25405 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25406 break;
25407 case WDI_UPD_BCON_PRMS_REQ:
25408 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25409 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25410 break;
25411 case WDI_SND_BCON_REQ:
25412 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25413 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25414 break;
25415 case WDI_ENTER_BMPS_REQ:
25416 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25417 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25418 break;
25419 case WDI_EXIT_BMPS_REQ:
25420 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25421 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25422 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025423 case WDI_ENTER_IMPS_REQ:
25424 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25425 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25426 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025427 case WDI_ENTER_UAPSD_REQ:
25428 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25429 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25430 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025431 case WDI_EXIT_UAPSD_REQ:
25432 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25433 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25434 break;
25435 case WDI_SET_UAPSD_PARAM_REQ:
25436 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25437 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25438 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025439 case WDI_UPDATE_UAPSD_PARAM_REQ:
25440 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25441 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25442 break;
25443 case WDI_CONFIGURE_RXP_FILTER_REQ:
25444 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25445 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25446 break;
25447 case WDI_SET_BEACON_FILTER_REQ:
25448 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25449 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25450 break;
25451 case WDI_REM_BEACON_FILTER_REQ:
25452 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25453 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025454 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025455 case WDI_SET_RSSI_THRESHOLDS_REQ:
25456 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25457 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25458 break;
25459 case WDI_HOST_OFFLOAD_REQ:
25460 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25461 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25462 break;
25463 case WDI_WOWL_ADD_BC_PTRN_REQ:
25464 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25465 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25466 break;
25467 case WDI_WOWL_DEL_BC_PTRN_REQ:
25468 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25469 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25470 break;
25471 case WDI_WOWL_ENTER_REQ:
25472 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25473 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25474 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025475 case WDI_WOWL_EXIT_REQ:
25476 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25477 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25478 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025479 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25480 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25481 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25482 break;
25483 case WDI_FLUSH_AC_REQ:
25484 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25485 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25486 break;
25487 case WDI_BTAMP_EVENT_REQ:
25488 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25489 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25490 break;
25491 case WDI_KEEP_ALIVE_REQ:
25492 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25493 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25494 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025495#if defined FEATURE_WLAN_SCAN_PNO
25496 case WDI_SET_PREF_NETWORK_REQ:
25497 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25498 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25499 break;
25500 case WDI_SET_RSSI_FILTER_REQ:
25501 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25502 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25503 break;
25504 case WDI_UPDATE_SCAN_PARAMS_REQ:
25505 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25506 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25507 break;
25508#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025509 case WDI_SET_TX_PER_TRACKING_REQ:
25510 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25511 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025512 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025513#if defined WLAN_FEATURE_PACKET_FILTERING
25514 case WDI_8023_MULTICAST_LIST_REQ:
25515 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25516 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25517 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025518 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25519 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25520 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25521 break;
25522 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25523 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25524 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25525 break;
25526 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25527 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25528 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25529 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025530#endif
25531 case WDI_SET_POWER_PARAMS_REQ:
25532 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25533 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25534 break;
25535#if defined WLAN_FEATURE_GTK_OFFLOAD
25536 case WDI_GTK_OFFLOAD_REQ:
25537 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25538 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25539 break;
25540 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25541 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25542 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25543 break;
25544#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025545
Jeff Johnson295189b2012-06-20 16:38:30 -070025546 default:
25547 *ppfnReqCB = NULL;
25548 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025549 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025550 }
25551}/*WDI_ExtractRequestCBFromEvent*/
25552
25553
25554/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025555 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025556 frame xtl is enabled for a particular STA.
25557
25558 WDI_PostAssocReq must have been called.
25559
Jeff Johnsone7245742012-09-05 17:12:55 -070025560 @param uSTAIdx: STA index
25561
Jeff Johnson295189b2012-06-20 16:38:30 -070025562 @see WDI_PostAssocReq
25563 @return Result of the function call
25564*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025565wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025566WDI_IsHwFrameTxTranslationCapable
25567(
25568 wpt_uint8 uSTAIdx
25569)
25570{
Jeff Johnsone7245742012-09-05 17:12:55 -070025571 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025572 uma value*/
25573 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025574 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025575 ------------------------------------------------------------------------*/
25576 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25577 {
25578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25579 "WDI API call before module is initialized - Fail request");
25580
Jeff Johnsone7245742012-09-05 17:12:55 -070025581 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025582 }
25583
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025584#ifdef WLAN_SOFTAP_VSTA_FEATURE
25585 if (IS_VSTA_IDX(uSTAIdx))
25586 {
25587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25588 "STA %d is a Virtual STA, "
25589 "HW frame translation disabled", uSTAIdx);
25590 return eWLAN_PAL_FALSE;
25591 }
25592#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025593
Jeff Johnson295189b2012-06-20 16:38:30 -070025594 return gWDICb.bFrameTransEnabled;
25595}/*WDI_IsHwFrameTxTranslationCapable*/
25596
Katya Nigam6201c3e2014-05-27 17:51:42 +053025597
25598/**
25599 @brief WDI_IsSelfSTA - check if staid is self sta index
25600
25601
25602 @param pWDICtx: pointer to the WLAN DAL context
25603 ucSTAIdx: station index
25604
25605 @return Result of the function call
25606*/
25607wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25608{
25609 wpt_uint8 ucSTAType;
25610
25611 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25612 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25613 {
25614 if( ucSTAType == WDI_STA_ENTRY_SELF )
25615 return eWLAN_PAL_TRUE;
25616 }
25617
25618 return eWLAN_PAL_FALSE;
25619}
25620
25621
25622
Jeff Johnson295189b2012-06-20 16:38:30 -070025623#ifdef FEATURE_WLAN_SCAN_PNO
25624/**
25625 @brief WDI_SetPreferredNetworkList
25626
Jeff Johnsone7245742012-09-05 17:12:55 -070025627 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025628 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025629
Jeff Johnson295189b2012-06-20 16:38:30 -070025630 wdiPNOScanCb: callback for passing back the response
25631 of the Set PNO operation received from the
25632 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025633
Jeff Johnson295189b2012-06-20 16:38:30 -070025634 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025635 callback
25636
Jeff Johnson295189b2012-06-20 16:38:30 -070025637 @return Result of the function call
25638*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025639WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025640WDI_SetPreferredNetworkReq
25641(
25642 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25643 WDI_PNOScanCb wdiPNOScanCb,
25644 void* pUserData
25645)
25646{
25647 WDI_EventInfoType wdiEventData = {{0}};
25648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25649
25650 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025651 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025652 ------------------------------------------------------------------------*/
25653 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25654 {
25655 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25656 "WDI API call before module is initialized - Fail request");
25657
Jeff Johnsone7245742012-09-05 17:12:55 -070025658 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025659 }
25660
25661 /*------------------------------------------------------------------------
25662 Fill in Event data and post to the Main FSM
25663 ------------------------------------------------------------------------*/
25664 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025665 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025666 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025667 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025668 wdiEventData.pUserData = pUserData;
25669
25670 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25671}
25672
25673
25674/**
25675 @brief WDI_SetRssiFilterReq
25676
Jeff Johnsone7245742012-09-05 17:12:55 -070025677 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025678 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025679
Jeff Johnson295189b2012-06-20 16:38:30 -070025680 wdiRssiFilterCb: callback for passing back the response
25681 of the Set RSSI Filter operation received from the
25682 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025683
Jeff Johnson295189b2012-06-20 16:38:30 -070025684 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025685 callback
25686
Jeff Johnson295189b2012-06-20 16:38:30 -070025687 @return Result of the function call
25688*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025689WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025690WDI_SetRssiFilterReq
25691(
25692 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25693 WDI_RssiFilterCb wdiRssiFilterCb,
25694 void* pUserData
25695)
25696{
25697 WDI_EventInfoType wdiEventData = {{0}};
25698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25699
25700 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025701 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025702 ------------------------------------------------------------------------*/
25703 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25704 {
25705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25706 "WDI API call before module is initialized - Fail request");
25707
Jeff Johnsone7245742012-09-05 17:12:55 -070025708 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025709 }
25710
25711 /*------------------------------------------------------------------------
25712 Fill in Event data and post to the Main FSM
25713 ------------------------------------------------------------------------*/
25714 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025715 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025716 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025717 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025718 wdiEventData.pUserData = pUserData;
25719
25720 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25721}/*WDI_SetRssiFilterReq*/
25722
25723/**
25724 @brief WDI_UpdateScanParamsReq
25725
Jeff Johnsone7245742012-09-05 17:12:55 -070025726 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025727 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025728
Jeff Johnson295189b2012-06-20 16:38:30 -070025729 wdiUpdateScanParamsCb: callback for passing back the response
25730 of the Set PNO operation received from the
25731 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025732
Jeff Johnson295189b2012-06-20 16:38:30 -070025733 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025734 callback
25735
Jeff Johnson295189b2012-06-20 16:38:30 -070025736 @return Result of the function call
25737*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025738WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025739WDI_UpdateScanParamsReq
25740(
25741 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25742 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25743 void* pUserData
25744)
25745{
25746 WDI_EventInfoType wdiEventData = {{0}};
25747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25748
25749 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025750 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025751 ------------------------------------------------------------------------*/
25752 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25753 {
25754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25755 "WDI API call before module is initialized - Fail request");
25756
Jeff Johnsone7245742012-09-05 17:12:55 -070025757 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025758 }
25759
25760 /*------------------------------------------------------------------------
25761 Fill in Event data and post to the Main FSM
25762 ------------------------------------------------------------------------*/
25763 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025764 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025765 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025766 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025767 wdiEventData.pUserData = pUserData;
25768
25769 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25770}
25771
25772/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025773 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025774 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025775
25776 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025777 pwdiPNOScanReqParams: pointer to the info received
25778 from upper layers
25779 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025780 and its size
25781
Jeff Johnson295189b2012-06-20 16:38:30 -070025782 @return Result of the function call
25783*/
25784
25785WDI_Status
25786WDI_PackPreferredNetworkList
25787(
25788 WDI_ControlBlockType* pWDICtx,
25789 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25790 wpt_uint8** ppSendBuffer,
25791 wpt_uint16* pSize
25792)
25793{
Jeff Johnsone7245742012-09-05 17:12:55 -070025794 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025795 wpt_uint16 usDataOffset = 0;
25796 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025797 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025798 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025799 /*-----------------------------------------------------------------------
25800 Get message buffer
25801 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025803 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025804 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025805 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025806 {
25807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025808 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025809 pwdiPNOScanReqParams);
25810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025812 }
25813
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025814 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25815
Jeff Johnson295189b2012-06-20 16:38:30 -070025816 /*-------------------------------------------------------------------------
25817 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25818 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025819 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025820 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025821 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025822 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25823
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025824 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025825 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025826 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025827 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025828 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25829
25830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025831 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025832 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25833 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25834 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25835
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025836 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025837 {
25838 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025839 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025840 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25841
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025842 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025843 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025844 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025845
25846 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025847 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025848 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025849
25850 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025851 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025852 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025853
Jeff Johnsone7245742012-09-05 17:12:55 -070025854 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025855 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025856 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025857 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25858 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25859 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25860 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025861
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025862 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025863 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025864 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025865
25866 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025867 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025868 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25869
25870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025871 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025872 pPrefNetwListParams->aNetworks[i].ssId.length,
25873 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025874 }
25875
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025876 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025877 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025878 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25879 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25880 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25881
25882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025883 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025884 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025885 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25886 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25887
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025888 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025889 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025890 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025891 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025892 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025893 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25894 }
25895
25896 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025897 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025898 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25899 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25900 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025901 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025902
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025903 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025904 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025905 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025906
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025907 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025908 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25909 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25910 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025911 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025912
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025913 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025914 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025915 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025916
25917 /*Set the output values*/
25918 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025919 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025920
25921 return WDI_STATUS_SUCCESS;
25922}/*WDI_PackPreferredNetworkList*/
25923
25924/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025925 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025926 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025927
25928 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025929 pwdiPNOScanReqParams: pointer to the info received
25930 from upper layers
25931 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025932 and its size
25933
Jeff Johnson295189b2012-06-20 16:38:30 -070025934 @return Result of the function call
25935*/
25936
25937WDI_Status
25938WDI_PackPreferredNetworkListNew
25939(
25940 WDI_ControlBlockType* pWDICtx,
25941 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25942 wpt_uint8** ppSendBuffer,
25943 wpt_uint16* pSize
25944)
25945{
Jeff Johnsone7245742012-09-05 17:12:55 -070025946 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025947 wpt_uint16 usDataOffset = 0;
25948 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025949 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025950 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025951
25952 /*-----------------------------------------------------------------------
25953 Get message buffer
25954 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025955 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025956 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025957 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025958 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025959 {
25960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025961 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025962 pwdiPNOScanReqParams);
25963 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025965 }
25966
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025967 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25968
Jeff Johnson295189b2012-06-20 16:38:30 -070025969 /*-------------------------------------------------------------------------
25970 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25971 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025972 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025973 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025974 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025975 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25976
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025977 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025978 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025979 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025980 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025981 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25982
25983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025984 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025985 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25986 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25987 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25988
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025989 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025990 {
25991 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025992 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025993 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25994
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025995 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025996 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025997 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025998
25999 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026000 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026001 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026002
26003 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026004 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026005 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026006
26007 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026008 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026009 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026010
Jeff Johnsone7245742012-09-05 17:12:55 -070026011 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026012 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026013 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026014 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26015
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026016 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026017 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026018 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026019
26020 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026021 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026022 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26023
26024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026025 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026026 pPrefNetwListParams->aNetworks[i].ssId.length,
26027 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026028 }
26029
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026030 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026031 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026032 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26033 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26034 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26035
26036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026037 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026038 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026039 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26040 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26041
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026042 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026043 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026044 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026045 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026046 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026047 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26048 }
26049
26050 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026051 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026052 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26053 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26054 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026055 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026056
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026057 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026058 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026059 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026060
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026061 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026062 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26063 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26064 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026065 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026066
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026067 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026068 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026069 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026070
Jeff Johnson295189b2012-06-20 16:38:30 -070026071
26072 /*Set the output values*/
26073 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026074 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026075
26076 return WDI_STATUS_SUCCESS;
26077}/*WDI_PackPreferredNetworkListNew*/
26078
26079/**
26080 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026081
26082 @param pWDICtx: pointer to the WLAN DAL context
26083 pEventData: pointer to the event information structure
26084
Jeff Johnson295189b2012-06-20 16:38:30 -070026085 @return Result of the function call
26086*/
26087WDI_Status
26088WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026089(
Jeff Johnson295189b2012-06-20 16:38:30 -070026090 WDI_ControlBlockType* pWDICtx,
26091 WDI_EventInfoType* pEventData
26092)
26093{
26094 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26095 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026096 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026097 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026098 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026099
26100 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026101 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026102 -------------------------------------------------------------------------*/
26103 if (( NULL == pEventData ) ||
26104 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26105 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26106 {
26107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026108 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026111 }
26112
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026113 /*----------------------------------------------------------------------
26114 Avoid Enable PNO during any active session or an ongoing session
26115 ----------------------------------------------------------------------*/
26116 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26117 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26118 {
26119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26120 "%s:(Active/Ongoing Session) - Fail request", __func__);
26121
26122 return WDI_STATUS_E_FAILURE;
26123 }
26124
Jeff Johnson295189b2012-06-20 16:38:30 -070026125 /*-------------------------------------------------------------------------
26126 Pack the PNO request structure based on version
26127 -------------------------------------------------------------------------*/
26128 if ( pWDICtx->wdiPNOVersion > 0 )
26129 {
26130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026131 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026132 pWDICtx->wdiPNOVersion);
26133
26134 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26135 &pSendBuffer, &usSendSize);
26136 }
26137 else
26138 {
26139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026140 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026141 pWDICtx->wdiPNOVersion);
26142
26143 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26144 &pSendBuffer, &usSendSize);
26145 }
26146
26147 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26148 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26149 {
26150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026151 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026153 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026154 }
26155
26156 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026157 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026158
26159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026160 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026161 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026162 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26163 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026164}
26165
26166/**
26167 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026168
26169 @param pWDICtx: pointer to the WLAN DAL context
26170 pEventData: pointer to the event information structure
26171
Jeff Johnson295189b2012-06-20 16:38:30 -070026172 @see
26173 @return Result of the function call
26174*/
26175WDI_Status
26176WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026177(
Jeff Johnson295189b2012-06-20 16:38:30 -070026178 WDI_ControlBlockType* pWDICtx,
26179 WDI_EventInfoType* pEventData
26180)
26181{
26182 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26183 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026184 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026185 wpt_uint16 usDataOffset = 0;
26186 wpt_uint16 usSendSize = 0;
26187 wpt_uint8 ucRssiThreshold;
26188
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 == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26194 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)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
26202 /*-----------------------------------------------------------------------
26203 Get message buffer
26204 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026205 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026206 sizeof(ucRssiThreshold),
26207 &pSendBuffer, &usDataOffset, &usSendSize))||
26208 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26209 {
26210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026211 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026212 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026215 }
26216
26217 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26218
Jeff Johnsone7245742012-09-05 17:12:55 -070026219 wpalMemoryCopy( pSendBuffer+usDataOffset,
26220 &ucRssiThreshold,
26221 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026222
26223 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026224 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026225
26226 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026227 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026228 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026229 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26230 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026231}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026232#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26233/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026234 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026235
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026236 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026237 by the Device Interface
26238
26239 wdiRoamOffloadScancb: callback for passing back the response
26240 of the Roam Candidate Lookup Req operation received from the
26241 device
26242
26243 pUserData: user data will be passed back with the
26244 callback
26245 @return Result of the function call
26246*/
26247WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026248WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026249(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026250 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026251 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26252 void* pUserData
26253)
26254{
26255 WDI_EventInfoType wdiEventData = {{0}};
26256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26257
26258 /*------------------------------------------------------------------------
26259 Sanity Check
26260 ------------------------------------------------------------------------*/
26261 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26262 {
26263 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26264 "WDI API call before module is initialized - Fail request");
26265
26266 return WDI_STATUS_E_NOT_ALLOWED;
26267 }
26268
26269 /*------------------------------------------------------------------------
26270 Fill in Event data and post to the Main FSM
26271 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026272 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26273 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26274 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026275 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26276 wdiEventData.pUserData = pUserData;
26277
26278 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26279}
26280
26281void
26282WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26283{
26284 switch (wdiEdType)
26285 {
26286 case WDI_ED_NONE:
26287 *EdType = eED_NONE;
26288 break;
26289 case WDI_ED_WEP40:
26290 case WDI_ED_WEP104:
26291 *EdType = eED_WEP;
26292 break;
26293 case WDI_ED_TKIP:
26294 *EdType = eED_TKIP;
26295 break;
26296 case WDI_ED_CCMP:
26297#ifdef WLAN_FEATURE_11W
26298 case WDI_ED_AES_128_CMAC:
26299#endif
26300 *EdType = eED_CCMP;
26301 break;
26302#ifdef FEATURE_WLAN_WAPI
26303 case WDI_ED_WPI:
26304 *EdType = eED_WPI;
26305 break;
26306#endif
26307 case WDI_ED_ANY:
26308 *EdType = eED_ANY;
26309 break;
26310
26311 default:
26312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26313 "%s: Unknown Encryption Type", __func__);
26314 break;
26315 }
26316}
26317
26318/**
26319 @brief Helper function to pack Start Roam Candidate Lookup
26320 Request parameters
26321
26322 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026323 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026324 from upper layers
26325 ppSendBuffer, pSize - out pointers of the packed buffer
26326 and its size
26327
26328 @return Result of the function call
26329*/
26330
26331WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026332WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026333(
26334 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026335 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026336 wpt_uint8** ppSendBuffer,
26337 wpt_uint16* pSize
26338)
26339{
26340 wpt_uint8* pSendBuffer = NULL;
26341 wpt_uint16 usDataOffset = 0;
26342 wpt_uint16 usSendSize = 0;
26343 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26344 wpt_uint8 i;
26345 /*-----------------------------------------------------------------------
26346 Get message buffer
26347 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026348 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026349 sizeof(tRoamCandidateListParams),
26350 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026351 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026352 {
26353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026354 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026355 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026356 WDI_ASSERT(0);
26357 return WDI_STATUS_E_FAILURE;
26358 }
26359 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026360 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026361 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026362 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026363 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026364 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026365 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026366 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026367 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026368 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026369 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026370
26371 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026372 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026373 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026374 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026375 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26376 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026377 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26378 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26379 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26380 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26381 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026382 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026383 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026384 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026385 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26386 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26387 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26388 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26389 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26390 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26391 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026392 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026393 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026394 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26395 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26396 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026397
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26399 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26400 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26401 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26402 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26403 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026404 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026405 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26406 pRoamCandidateListParams->RoamScanOffloadEnabled,
26407 pRoamCandidateListParams->Command,
26408 pRoamCandidateListParams->StartScanReason,
26409 pRoamCandidateListParams->NeighborScanTimerPeriod,
26410 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26411 pRoamCandidateListParams->NeighborScanChannelMinTime,
26412 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26413 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26414 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26415 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26416 pRoamCandidateListParams->ConnectedNetwork.authentication,
26417 pRoamCandidateListParams->ConnectedNetwork.encryption,
26418 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26419 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26420 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026421 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026422 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026423 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026424 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026425 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26426 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026427 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026428 pRoamCandidateListParams->us24GProbeSize);
26429 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026430 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026431 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026432 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026433 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26434 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026435 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026436 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026437 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26438 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26439 pRoamCandidateListParams->nProbes =
26440 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26441 pRoamCandidateListParams->HomeAwayTime =
26442 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026444 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26445 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026447 }
26448
26449
26450 /*Set the output values*/
26451 *ppSendBuffer = pSendBuffer;
26452 *pSize = usSendSize;
26453 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026454}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026455
26456/**
26457 @brief Process Start Roam Candidate Lookup Request function
26458
26459 @param pWDICtx: pointer to the WLAN DAL context
26460 pEventData: pointer to the event information structure
26461
26462 @return Result of the function call
26463*/
26464WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026465WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026466(
26467 WDI_ControlBlockType* pWDICtx,
26468 WDI_EventInfoType* pEventData
26469)
26470{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026471 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026472 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26473 wpt_uint8* pSendBuffer = NULL;
26474 wpt_uint16 usSendSize = 0;
26475 WDI_Status wdiStatus;
26476 /*-------------------------------------------------------------------------
26477 Sanity check
26478 -------------------------------------------------------------------------*/
26479 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026480 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026481 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26482 {
26483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26484 "%s: Invalid parameters", __func__);
26485 WDI_ASSERT(0);
26486 return WDI_STATUS_E_FAILURE;
26487 }
26488
26489 /*-------------------------------------------------------------------------
26490 Pack the Start Roam Candidate Lookup request structure based on version
26491 -------------------------------------------------------------------------*/
26492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26493 "%s: Packing Roam Candidate Lookup request ", __func__);
26494
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026495 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026496 &pSendBuffer, &usSendSize);
26497
26498 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26499 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26500 {
26501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26502 "%s: failed to pack request parameters", __func__);
26503 WDI_ASSERT(0);
26504 return wdiStatus;
26505 }
26506
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026507 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26508 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026509
26510 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026511 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026512 -------------------------------------------------------------------------*/
26513 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026514 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026515}
26516
26517/**
26518 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26519 response is being received over the bus from HAL)
26520
26521 @param pWDICtx: pointer to the WLAN DAL context
26522 pEventData: pointer to the event information structure
26523
26524 @see
26525 @return Result of the function call
26526*/
26527WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026528WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026529(
26530 WDI_ControlBlockType* pWDICtx,
26531 WDI_EventInfoType* pEventData
26532)
26533{
26534 WDI_Status wdiStatus;
26535 eHalStatus halStatus;
26536 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26537
26538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26539
26540 /*-------------------------------------------------------------------------
26541 Sanity check
26542 -------------------------------------------------------------------------*/
26543 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26544 ( NULL == pEventData->pEventData ))
26545 {
26546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26547 "%s: Invalid parameters", __func__);
26548 WDI_ASSERT(0);
26549 return WDI_STATUS_E_FAILURE;
26550 }
26551
26552 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26553
26554 /*-------------------------------------------------------------------------
26555 Extract response and send it to UMAC
26556 -------------------------------------------------------------------------*/
26557 halStatus = *((eHalStatus*)pEventData->pEventData);
26558 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26559
26560 /*Notify UMAC*/
26561 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26562
26563 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026564}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026565#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026566
26567/**
26568 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026569
26570 @param pWDICtx: pointer to the WLAN DAL context
26571 pEventData: pointer to the event information structure
26572
Jeff Johnson295189b2012-06-20 16:38:30 -070026573 @see
26574 @return Result of the function call
26575*/
26576WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026577WDI_PackUpdateScanParamsReq
26578(
26579 WDI_ControlBlockType* pWDICtx,
26580 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26581 wpt_uint8** ppSendBuffer,
26582 wpt_uint16* pSize
26583)
26584{
26585 wpt_uint8* pSendBuffer = NULL;
26586 wpt_uint16 usDataOffset = 0;
26587 wpt_uint16 usSendSize = 0;
26588 tUpdateScanParams updateScanParams = {0};
26589
26590
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026592 "Begin WDI Update Scan Parameters Old Style Params");
26593 /*-----------------------------------------------------------------------
26594 Get message buffer
26595 -----------------------------------------------------------------------*/
26596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26597 sizeof(updateScanParams),
26598 &pSendBuffer, &usDataOffset, &usSendSize))||
26599 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26600 {
26601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026602 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026603 pwdiUpdateScanParams);
26604 WDI_ASSERT(0);
26605 return WDI_STATUS_E_FAILURE;
26606 }
26607
26608 //
26609 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26610 //
26611
26612 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26613 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26614
26615 updateScanParams.ucChannelCount =
26616 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26617 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26618 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26619 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26620
26621 wpalMemoryCopy( updateScanParams.aChannels,
26622 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26623 updateScanParams.ucChannelCount);
26624
26625
26626 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26627 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26628 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26629 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26630 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26631
26632 wpalMemoryCopy( pSendBuffer+usDataOffset,
26633 &updateScanParams,
26634 sizeof(updateScanParams));
26635
26636 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26637 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26638
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026640 "End Update Scan Parameters Old Style");
26641
26642 /*Set the output values*/
26643 *ppSendBuffer = pSendBuffer;
26644 *pSize = usSendSize;
26645
26646 return WDI_STATUS_SUCCESS;
26647}
26648
26649/**
26650 @brief Process Update Scan Params function
26651
26652 @param pWDICtx: pointer to the WLAN DAL context
26653 pEventData: pointer to the event information structure
26654
26655 @see
26656 @return Result of the function call
26657*/
26658WDI_Status
26659WDI_PackUpdateScanParamsReqEx
26660(
26661 WDI_ControlBlockType* pWDICtx,
26662 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26663 wpt_uint8** ppSendBuffer,
26664 wpt_uint16* pSize
26665)
26666{
26667 wpt_uint8* pSendBuffer = NULL;
26668 wpt_uint16 usDataOffset = 0;
26669 wpt_uint16 usSendSize = 0;
26670 tUpdateScanParamsEx updateScanParams = {0};
26671
26672
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026673 /*-----------------------------------------------------------------------
26674 Get message buffer
26675 -----------------------------------------------------------------------*/
26676 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26677 sizeof(updateScanParams),
26678 &pSendBuffer, &usDataOffset, &usSendSize))||
26679 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26680 {
26681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026682 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026683 pwdiUpdateScanParams);
26684 WDI_ASSERT(0);
26685 return WDI_STATUS_E_FAILURE;
26686 }
26687
26688 //
26689 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26690 //
26691
26692 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26693 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26694
26695 updateScanParams.ucChannelCount =
26696 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26697 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26698 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26699 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26700
26701 wpalMemoryCopy( updateScanParams.aChannels,
26702 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26703 updateScanParams.ucChannelCount);
26704
26705
26706 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26707 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26708 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26709 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26710 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26711
26712 wpalMemoryCopy( pSendBuffer+usDataOffset,
26713 &updateScanParams,
26714 sizeof(updateScanParams));
26715
26716 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26717 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26718
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026719 /*Set the output values*/
26720 *ppSendBuffer = pSendBuffer;
26721 *pSize = usSendSize;
26722
26723 return WDI_STATUS_SUCCESS;
26724}
26725
26726/**
26727 @brief Process Update Scan Params function
26728
26729 @param pWDICtx: pointer to the WLAN DAL context
26730 pEventData: pointer to the event information structure
26731
26732 @see
26733 @return Result of the function call
26734*/
26735WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026736WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026737(
Jeff Johnson295189b2012-06-20 16:38:30 -070026738 WDI_ControlBlockType* pWDICtx,
26739 WDI_EventInfoType* pEventData
26740)
26741{
26742 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26743 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026744 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026745 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026746 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026747
26748 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026749 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026750 -------------------------------------------------------------------------*/
26751 if (( NULL == pEventData ) ||
26752 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26753 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26754 {
26755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026756 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026757 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026758 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026759 }
26760
26761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26762 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026763
26764 //
26765 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26766 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026767 if ( pWDICtx->wlanVersion.revision < 1 )
26768 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026769 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026770 &pSendBuffer, &usSendSize);
26771 }
26772 else
26773 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026774 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26775 &pSendBuffer, &usSendSize);
26776 }
26777
26778 if(WDI_STATUS_SUCCESS != wdiStatus)
26779 {
26780 //memory allocation failed
26781 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026782 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026783
Jeff Johnson295189b2012-06-20 16:38:30 -070026784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026785 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026786 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026787 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026788 wdiUpdateScanParamsCb, pEventData->pUserData,
26789 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026790}
26791
26792/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026793 @brief Process Update Channel Params function
26794
26795 @param pWDICtx: pointer to the WLAN DAL context
26796 pEventData: pointer to the event information structure
26797
26798 @see
26799 @return Result of the function call
26800*/
26801WDI_Status
26802WDI_ProcessUpdateChannelParamsReq
26803(
26804 WDI_ControlBlockType* pWDICtx,
26805 WDI_EventInfoType* pEventData
26806)
26807{
26808 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26809 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26810 wpt_uint8* pSendBuffer = NULL;
26811 wpt_uint16 usDataOffset = 0;
26812 wpt_uint16 usSendSize = 0;
26813 tUpdateChannelReqType *updateChannelParams;
26814 wpt_uint32 usUpdateChanParamSize;
26815 wpt_uint8 num_channels = 0;
26816
26817 /*-------------------------------------------------------------------------
26818 Sanity check
26819 -------------------------------------------------------------------------*/
26820 if (( NULL == pEventData ) ||
26821 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26822 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26823 {
26824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26825 "%s: Invalid parameters", __func__);
26826 WDI_ASSERT(0);
26827 return WDI_STATUS_E_FAILURE;
26828 }
26829 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026830 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026831
26832 /*-----------------------------------------------------------------------
26833 Get message buffer
26834 -----------------------------------------------------------------------*/
26835 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26836 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26837 &pSendBuffer, &usDataOffset, &usSendSize))||
26838 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26839 {
26840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26841 "Unable to get send buffer in Update Channel Params req %p",
26842 pwdiUpdateChanListParams);
26843 WDI_ASSERT(0);
26844 return WDI_STATUS_E_FAILURE;
26845 }
26846 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26847
26848 updateChannelParams->numChan = num_channels;
26849 wpalMemoryCopy(&updateChannelParams->chanParam,
26850 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26851 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26852
26853 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26854 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26855
26856 /*-------------------------------------------------------------------------
26857 Send Update channel request to fw
26858 -------------------------------------------------------------------------*/
26859 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26860 wdiUpdateChanParamsCb, pEventData->pUserData,
26861 WDI_UPDATE_CHAN_RESP);
26862}
26863
26864/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026865 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026866
26867 @param pWDICtx: pointer to the WLAN DAL context
26868 pEventData: pointer to the event information structure
26869
Jeff Johnson295189b2012-06-20 16:38:30 -070026870 @see
26871 @return Result of the function call
26872*/
26873WDI_Status
26874WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026875(
Jeff Johnson295189b2012-06-20 16:38:30 -070026876 WDI_ControlBlockType* pWDICtx,
26877 WDI_EventInfoType* pEventData
26878)
26879{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026880 WDI_LowLevelIndType wdiInd;
26881 tpPrefNetwFoundParams pNetwFoundParams;
26882 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026883
26884
26885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026886 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026887 -------------------------------------------------------------------------*/
26888 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26889 ( NULL == pEventData->pEventData ))
26890 {
26891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026892 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026893 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026895 }
26896
26897 /*-------------------------------------------------------------------------
26898 Extract indication and send it to UMAC
26899 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026900 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26901
26902 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26903 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26904 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26905
26906 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26907 {
26908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26909 "%s: fail to allocate memory", __func__);
26910 return WDI_STATUS_MEM_FAILURE;
26911 }
26912
26913 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26914 (pNetwFoundParams->ssId.length < 32 )?
26915 pNetwFoundParams->ssId.length : 32;
26916 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26917 pNetwFoundParams->ssId.ssId,
26918 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26919 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26920 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26921 pNetwFoundParams->frameLength;
26922 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26923 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26924 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026925
26926 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026927 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026928
Jeff Johnson295189b2012-06-20 16:38:30 -070026929 // DEBUG
26930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053026931 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026932 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026933 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026934 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026935 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026936 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26937
ltimariub77f24b2013-01-24 18:54:33 -080026938 if ( pWDICtx->wdiLowLevelIndCB )
26939 {
26940 /*Notify UMAC*/
26941 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26942 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026943
26944 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026945}
26946
26947/**
26948 @brief Process PNO Rsp function (called when a
26949 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026950
26951 @param pWDICtx: pointer to the WLAN DAL context
26952 pEventData: pointer to the event information structure
26953
Jeff Johnson295189b2012-06-20 16:38:30 -070026954 @see
26955 @return Result of the function call
26956*/
26957WDI_Status
26958WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026959(
Jeff Johnson295189b2012-06-20 16:38:30 -070026960 WDI_ControlBlockType* pWDICtx,
26961 WDI_EventInfoType* pEventData
26962)
26963{
26964 WDI_Status wdiStatus;
26965 eHalStatus halStatus;
26966 WDI_PNOScanCb wdiPNOScanCb = NULL;
26967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26968
26969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026970 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026971 -------------------------------------------------------------------------*/
26972 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26973 ( NULL == pEventData->pEventData ))
26974 {
26975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026977 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026979 }
26980
26981
Jeff Johnsone7245742012-09-05 17:12:55 -070026982 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026983
26984 /*-------------------------------------------------------------------------
26985 Extract response and send it to UMAC
26986 -------------------------------------------------------------------------*/
26987 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026988 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026989
26990 /*Notify UMAC*/
26991 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26992
Jeff Johnsone7245742012-09-05 17:12:55 -070026993 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026994}/*WDI_ProcessSetPreferredNetworkRsp*/
26995
26996/**
26997 @brief Process RSSI Filter Rsp function (called when a
26998 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026999
27000 @param pWDICtx: pointer to the WLAN DAL context
27001 pEventData: pointer to the event information structure
27002
Jeff Johnson295189b2012-06-20 16:38:30 -070027003 @see
27004 @return Result of the function call
27005*/
27006WDI_Status
27007WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027008(
Jeff Johnson295189b2012-06-20 16:38:30 -070027009 WDI_ControlBlockType* pWDICtx,
27010 WDI_EventInfoType* pEventData
27011)
27012{
27013 WDI_Status wdiStatus;
27014 eHalStatus halStatus;
27015 WDI_RssiFilterCb wdiRssiFilterCb;
27016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27017
27018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027019 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027020 -------------------------------------------------------------------------*/
27021 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27022 ( NULL == pEventData->pEventData ))
27023 {
27024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027028 }
27029
Jeff Johnsone7245742012-09-05 17:12:55 -070027030 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027031
27032 /*-------------------------------------------------------------------------
27033 Extract response and send it to UMAC
27034 -------------------------------------------------------------------------*/
27035 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027036 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027037
27038 /*Notify UMAC*/
27039 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27040
Jeff Johnsone7245742012-09-05 17:12:55 -070027041 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027042}/*WDI_ProcessSetRssiFilterRsp*/
27043
27044/**
27045 @brief Process Update Scan Params Rsp function (called when a
27046 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027047
27048 @param pWDICtx: pointer to the WLAN DAL context
27049 pEventData: pointer to the event information structure
27050
Jeff Johnson295189b2012-06-20 16:38:30 -070027051 @see
27052 @return Result of the function call
27053*/
27054WDI_Status
27055WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027056(
Jeff Johnson295189b2012-06-20 16:38:30 -070027057 WDI_ControlBlockType* pWDICtx,
27058 WDI_EventInfoType* pEventData
27059)
27060{
27061 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027062 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027063 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027064 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27066
27067 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027068 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027069 -------------------------------------------------------------------------*/
27070 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27071 ( NULL == pEventData->pEventData ))
27072 {
27073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027074 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027075 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027077 }
27078
27079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027080 "%s: Process UPD scan params ptr : %p",
27081 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027082
Jeff Johnsone7245742012-09-05 17:12:55 -070027083 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027084
27085 /*-------------------------------------------------------------------------
27086 Extract response and send it to UMAC
27087 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027088 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27089 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027090 sizeof(halUpdScanParams.status));
27091
27092 uStatus = halUpdScanParams.status;
27093
27094 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027095 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027096
27097 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027098 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027099
Jeff Johnsone7245742012-09-05 17:12:55 -070027100 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027101
27102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027103 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027104 halUpdScanParams.status);
27105
27106 /*Notify UMAC*/
27107 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27108
Jeff Johnsone7245742012-09-05 17:12:55 -070027109 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027110}
27111#endif // FEATURE_WLAN_SCAN_PNO
27112
27113#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027114WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027115WDI_8023MulticastListReq
27116(
27117 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27118 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27119 void* pUserData
27120)
27121{
27122 WDI_EventInfoType wdiEventData;
27123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27124
27125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027126 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027127
27128 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027129 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027130 ------------------------------------------------------------------------*/
27131 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27132 {
27133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27134 "WDI API call before module is initialized - Fail request");
27135
Jeff Johnsone7245742012-09-05 17:12:55 -070027136 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027137 }
27138
27139 /*------------------------------------------------------------------------
27140 Fill in Event data and post to the Main FSM
27141 ------------------------------------------------------------------------*/
27142 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027143 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027144 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027145 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027146 wdiEventData.pUserData = pUserData;
27147
27148 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27149}
27150
Jeff Johnsone7245742012-09-05 17:12:55 -070027151WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027152WDI_ReceiveFilterSetFilterReq
27153(
27154 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27155 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27156 void* pUserData
27157)
27158{
27159 WDI_EventInfoType wdiEventData;
27160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27161
27162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027163 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027164
27165 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027166 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027167 ------------------------------------------------------------------------*/
27168 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27169 {
27170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27171 "WDI API call before module is initialized - Fail request");
27172
Jeff Johnsone7245742012-09-05 17:12:55 -070027173 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027174 }
27175
27176 /*------------------------------------------------------------------------
27177 Fill in Event data and post to the Main FSM
27178 ------------------------------------------------------------------------*/
27179 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027180 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27181 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027182 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27183 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027184 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027185 wdiEventData.pUserData = pUserData;
27186
27187
27188 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27189}
27190
Jeff Johnsone7245742012-09-05 17:12:55 -070027191WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027192WDI_FilterMatchCountReq
27193(
27194 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27195 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27196 void* pUserData
27197)
27198{
27199 WDI_EventInfoType wdiEventData;
27200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27201
27202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027203 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027204
27205 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027206 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027207 ------------------------------------------------------------------------*/
27208 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27209 {
27210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27211 "WDI API call before module is initialized - Fail request");
27212
Jeff Johnsone7245742012-09-05 17:12:55 -070027213 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027214 }
27215
27216 /*------------------------------------------------------------------------
27217 Fill in Event data and post to the Main FSM
27218 ------------------------------------------------------------------------*/
27219 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027220 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027221 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027222 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027223 wdiEventData.pUserData = pUserData;
27224
27225
27226 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27227}
27228
Jeff Johnsone7245742012-09-05 17:12:55 -070027229WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027230WDI_ReceiveFilterClearFilterReq
27231(
27232 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27233 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27234 void* pUserData
27235)
27236{
27237 WDI_EventInfoType wdiEventData;
27238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27239
27240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027241 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027242
27243 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027244 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027245 ------------------------------------------------------------------------*/
27246 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27247 {
27248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27249 "WDI API call before module is initialized - Fail request");
27250
Jeff Johnsone7245742012-09-05 17:12:55 -070027251 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027252 }
27253
27254 /*------------------------------------------------------------------------
27255 Fill in Event data and post to the Main FSM
27256 ------------------------------------------------------------------------*/
27257 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027258 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027259 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027260 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027261 wdiEventData.pUserData = pUserData;
27262
27263
27264 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27265}
27266
27267/**
27268 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027269
27270 @param pWDICtx: pointer to the WLAN DAL context
27271 pEventData: pointer to the event information structure
27272
Jeff Johnson295189b2012-06-20 16:38:30 -070027273 @see
27274 @return Result of the function call
27275*/
27276WDI_Status
27277WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027278(
Jeff Johnson295189b2012-06-20 16:38:30 -070027279 WDI_ControlBlockType* pWDICtx,
27280 WDI_EventInfoType* pEventData
27281)
27282{
27283 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27284 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027285 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027286 wpt_uint16 usDataOffset = 0;
27287 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027288 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027289 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027290 wpt_uint8 ucCurrentBSSSesIdx = 0;
27291 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027292
27293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027294 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027295
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027296 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27297 if( NULL == pRcvFltMcAddrListType )
27298 {
27299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27300 "Failed to alloc in WDI_Process8023MulticastListReq");
27301 return WDI_STATUS_E_FAILURE;
27302 }
27303
Jeff Johnson295189b2012-06-20 16:38:30 -070027304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027306 -------------------------------------------------------------------------*/
27307 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027308 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027309 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027310 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027311 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27312 {
27313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027314 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027315 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027317 return WDI_STATUS_E_FAILURE;
27318 }
27319
27320 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27321 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27322 &pBSSSes);
27323 if ( NULL == pBSSSes )
27324 {
27325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027326 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027327 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027328 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027329 }
27330
27331 /*-----------------------------------------------------------------------
27332 Get message buffer
27333 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027334 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27335 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027336 sizeof(tHalRcvFltMcAddrListType),
27337 &pSendBuffer, &usDataOffset, &usSendSize))||
27338 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27339 {
27340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27341 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027342 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027343 pEventData, pwdiFltPktSetMcListReqParamsType,
27344 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027345 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027346 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027348 }
27349
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027350 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027351 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027352 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027353 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027354 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027355 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27356 sizeof(tSirMacAddr));
27357 }
27358
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027359 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027360 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027361 pRcvFltMcAddrListType,
27362 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027363
27364 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027365 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027366
27367
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027368 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027370 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027371 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027372 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027373 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027374 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027375}
27376
27377/**
27378 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027379
27380 @param pWDICtx: pointer to the WLAN DAL context
27381 pEventData: pointer to the event information structure
27382
Jeff Johnson295189b2012-06-20 16:38:30 -070027383 @see
27384 @return Result of the function call
27385*/
27386WDI_Status
27387WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027388(
Jeff Johnson295189b2012-06-20 16:38:30 -070027389 WDI_ControlBlockType* pWDICtx,
27390 WDI_EventInfoType* pEventData
27391)
27392{
27393 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27394 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027395 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027396 wpt_uint16 usDataOffset = 0;
27397 wpt_uint16 usSendSize = 0;
27398 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027399 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027400 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027401 wpt_uint8 ucCurrentBSSSesIdx = 0;
27402 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027403 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27404 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027405
27406 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027407 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027408
27409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027410 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027411 -------------------------------------------------------------------------*/
27412 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027413 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027414 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027415 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027416 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27417 {
27418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027419 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027420 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027421 return WDI_STATUS_E_FAILURE;
27422 }
27423
27424 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27425 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27426 &pBSSSes);
27427 if ( NULL == pBSSSes )
27428 {
27429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027430 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027432 }
27433
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027434 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27435 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027436
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027437 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27438 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27439 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27440
27441 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27442 usSessRcvPktFilterCfgSize);
27443
27444 if(NULL == pSessRcvPktFilterCfg)
27445 {
27446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27447 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027448 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027449 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027450 WDI_ASSERT(0);
27451 return WDI_STATUS_E_FAILURE;
27452 }
27453
27454 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27455
27456 /*-----------------------------------------------------------------------
27457 Get message buffer
27458 -----------------------------------------------------------------------*/
27459
27460 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27461 usSessRcvPktFilterCfgSize,
27462 &pSendBuffer, &usDataOffset, &usSendSize))||
27463 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27464 {
27465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27466 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027467 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027468 pEventData, pwdiSetRcvPktFilterReqInfo,
27469 wdiReceiveFilterSetFilterCb);
27470 WDI_ASSERT(0);
27471 wpalMemoryFree(pSessRcvPktFilterCfg);
27472 return WDI_STATUS_E_FAILURE;
27473 }
27474
27475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027476 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027477 usSendSize,pSessRcvPktFilterCfg);
27478
27479 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27480 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27481 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27482 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27483
27484 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27485
27486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27487 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27488 pSessRcvPktFilterCfg->filterType);
27489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27490 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27491 pSessRcvPktFilterCfg->coleasceTime);
27492
27493 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27494 {
27495 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27496 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27497 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27498 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27499 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27500 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27501 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27502 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27503
27504 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27505 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27506 8);
27507 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27508 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27509 8);
27510
27511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027512 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027513 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27514 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27515
27516 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027517 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027518 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27519 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27520
27521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027522 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027523 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27524 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27525 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27526 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27527 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27528 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27529
27530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027531 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027532 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27533 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27534 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27535 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27536 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27537 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27538 }
27539
27540 wpalMemoryCopy( pSendBuffer+usDataOffset,
27541 pSessRcvPktFilterCfg,
27542 usSessRcvPktFilterCfgSize);
27543
27544
27545 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27546 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27547
27548 wpalMemoryFree(pSessRcvPktFilterCfg);
27549
27550 }
27551 /*If SLM_SESSIONIZATION is not supported then do this */
27552 else
27553 {
27554 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27555 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27556 * sizeof(tHalRcvPktFilterParams));
27557
27558 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027559 usRcvPktFilterCfgSize);
27560
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027561 if(NULL == pRcvPktFilterCfg)
27562 {
27563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27564 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027565 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027566 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027567 WDI_ASSERT(0);
27568 return WDI_STATUS_E_FAILURE;
27569 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027570
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027571 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027572
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027573 /*-----------------------------------------------------------------------
27574 Get message buffer
27575 -----------------------------------------------------------------------*/
27576 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027577 usRcvPktFilterCfgSize,
27578 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027579 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27580 {
27581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027582 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027583 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027584 pEventData, pwdiSetRcvPktFilterReqInfo,
27585 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027586 WDI_ASSERT(0);
27587 wpalMemoryFree(pRcvPktFilterCfg);
27588 return WDI_STATUS_E_FAILURE;
27589 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027590
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027592 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027593 usSendSize,usRcvPktFilterCfgSize);
27594
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027595 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27596 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27597 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27598 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027599
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027601 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027602 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027604 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027605 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027606
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027607 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27608 {
27609 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27610 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27611 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27612 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27613 pRcvPktFilterCfg->paramsData[i].dataOffset =
27614 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27615 pRcvPktFilterCfg->paramsData[i].dataLength =
27616 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027617
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027618 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027619 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27620 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027621 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027622 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27623 8);
27624
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027626 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027627 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027628 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27629
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027631 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027632 pRcvPktFilterCfg->paramsData[i].dataOffset,
27633 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027634
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027635 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027636 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027637 pRcvPktFilterCfg->paramsData[i].compareData[0],
27638 pRcvPktFilterCfg->paramsData[i].compareData[1],
27639 pRcvPktFilterCfg->paramsData[i].compareData[2],
27640 pRcvPktFilterCfg->paramsData[i].compareData[3],
27641 pRcvPktFilterCfg->paramsData[i].compareData[4],
27642 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027643
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027645 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027646 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27647 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27648 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27649 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27650 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27651 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27652 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027653
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027654 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027655 pRcvPktFilterCfg,
27656 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027657
27658
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027659 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27660 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027661
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027663 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027664 wpalMemoryFree(pRcvPktFilterCfg);
27665 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027667 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027668 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027669 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027670 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027671 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027672}
27673
27674/**
27675 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027676
27677 @param pWDICtx: pointer to the WLAN DAL context
27678 pEventData: pointer to the event information structure
27679
Jeff Johnson295189b2012-06-20 16:38:30 -070027680 @see
27681 @return Result of the function call
27682*/
27683WDI_Status
27684WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027685(
Jeff Johnson295189b2012-06-20 16:38:30 -070027686 WDI_ControlBlockType* pWDICtx,
27687 WDI_EventInfoType* pEventData
27688)
27689{
27690 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27691 NULL;
27692 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27693 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027694 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027695 wpt_uint16 usDataOffset = 0;
27696 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027697 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27698 wpt_uint8 ucCurrentBSSSesIdx = 0;
27699 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027700
27701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027702 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027703
27704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027705 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027706 -------------------------------------------------------------------------*/
27707 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027708 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027709 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027710 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027711 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27712 {
27713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027717 }
27718
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027719 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27720 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27721 &pBSSSes);
27722 if ( NULL == pBSSSes )
27723 {
27724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027725 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027726 return WDI_STATUS_E_FAILURE;
27727 }
27728
Jeff Johnson295189b2012-06-20 16:38:30 -070027729 /*-----------------------------------------------------------------------
27730 Get message buffer
27731 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027732 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27733 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027734 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027735 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027736 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027737 {
27738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27739 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027740 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027741 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27742 wdiFilterMatchCountCb);
27743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027745 }
27746
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027747 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27748 wpalMemoryCopy( pSendBuffer+usDataOffset,
27749 &rcvFltPktMatchCntReqParam,
27750 sizeof(rcvFltPktMatchCntReqParam));
27751
Jeff Johnson295189b2012-06-20 16:38:30 -070027752 //
27753 // Don't need to fill send buffer other than header
27754 //
27755 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027756 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027757
27758
27759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027760 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027761 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027762 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27763 wdiFilterMatchCountCb,
27764 pEventData->pUserData,
27765 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027766}
27767
27768/**
27769 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027770
27771 @param pWDICtx: pointer to the WLAN DAL context
27772 pEventData: pointer to the event information structure
27773
Jeff Johnson295189b2012-06-20 16:38:30 -070027774 @see
27775 @return Result of the function call
27776*/
27777WDI_Status
27778WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027779(
Jeff Johnson295189b2012-06-20 16:38:30 -070027780 WDI_ControlBlockType* pWDICtx,
27781 WDI_EventInfoType* pEventData
27782)
Jeff Johnsone7245742012-09-05 17:12:55 -070027783{
Jeff Johnson295189b2012-06-20 16:38:30 -070027784 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27785 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027786 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027787 wpt_uint16 usDataOffset = 0;
27788 wpt_uint16 usSendSize = 0;
27789 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027790 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027791 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027792
27793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027794 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027795
27796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027797 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027798 -------------------------------------------------------------------------*/
27799 if (( NULL == pEventData ) ||
27800 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27801 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027802 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027803 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27804 {
27805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027806 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027808 return WDI_STATUS_E_FAILURE;
27809 }
27810
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027811 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027812 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27813 &pBSSSes);
27814 if ( NULL == pBSSSes )
27815 {
27816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027817 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027819 }
27820
27821 /*-----------------------------------------------------------------------
27822 Get message buffer
27823 -----------------------------------------------------------------------*/
27824 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027825 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027826 sizeof(tHalRcvFltPktClearParam),
27827 &pSendBuffer, &usDataOffset, &usSendSize))||
27828 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27829 {
27830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27831 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027832 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027833 pEventData, pwdiRcvFltPktClearReqParamsType,
27834 wdiRcvFltPktClearFilterCb);
27835 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027836 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027837 }
27838
27839
27840 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027841 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027842 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027843 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027844
Jeff Johnsone7245742012-09-05 17:12:55 -070027845 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27846 wpalMemoryCopy( pSendBuffer+usDataOffset,
27847 &rcvFltPktClearParam,
27848 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027849
27850 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027851 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027852
27853
27854 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027855 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027856 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027857 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027858 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027859 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027860}
27861
27862/**
27863 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027864
27865 @param pWDICtx: pointer to the WLAN DAL context
27866 pEventData: pointer to the event information structure
27867
Jeff Johnson295189b2012-06-20 16:38:30 -070027868 @see
27869 @return Result of the function call
27870*/
27871WDI_Status
27872WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027873(
Jeff Johnson295189b2012-06-20 16:38:30 -070027874 WDI_ControlBlockType* pWDICtx,
27875 WDI_EventInfoType* pEventData
27876)
27877{
Jeff Johnson295189b2012-06-20 16:38:30 -070027878 eHalStatus halStatus;
27879 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027880 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27881 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27883
27884 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027885 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027886
27887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027888 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027889 -------------------------------------------------------------------------*/
27890 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27891 ( NULL == pEventData->pEventData ))
27892 {
27893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027897 }
27898
Jeff Johnsone7245742012-09-05 17:12:55 -070027899 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027900
27901 /*-------------------------------------------------------------------------
27902 Extract response and send it to UMAC
27903 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027904 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27905 {
27906 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27907 pEventData->pEventData,
27908 sizeof(halRcvFltPktSetMcListRsp));
27909
27910 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27911 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27912 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27913 halRcvFltPktSetMcListRsp.bssIdx;
27914 }
27915 else
27916 {
27917 halStatus = *((eHalStatus*)pEventData->pEventData);
27918 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27919 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027920
27921 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027922 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027923
Jeff Johnsone7245742012-09-05 17:12:55 -070027924 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027925}
27926
27927/**
27928 @brief Process Set Rsp function (called when a
27929 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027930
27931 @param pWDICtx: pointer to the WLAN DAL context
27932 pEventData: pointer to the event information structure
27933
Jeff Johnson295189b2012-06-20 16:38:30 -070027934 @see
27935 @return Result of the function call
27936*/
27937WDI_Status
27938WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027939(
Jeff Johnson295189b2012-06-20 16:38:30 -070027940 WDI_ControlBlockType* pWDICtx,
27941 WDI_EventInfoType* pEventData
27942)
27943{
Jeff Johnson295189b2012-06-20 16:38:30 -070027944 eHalStatus halStatus;
27945 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027946 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27947 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27949
27950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027951 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027952
27953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027955 -------------------------------------------------------------------------*/
27956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27957 ( NULL == pEventData->pEventData ))
27958 {
27959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027963 }
27964
27965 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027966 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027967
27968 /*-------------------------------------------------------------------------
27969 Extract response and send it to UMAC
27970 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027971 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27972 {
27973 wpalMemoryCopy( &halSetPktFilterRspParams,
27974 pEventData->pEventData,
27975 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027976
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027977 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27978 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27979 }
27980 else
27981 {
27982 halStatus = *((eHalStatus*)pEventData->pEventData);
27983 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27984 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027985 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027986 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027987
Jeff Johnsone7245742012-09-05 17:12:55 -070027988 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027989}
27990
27991/**
27992 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027993
27994 @param pWDICtx: pointer to the WLAN DAL context
27995 pEventData: pointer to the event information structure
27996
Jeff Johnson295189b2012-06-20 16:38:30 -070027997 @see
27998 @return Result of the function call
27999*/
28000WDI_Status
28001WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028002(
Jeff Johnson295189b2012-06-20 16:38:30 -070028003 WDI_ControlBlockType* pWDICtx,
28004 WDI_EventInfoType* pEventData
28005)
28006{
Jeff Johnson295189b2012-06-20 16:38:30 -070028007 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028008 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028009 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28010 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028011
28012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28013
28014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028015 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028016
28017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028019 -------------------------------------------------------------------------*/
28020 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28021 ( NULL == pEventData->pEventData ))
28022 {
28023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028024 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028027 }
28028
Jeff Johnsone7245742012-09-05 17:12:55 -070028029 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028030
28031 /*-------------------------------------------------------------------------
28032 Extract response and send it to UMAC
28033 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028034 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28035 {
28036 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28037 pEventData->pEventData,
28038 sizeof(halRcvFltrPktMatachRsp));
28039
28040 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28041 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28042 }
28043 else
28044 {
28045 halStatus = *((eHalStatus*)pEventData->pEventData);
28046 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28047 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028048
28049 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028050 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028051
Jeff Johnsone7245742012-09-05 17:12:55 -070028052 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028053}
28054
28055/**
28056 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028057
28058 @param pWDICtx: pointer to the WLAN DAL context
28059 pEventData: pointer to the event information structure
28060
Jeff Johnson295189b2012-06-20 16:38:30 -070028061 @see
28062 @return Result of the function call
28063*/
28064WDI_Status
28065WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028066(
Jeff Johnson295189b2012-06-20 16:38:30 -070028067 WDI_ControlBlockType* pWDICtx,
28068 WDI_EventInfoType* pEventData
28069)
28070{
Jeff Johnson295189b2012-06-20 16:38:30 -070028071 eHalStatus halStatus;
28072 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028073 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28074 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28076
28077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028078 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028079
28080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028082 -------------------------------------------------------------------------*/
28083 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28084 ( NULL == pEventData->pEventData ))
28085 {
28086 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028090 }
28091
28092 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028093 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028094
28095 /*-------------------------------------------------------------------------
28096 Extract response and send it to UMAC
28097 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028098 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28099 {
28100 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28101 pEventData->pEventData,
28102 sizeof(halRcvFltPktClearRspMsg));
28103
28104 wdiRcvFltPktClearRspParamsType.wdiStatus =
28105 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28106 wdiRcvFltPktClearRspParamsType.bssIdx =
28107 halRcvFltPktClearRspMsg.bssIdx;
28108 }
28109 else
28110 {
28111 halStatus = *((eHalStatus*)pEventData->pEventData);
28112 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28113 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028114
28115 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028116 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028117
Jeff Johnsone7245742012-09-05 17:12:55 -070028118 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028119}
28120#endif // WLAN_FEATURE_PACKET_FILTERING
28121
28122/**
28123 @brief Process Shutdown Rsp function
28124 There is no shutdown response comming from HAL
28125 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028126
Jeff Johnson295189b2012-06-20 16:38:30 -070028127 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028128 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028129
28130 @see
28131 @return Result of the function call
28132*/
28133WDI_Status
28134WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028135(
Jeff Johnson295189b2012-06-20 16:38:30 -070028136 WDI_ControlBlockType* pWDICtx,
28137 WDI_EventInfoType* pEventData
28138)
28139{
28140 /*There is no shutdown response comming from HAL - function just kept for
28141 simmetry */
28142 WDI_ASSERT(0);
28143 return WDI_STATUS_SUCCESS;
28144}/*WDI_ProcessShutdownRsp*/
28145
28146/**
28147 @brief WDI_SetPowerParamsReq
28148
Jeff Johnsone7245742012-09-05 17:12:55 -070028149 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028150 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028151
Jeff Johnson295189b2012-06-20 16:38:30 -070028152 wdiPowerParamsCb: callback for passing back the response
28153 of the Set Power Params operation received from the
28154 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028155
Jeff Johnson295189b2012-06-20 16:38:30 -070028156 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028157 callback
28158
Jeff Johnson295189b2012-06-20 16:38:30 -070028159 @return Result of the function call
28160*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028161WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028162WDI_SetPowerParamsReq
28163(
28164 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28165 WDI_SetPowerParamsCb wdiPowerParamsCb,
28166 void* pUserData
28167)
28168{
28169 WDI_EventInfoType wdiEventData;
28170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28171
28172 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028173 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028174 ------------------------------------------------------------------------*/
28175 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28176 {
28177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28178 "WDI API call before module is initialized - Fail request");
28179
Jeff Johnsone7245742012-09-05 17:12:55 -070028180 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028181 }
28182
28183 /*------------------------------------------------------------------------
28184 Fill in Event data and post to the Main FSM
28185 ------------------------------------------------------------------------*/
28186 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028187 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028188 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028189 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028190 wdiEventData.pUserData = pUserData;
28191
28192 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28193}/*WDI_SetPowerParamsReq*/
28194
28195/**
28196 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028197
28198 @param pWDICtx: pointer to the WLAN DAL context
28199 pEventData: pointer to the event information structure
28200
Jeff Johnson295189b2012-06-20 16:38:30 -070028201 @see
28202 @return Result of the function call
28203*/
28204WDI_Status
28205WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028206(
Jeff Johnson295189b2012-06-20 16:38:30 -070028207 WDI_ControlBlockType* pWDICtx,
28208 WDI_EventInfoType* pEventData
28209)
28210{
28211 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28212 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028213 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028214 wpt_uint16 usDataOffset = 0;
28215 wpt_uint16 usSendSize = 0;
28216 tSetPowerParamsType powerParams;
28217
28218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028220 -------------------------------------------------------------------------*/
28221 if (( NULL == pEventData ) ||
28222 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28223 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28224 {
28225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028226 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028229 }
28230
28231 /*-----------------------------------------------------------------------
28232 Get message buffer
28233 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028234 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028235 sizeof(powerParams),
28236 &pSendBuffer, &usDataOffset, &usSendSize))||
28237 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28238 {
28239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028240 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028241 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028244 }
28245
28246 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028247 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028248 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28249
28250 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028251 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028252 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28253
28254 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028255 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028256 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28257
28258 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028259 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028260 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28261
28262 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028263 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028264 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28265
28266 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028267 powerParams.uBETInterval =
28268 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028269
Yue Mac24062f2013-05-13 17:01:29 -070028270 /* MAX LI for modulated DTIM */
28271 powerParams.uMaxLIModulatedDTIM =
28272 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028273
28274 wpalMemoryCopy( pSendBuffer+usDataOffset,
28275 &powerParams,
28276 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028277
28278 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028279 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028280
28281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028282 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028283 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028284 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28285 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028286}
28287
28288/**
28289 @brief Process Power Params Rsp function (called when a
28290 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028291
28292 @param pWDICtx: pointer to the WLAN DAL context
28293 pEventData: pointer to the event information structure
28294
Jeff Johnson295189b2012-06-20 16:38:30 -070028295 @see
28296 @return Result of the function call
28297*/
28298WDI_Status
28299WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028300(
Jeff Johnson295189b2012-06-20 16:38:30 -070028301 WDI_ControlBlockType* pWDICtx,
28302 WDI_EventInfoType* pEventData
28303)
28304{
28305 WDI_Status wdiStatus;
28306 eHalStatus halStatus;
28307 WDI_SetPowerParamsCb wdiPowerParamsCb;
28308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28309
28310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028312 -------------------------------------------------------------------------*/
28313 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28314 ( NULL == pEventData->pEventData ))
28315 {
28316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028317 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028320 }
28321
Jeff Johnsone7245742012-09-05 17:12:55 -070028322 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028323
28324 /*-------------------------------------------------------------------------
28325 Extract response and send it to UMAC
28326 -------------------------------------------------------------------------*/
28327 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028328 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028329
28330 /*Notify UMAC*/
28331 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28332
Jeff Johnsone7245742012-09-05 17:12:55 -070028333 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028334}/*WDI_ProcessSetPowerParamsRsp*/
28335
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028336/**
28337 @brief WDI_dhcpStartInd
28338 Host will send an event to the FW when DHCP is initiated
28339
28340 @param
28341 WDI_DHCPInd: DHCP Indication
28342 @see
28343 @return Result of the function call
28344*/
28345WDI_Status
28346WDI_dhcpStartInd
28347(
28348 WDI_DHCPInd *wdiDHCPInd
28349)
28350{
28351 WDI_EventInfoType wdiEventData;
28352
28353 /*------------------------------------------------------------------------
28354 Sanity Check
28355 ------------------------------------------------------------------------*/
28356 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28357 {
28358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28359 "WDI API call before module is initialized - Fail request");
28360
28361 return WDI_STATUS_E_NOT_ALLOWED;
28362 }
28363
28364 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28365 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028366 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028367 wdiEventData.pCBfnc = NULL;
28368 wdiEventData.pUserData = NULL;
28369
28370 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28371}
28372
28373
28374/**
28375 @brief WDI_dhcpStopInd
28376 Host will send an event to the FW when DHCP is completed
28377
28378 @param
28379 WDI_DHCPInd: DHCP Indication
28380 @see
28381 @return Result of the function call
28382*/
28383WDI_Status
28384WDI_dhcpStopInd
28385(
28386 WDI_DHCPInd *wdiDHCPInd
28387)
28388{
28389 WDI_EventInfoType wdiEventData;
28390
28391 /*------------------------------------------------------------------------
28392 Sanity Check
28393 ------------------------------------------------------------------------*/
28394 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28395 {
28396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28397 "WDI API call before module is initialized - Fail request");
28398
28399 return WDI_STATUS_E_NOT_ALLOWED;
28400 }
28401
28402 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28403 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028404 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028405 wdiEventData.pCBfnc = NULL;
28406 wdiEventData.pUserData = NULL;
28407
28408 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28409}
28410
28411
28412/**
28413 @brief Process DHCP Start Indication message and post it to HAL
28414
28415 @param pWDICtx: pointer to the WLAN DAL context
28416 pEventData: pointer to the event information structure
28417
28418 @see
28419 @return Result of the function call
28420*/
28421WDI_Status
28422WDI_ProcessDHCPStartInd
28423(
28424 WDI_ControlBlockType* pWDICtx,
28425 WDI_EventInfoType* pEventData
28426)
28427{
28428 wpt_uint8* pSendBuffer = NULL;
28429 wpt_uint16 usDataOffset = 0;
28430 wpt_uint16 usSendSize = 0;
28431 wpt_uint16 usLen = 0;
28432 WDI_DHCPInd* pwdiDHCPInd = NULL;
28433 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028434 WDI_Status wdiStatus;
28435
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028436
28437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28438
28439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28440 "%s", __func__);
28441
28442 /*-------------------------------------------------------------------------
28443 Sanity check
28444 -------------------------------------------------------------------------*/
28445 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28446 {
28447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28448 "%s: Invalid parameters", __func__);
28449 WDI_ASSERT(0);
28450 return WDI_STATUS_E_FAILURE;
28451 }
28452 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28453 /*-----------------------------------------------------------------------
28454 Get message buffer
28455 -----------------------------------------------------------------------*/
28456
28457 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28458 WDI_DHCP_START_IND,
28459 sizeof(tDHCPInfo),
28460 &pSendBuffer, &usDataOffset, &usSendSize))||
28461 ( usSendSize < (usDataOffset + usLen )))
28462 {
28463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28464 "Unable to get send buffer in DHCP Start req %p ",
28465 pEventData);
28466 WDI_ASSERT(0);
28467 return WDI_STATUS_E_FAILURE;
28468 }
28469
Sandeep Puligillaee789512014-02-13 19:14:52 +053028470 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028471 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28472 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28473 WDI_MAC_ADDR_LEN);
28474
28475 pWDICtx->pReqStatusUserData = NULL;
28476 pWDICtx->pfncRspCB = NULL;
28477
28478 /*-------------------------------------------------------------------------
28479 Send DHCP Start Indication to HAL
28480 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028481 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28482 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028483}/*WDI_ProcessDHCPStartInd*/
28484
28485/**
28486 @brief Process DHCP Stop indication message and post it to HAL
28487
28488 @param pWDICtx: pointer to the WLAN DAL context
28489 pEventData: pointer to the event information structure
28490
28491 @see
28492 @return Result of the function call
28493*/
28494WDI_Status
28495WDI_ProcessDHCPStopInd
28496(
28497 WDI_ControlBlockType* pWDICtx,
28498 WDI_EventInfoType* pEventData
28499)
28500{
28501 wpt_uint8* pSendBuffer = NULL;
28502 wpt_uint16 usDataOffset = 0;
28503 wpt_uint16 usSendSize = 0;
28504 wpt_uint16 usLen = 0;
28505 WDI_DHCPInd* pwdiDHCPInd = NULL;
28506 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028507 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028508
28509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28510
28511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28512 "%s", __func__);
28513
28514 /*-------------------------------------------------------------------------
28515 Sanity check
28516 -------------------------------------------------------------------------*/
28517
28518 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28519 {
28520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28521 "%s: Invalid parameters", __func__);
28522 WDI_ASSERT(0);
28523 return WDI_STATUS_E_FAILURE;
28524 }
28525 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28526 /*-----------------------------------------------------------------------
28527 Get message buffer
28528 -----------------------------------------------------------------------*/
28529
28530 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28531 WDI_DHCP_STOP_IND,
28532 sizeof(tDHCPInfo),
28533 &pSendBuffer, &usDataOffset, &usSendSize))||
28534 ( usSendSize < (usDataOffset + usLen )))
28535 {
28536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28537 "Unable to get send buffer in DHCP Start req %p ",
28538 pEventData);
28539 WDI_ASSERT(0);
28540 return WDI_STATUS_E_FAILURE;
28541 }
28542
Sandeep Puligillaee789512014-02-13 19:14:52 +053028543 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028544 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28545 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28546 WDI_MAC_ADDR_LEN);
28547
28548 pWDICtx->pReqStatusUserData = NULL;
28549 pWDICtx->pfncRspCB = NULL;
28550 /*-------------------------------------------------------------------------
28551 Send DHCP Stop indication to HAL
28552 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028553 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28554 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028555
28556}/*WDI_ProcessDHCPStopInd*/
28557
28558
Jeff Johnson295189b2012-06-20 16:38:30 -070028559#ifdef WLAN_FEATURE_GTK_OFFLOAD
28560/**
28561 @brief WDI_GTKOffloadReq will be called when the upper MAC
28562 wants to set GTK Rekey Counter while in power save. Upon
28563 the call of this API the WLAN DAL will pack and send a
28564 HAL GTK offload request message to the lower RIVA
28565 sub-system if DAL is in state STARTED.
28566
28567 In state BUSY this request will be queued. Request won't
28568 be allowed in any other state.
28569
28570 WDI_PostAssocReq must have been called.
28571
28572 @param pwdiGtkOffloadParams: the GTK offload as specified
28573 by the Device Interface
28574
28575 wdiGtkOffloadCb: callback for passing back the response
28576 of the GTK offload operation received from the device
28577
28578 pUserData: user data will be passed back with the
28579 callback
28580
28581 @see WDI_PostAssocReq
28582 @return Result of the function call
28583*/
28584WDI_Status
28585WDI_GTKOffloadReq
28586(
28587 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28588 WDI_GtkOffloadCb wdiGtkOffloadCb,
28589 void* pUserData
28590)
28591{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028592 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28594
28595 /*------------------------------------------------------------------------
28596 Sanity Check
28597 ------------------------------------------------------------------------*/
28598 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28599 {
28600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28601 "WDI API call before module is initialized - Fail request");
28602
28603 return WDI_STATUS_E_NOT_ALLOWED;
28604 }
28605
28606 /*------------------------------------------------------------------------
28607 Fill in Event data and post to the Main FSM
28608 ------------------------------------------------------------------------*/
28609 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28610 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028611 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028612 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28613 wdiEventData.pUserData = pUserData;
28614
28615 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28616}
28617
28618
28619/**
28620 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28621 MAC wants to get GTK Rekey Counter while in power save.
28622 Upon the call of this API the WLAN DAL will pack and
28623 send a HAL GTK offload request message to the lower RIVA
28624 sub-system if DAL is in state STARTED.
28625
28626 In state BUSY this request will be queued. Request won't
28627 be allowed in any other state.
28628
28629 WDI_PostAssocReq must have been called.
28630
28631 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28632 Information Message as specified by the
28633 Device Interface
28634
28635 wdiGtkOffloadGetInfoCb: callback for passing back the
28636 response of the GTK offload operation received from the
28637 device
28638
28639 pUserData: user data will be passed back with the
28640 callback
28641
28642 @see WDI_PostAssocReq
28643 @return Result of the function call
28644*/
28645WDI_Status
28646WDI_GTKOffloadGetInfoReq
28647(
28648 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28649 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28650 void* pUserData
28651)
28652{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028653 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28655
28656 /*------------------------------------------------------------------------
28657 Sanity Check
28658 ------------------------------------------------------------------------*/
28659 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28660 {
28661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28662 "WDI API call before module is initialized - Fail request");
28663
28664 return WDI_STATUS_E_NOT_ALLOWED;
28665 }
28666
28667 /*------------------------------------------------------------------------
28668 Fill in Event data and post to the Main FSM
28669 ------------------------------------------------------------------------*/
28670 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28671 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28672 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28673 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28674 wdiEventData.pUserData = pUserData;
28675
28676 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28677}
28678
28679
28680/**
28681 @brief Process set GTK Offload Request function
28682
28683 @param pWDICtx: pointer to the WLAN DAL context
28684 pEventData: pointer to the event information structure
28685
28686 @see
28687 @return Result of the function call
28688*/
28689WDI_Status
28690WDI_ProcessGTKOffloadReq
28691(
28692 WDI_ControlBlockType* pWDICtx,
28693 WDI_EventInfoType* pEventData
28694)
28695{
28696 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28697 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28698 wpt_uint8* pSendBuffer = NULL;
28699 wpt_uint16 usDataOffset = 0;
28700 wpt_uint16 usSendSize = 0;
28701 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028702 wpt_uint8 ucCurrentSessionId = 0;
28703 WDI_BSSSessionType* pBSSSes = NULL;
28704
Jeff Johnson295189b2012-06-20 16:38:30 -070028705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28706
28707 /*-------------------------------------------------------------------------
28708 Sanity check
28709 -------------------------------------------------------------------------*/
28710 if (( NULL == pEventData ) ||
28711 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28712 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28713 {
28714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028715 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028716 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028717 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028718 }
28719
28720 /*-----------------------------------------------------------------------
28721 Get message buffer
28722 -----------------------------------------------------------------------*/
28723 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28724 sizeof(gtkOffloadReqParams),
28725 &pSendBuffer, &usDataOffset, &usSendSize))||
28726 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28727 {
28728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028729 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028730 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28731 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028732 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028733 }
28734
28735 //
28736 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28737 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028738 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28739 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28740 &pBSSSes);
28741 if ( NULL == pBSSSes )
28742 {
28743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028744 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028745 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028746 }
28747
28748 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28749
Jeff Johnson295189b2012-06-20 16:38:30 -070028750 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28751 // Copy KCK
28752 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28753 // Copy KEK
28754 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28755 // Copy KeyReplayCounter
28756 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28757
28758 wpalMemoryCopy( pSendBuffer+usDataOffset,
28759 &gtkOffloadReqParams,
28760 sizeof(gtkOffloadReqParams));
28761
28762 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28763 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28764
28765 /*-------------------------------------------------------------------------
28766 Send Get STA Request to HAL
28767 -------------------------------------------------------------------------*/
28768 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28769 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028770
28771fail:
28772 // Release the message buffer so we don't leak
28773 wpalMemoryFree(pSendBuffer);
28774
28775failRequest:
28776 //WDA should have failure check to avoid the memory leak
28777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028778}
28779
28780
28781/**
28782 @brief Process GTK Offload Get Information Request function
28783
28784 @param pWDICtx: pointer to the WLAN DAL context
28785 pEventData: pointer to the event information structure
28786
28787 @see
28788 @return Result of the function call
28789*/
28790WDI_Status
28791WDI_ProcessGTKOffloadGetInfoReq
28792(
28793 WDI_ControlBlockType* pWDICtx,
28794 WDI_EventInfoType* pEventData
28795)
28796{
28797 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28798 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28799 wpt_uint8* pSendBuffer = NULL;
28800 wpt_uint16 usDataOffset = 0;
28801 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028802 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28803 wpt_uint8 ucCurrentSessionId = 0;
28804 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028805
28806 /*-------------------------------------------------------------------------
28807 Sanity check
28808 -------------------------------------------------------------------------*/
28809 if (( NULL == pEventData ) ||
28810 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28811 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28812 {
28813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028814 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028815 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028816 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028817 }
28818
28819 /*-----------------------------------------------------------------------
28820 Get message buffer
28821 -----------------------------------------------------------------------*/
28822 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028823 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028824 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028825 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028826 {
28827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028828 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028829 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28830 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028831 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028832 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028833 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28834 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28835 &pBSSSes);
28836 if ( NULL == pBSSSes )
28837 {
28838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028839 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028840 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028841 }
28842 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028843
28844 //
28845 // Don't need to fill send buffer other than header
28846 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028847 wpalMemoryCopy( pSendBuffer+usDataOffset,
28848 &halGtkOffloadGetInfoReqParams,
28849 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028850
28851 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28852 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28853
28854 /*-------------------------------------------------------------------------
28855 Send Get STA Request to HAL
28856 -------------------------------------------------------------------------*/
28857 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28858 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028859fail:
28860 // Release the message buffer so we don't leak
28861 wpalMemoryFree(pSendBuffer);
28862
28863failRequest:
28864 //WDA should have failure check to avoid the memory leak
28865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028866}
28867
28868/**
28869 @brief Process host offload Rsp function (called when a
28870 response is being received over the bus from HAL)
28871
28872 @param pWDICtx: pointer to the WLAN DAL context
28873 pEventData: pointer to the event information structure
28874
28875 @see
28876 @return Result of the function call
28877*/
28878WDI_Status
28879WDI_ProcessGtkOffloadRsp
28880(
28881 WDI_ControlBlockType* pWDICtx,
28882 WDI_EventInfoType* pEventData
28883)
28884{
Jeff Johnson295189b2012-06-20 16:38:30 -070028885 eHalStatus halStatus;
28886 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028887 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28888 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028889
28890 /*-------------------------------------------------------------------------
28891 Sanity check
28892 -------------------------------------------------------------------------*/
28893 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28894 ( NULL == pEventData->pEventData))
28895 {
28896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028897 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028898 WDI_ASSERT(0);
28899 return WDI_STATUS_E_FAILURE;
28900 }
28901
Wilson Yang00256342013-10-10 23:13:38 -070028902 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28903
Jeff Johnson295189b2012-06-20 16:38:30 -070028904 /*-------------------------------------------------------------------------
28905 Extract response and send it to UMAC
28906 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028907 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28908 {
28909 wpalMemoryCopy( &halGtkOffloadRspParams,
28910 pEventData->pEventData,
28911 sizeof(halGtkOffloadRspParams));
28912
28913 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028914 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028915 wdiGtkOffloadRsparams.bssIdx =
28916 halGtkOffloadRspParams.bssIdx;
28917 }
28918 else
28919 {
28920 halStatus = *((eHalStatus*)pEventData->pEventData);
28921 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28922 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028923
28924 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028925 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028926
28927 return WDI_STATUS_SUCCESS;
28928}
28929
28930/**
28931 @brief Process GTK Offload Get Information Response function
28932
28933 @param pWDICtx: pointer to the WLAN DAL context
28934 pEventData: pointer to the event information structure
28935
28936 @see
28937 @return Result of the function call
28938*/
28939WDI_Status
28940WDI_ProcessGTKOffloadGetInfoRsp
28941(
28942 WDI_ControlBlockType* pWDICtx,
28943 WDI_EventInfoType* pEventData
28944)
28945{
Jeff Johnson295189b2012-06-20 16:38:30 -070028946 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028947 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028948 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28949 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028950 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028951
Jeff Johnson295189b2012-06-20 16:38:30 -070028952
28953 /*-------------------------------------------------------------------------
28954 Sanity check
28955 -------------------------------------------------------------------------*/
28956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28957 ( NULL == pEventData->pEventData ))
28958 {
28959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028961 WDI_ASSERT(0);
28962 return WDI_STATUS_E_FAILURE;
28963 }
28964
Wilson Yang00256342013-10-10 23:13:38 -070028965 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28966
28967 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028968 Extract response and send it to UMAC
28969 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028970 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28971 {
28972 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28973 pEventData->pEventData,
28974 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028975
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028976 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028977 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028978 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28979 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28980 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28981 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28982 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28983 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28984 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28985 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028986
28987 wpalMutexAcquire(&pWDICtx->wptMutex);
28988 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28989 &pBSSSes);
28990
28991 if ( NULL == pBSSSes )
28992 {
28993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28994 "Association sequence for this BSS does not exist or "
28995 "association no longer in progress - mysterious HAL response");
28996 wpalMutexRelease(&pWDICtx->wptMutex);
28997 return WDI_STATUS_E_NOT_ALLOWED;
28998 }
28999
29000 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29001 sizeof (wpt_macAddr));
29002 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029003 }
29004 else
29005 {
29006 halStatus = *((eHalStatus*)pEventData->pEventData);
29007 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29008 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029009 /*Notify UMAC*/
29010 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29011 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029012 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029013
29014 return WDI_STATUS_SUCCESS;
29015}
29016#endif // WLAN_FEATURE_GTK_OFFLOAD
29017
29018#ifdef WLAN_WAKEUP_EVENTS
29019WDI_Status
29020WDI_ProcessWakeReasonInd
29021(
29022 WDI_ControlBlockType* pWDICtx,
29023 WDI_EventInfoType* pEventData
29024)
29025{
29026 WDI_LowLevelIndType *pWdiInd;
29027 tpWakeReasonParams pWakeReasonParams;
29028 wpt_uint32 allocSize = 0;
29029
29030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029031 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029032
29033 /*-------------------------------------------------------------------------
29034 Sanity check
29035 -------------------------------------------------------------------------*/
29036 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29037 ( NULL == pEventData->pEventData ))
29038 {
29039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029041 WDI_ASSERT( 0 );
29042 return WDI_STATUS_E_FAILURE;
29043 }
29044
29045 /*-------------------------------------------------------------------------
29046 Extract indication and send it to UMAC
29047 -------------------------------------------------------------------------*/
29048 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
29049
29050 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
29051
29052 //Allocate memory for WDI_WakeReasonIndType structure
29053 pWdiInd = wpalMemoryAllocate(allocSize) ;
29054
29055 if(NULL == pWdiInd)
29056 {
29057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029058 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029059 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029060 WDI_ASSERT(0);
29061 return WDI_STATUS_E_FAILURE;
29062 }
29063
29064 wpalMemoryZero(pWdiInd, allocSize);
29065
29066 /* Fill in the indication parameters*/
29067 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29068 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29069 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29070 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29071 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29072 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29073 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29074 &(pWakeReasonParams->aDataStart[0]),
29075 pWakeReasonParams->ulStoredDataLen);
29076
ltimariub77f24b2013-01-24 18:54:33 -080029077
29078 if ( pWDICtx->wdiLowLevelIndCB )
29079 {
29080 /*Notify UMAC*/
29081 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29082 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029083
29084 //Free memory allocated for WDI_WakeReasonIndType structure
29085 wpalMemoryFree(pWdiInd);
29086
29087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029088 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029089
29090 return WDI_STATUS_SUCCESS;
29091}
29092#endif // WLAN_WAKEUP_EVENTS
29093
29094void WDI_GetWcnssCompiledApiVersion
29095(
29096 WDI_WlanVersionType *pWcnssApiVersion
29097)
29098{
29099 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29100 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29101 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29102 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29103}
29104
29105/**
29106 @brief Process Set TM Level Rsp function (called when a
29107 response is being received over the bus from HAL)
29108
29109 @param pWDICtx: pointer to the WLAN DAL context
29110 pEventData: pointer to the event information structure
29111
29112 @see
29113 @return Result of the function call
29114*/
29115WDI_Status
29116WDI_ProcessSetTmLevelRsp
29117(
29118 WDI_ControlBlockType* pWDICtx,
29119 WDI_EventInfoType* pEventData
29120)
29121{
29122 WDI_Status wdiStatus;
29123 eHalStatus halStatus;
29124 WDI_SetTmLevelCb wdiSetTmLevelCb;
29125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29126
29127 /*-------------------------------------------------------------------------
29128 Sanity check
29129 -------------------------------------------------------------------------*/
29130 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29131 ( NULL == pEventData->pEventData ))
29132 {
29133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029134 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029135 WDI_ASSERT(0);
29136 return WDI_STATUS_E_FAILURE;
29137 }
29138
29139 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29140
29141 /*-------------------------------------------------------------------------
29142 Extract response and send it to UMAC
29143 -------------------------------------------------------------------------*/
29144 halStatus = *((eHalStatus*)pEventData->pEventData);
29145 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29146
29147 /*Notify UMAC*/
29148 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29149
29150 return WDI_STATUS_SUCCESS;
29151}/*WDI_ProcessSetTmLevelRsp*/
29152
29153/**
29154 @brief Process Set Thermal Mitigation level Changed request
29155
29156 @param pWDICtx: pointer to the WLAN DAL context
29157 pEventData: pointer to the event information structure
29158
29159 @see
29160 @return Result of the function call
29161*/
29162WDI_Status
29163WDI_ProcessSetTmLevelReq
29164(
29165 WDI_ControlBlockType* pWDICtx,
29166 WDI_EventInfoType* pEventData
29167)
29168{
29169 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29170 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29171 wpt_uint8* pSendBuffer = NULL;
29172 wpt_uint16 usDataOffset = 0;
29173 wpt_uint16 usSendSize = 0;
29174 tSetThermalMitgationType halTmMsg;
29175
29176 /*-------------------------------------------------------------------------
29177 Sanity check
29178 -------------------------------------------------------------------------*/
29179 if (( NULL == pEventData ) ||
29180 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29181 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29182 {
29183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029184 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029185 WDI_ASSERT(0);
29186 return WDI_STATUS_E_FAILURE;
29187 }
29188
29189 /*-----------------------------------------------------------------------
29190 Get message buffer
29191 -----------------------------------------------------------------------*/
29192 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29193 sizeof(halTmMsg),
29194 &pSendBuffer, &usDataOffset, &usSendSize))||
29195 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29196 {
29197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029198 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029199 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29200 WDI_ASSERT(0);
29201 return WDI_STATUS_E_FAILURE;
29202 }
29203
29204 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29205 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29206
29207 wpalMemoryCopy( pSendBuffer+usDataOffset,
29208 &halTmMsg,
29209 sizeof(halTmMsg));
29210
29211 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29212 pWDICtx->pfncRspCB = NULL;
29213 /*-------------------------------------------------------------------------
29214 Send Get STA Request to HAL
29215 -------------------------------------------------------------------------*/
29216 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29217 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29218}
29219
29220/* Fill the value from the global features enabled array to the global capabilities
29221 * bitmap struct
29222 */
29223static void
29224FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29225{
29226 wpt_int8 i;
29227 for (i=0; i<len; i++)
29228 {
29229 setFeatCaps(fCaps, enabledFeat[i]);
29230 }
29231}
29232
29233/**
29234 @brief WDI_featureCapsExchangeReq
29235 Post feature capability bitmap exchange event.
29236 Host will send its own capability to FW in this req and
29237 expect FW to send its capability back as a bitmap in Response
29238
29239 @param
29240
29241 wdiFeatureCapsExchangeCb: callback called on getting the response.
29242 It is kept to mantain similarity between WDI reqs and if needed, can
29243 be used in future. Currently, It is set to NULL
29244
29245 pUserData: user data will be passed back with the
29246 callback
29247
29248 @see
29249 @return Result of the function call
29250*/
29251WDI_Status
29252WDI_featureCapsExchangeReq
29253(
29254 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29255 void* pUserData
29256)
29257{
29258 WDI_EventInfoType wdiEventData;
29259 wpt_int32 fCapsStructSize;
29260
29261 /*------------------------------------------------------------------------
29262 Sanity Check
29263 ------------------------------------------------------------------------*/
29264 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29265 {
29266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29267 "WDI API call before module is initialized - Fail request");
29268
29269 return WDI_STATUS_E_NOT_ALLOWED;
29270 }
29271
29272 /* Allocate memory separately for global variable carrying FW caps */
29273 fCapsStructSize = sizeof(tWlanFeatCaps);
29274 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29275 if ( NULL == gpHostWlanFeatCaps )
29276 {
29277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029278 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029279 WDI_ASSERT(0);
29280 return WDI_STATUS_MEM_FAILURE;
29281 }
29282
29283 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29284
29285 /*------------------------------------------------------------------------
29286 Fill in Event data and post to the Main FSM
29287 ------------------------------------------------------------------------*/
29288 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29289 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029291 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029292 gpHostWlanFeatCaps->featCaps[0],
29293 gpHostWlanFeatCaps->featCaps[1],
29294 gpHostWlanFeatCaps->featCaps[2],
29295 gpHostWlanFeatCaps->featCaps[3]
29296 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
29298 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029299 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29300 wdiEventData.pEventData = gpHostWlanFeatCaps;
29301 wdiEventData.uEventDataSize = fCapsStructSize;
29302 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29303 wdiEventData.pUserData = pUserData;
29304
29305 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29306}
29307
29308/**
Yathish9f22e662012-12-10 14:21:35 -080029309 @brief Disable Active mode offload in Host
29310
29311 @param void
29312 @see
29313 @return void
29314*/
29315void
29316WDI_disableCapablityFeature(wpt_uint8 feature_index)
29317{
29318 supportEnabledFeatures[feature_index] = 0;
29319 return;
29320}
29321
29322/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029323 @brief Process Host-FW Capability Exchange Request function
29324
29325 @param pWDICtx: pointer to the WLAN DAL context
29326 pEventData: pointer to the event information structure
29327
29328 @see
29329 @return Result of the function call
29330*/
29331WDI_Status
29332WDI_ProcessFeatureCapsExchangeReq
29333(
29334 WDI_ControlBlockType* pWDICtx,
29335 WDI_EventInfoType* pEventData
29336)
29337{
29338 wpt_uint8* pSendBuffer = NULL;
29339 wpt_uint16 usDataOffset = 0;
29340 wpt_uint16 usSendSize = 0;
29341 wpt_uint16 usLen = 0;
29342
29343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29344
29345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029346 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029347
29348 /*-------------------------------------------------------------------------
29349 Sanity check
29350 -------------------------------------------------------------------------*/
29351 /* Call back function is NULL since not required for cap exchange req */
29352 if (( NULL == pEventData ) ||
29353 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29354 {
29355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029357 WDI_ASSERT(0);
29358 return WDI_STATUS_E_FAILURE;
29359 }
29360
29361 /*-----------------------------------------------------------------------
29362 Get message buffer
29363 -----------------------------------------------------------------------*/
29364 usLen = sizeof(tWlanFeatCaps);
29365
29366 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29367 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29368 usLen,
29369 &pSendBuffer, &usDataOffset, &usSendSize))||
29370 ( usSendSize < (usDataOffset + usLen )))
29371 {
29372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029373 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029374 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29375 WDI_ASSERT(0);
29376 return WDI_STATUS_E_FAILURE;
29377 }
29378
29379 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 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29382 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29383 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29384 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29385 );
29386
29387 /* Copy host caps after the offset in the send buffer */
29388 wpalMemoryCopy( pSendBuffer+usDataOffset,
29389 (tWlanFeatCaps *)pEventData->pEventData,
29390 usLen);
29391
29392 /*-------------------------------------------------------------------------
29393 Send Start Request to HAL
29394 -------------------------------------------------------------------------*/
29395 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29396 (WDI_StartRspCb)pEventData->pCBfnc,
29397 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29398
29399}/*WDI_ProcessFeatureCapsExchangeReq*/
29400
29401/**
29402 @brief Process Host-FW Capability Exchange Response function
29403
29404 @param pWDICtx: pointer to the WLAN DAL context
29405 pEventData: pointer to the event information structure
29406
29407 @see
29408 @return Result of the function call
29409*/
29410WDI_Status
29411WDI_ProcessFeatureCapsExchangeRsp
29412(
29413 WDI_ControlBlockType* pWDICtx,
29414 WDI_EventInfoType* pEventData
29415)
29416{
29417 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29418 wpt_int32 fCapsStructSize;
29419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29420
29421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029422 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029423
29424 /*-------------------------------------------------------------------------
29425 Sanity check
29426 -------------------------------------------------------------------------*/
29427 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29428 ( NULL == pEventData->pEventData ))
29429 {
29430 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029432 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029433 WDI_ASSERT(0);
29434 return WDI_STATUS_E_FAILURE;
29435 }
29436
29437 /* Allocate memory separately for global variable carrying FW caps */
29438 fCapsStructSize = sizeof(tWlanFeatCaps);
29439 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29440 if ( NULL == gpFwWlanFeatCaps )
29441 {
29442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029443 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029444 WDI_ASSERT(0);
29445 return WDI_STATUS_MEM_FAILURE;
29446 }
29447
29448 /*-------------------------------------------------------------------------
29449 Unpack HAL Response Message - the header was already extracted by the
29450 main Response Handling procedure
29451 -------------------------------------------------------------------------*/
29452 /*-------------------------------------------------------------------------
29453 Extract response and send it to UMAC
29454 -------------------------------------------------------------------------*/
29455
29456 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29457 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029459 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029460 gpFwWlanFeatCaps->featCaps[0],
29461 gpFwWlanFeatCaps->featCaps[1],
29462 gpFwWlanFeatCaps->featCaps[2],
29463 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029464 );
29465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
29466 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029467 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29468
29469 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29470 if (wdiFeatureCapsExchangeCb != NULL)
29471 wdiFeatureCapsExchangeCb(NULL, NULL);
29472
29473 return WDI_STATUS_SUCCESS;
29474}
29475
Mohit Khanna4a70d262012-09-11 16:30:12 -070029476#ifdef WLAN_FEATURE_11AC
29477WDI_Status
29478WDI_ProcessUpdateVHTOpModeRsp
29479(
29480 WDI_ControlBlockType* pWDICtx,
29481 WDI_EventInfoType* pEventData
29482)
29483{
29484 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29485 WDI_Status wdiStatus;
29486 eHalStatus halStatus;
29487
29488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29489
29490 /*-------------------------------------------------------------------------
29491 Sanity check
29492 -------------------------------------------------------------------------*/
29493 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29494 ( NULL == pEventData->pEventData))
29495 {
29496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029497 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029498 WDI_ASSERT(0);
29499 return WDI_STATUS_E_FAILURE;
29500 }
29501 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29502
29503 /*-------------------------------------------------------------------------
29504 Extract response and send it to UMAC
29505 -------------------------------------------------------------------------*/
29506 halStatus = *((eHalStatus*)pEventData->pEventData);
29507 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29508
29509 /*Notify UMAC*/
29510 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29511
29512 return WDI_STATUS_SUCCESS;
29513}
29514#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029515/**
29516 @brief WDI_getHostWlanFeatCaps
29517 WDI API that returns whether the feature passed to it as enum value in
29518 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29519 variable storing host capability bitmap to find this. This can be used by
29520 other moduels to decide certain things like call different APIs based on
29521 whether a particular feature is supported.
29522
29523 @param
29524
29525 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29526
29527 @see
29528 @return
29529 0 - if the feature is NOT supported in host
29530 any non-zero value - if the feature is SUPPORTED in host.
29531*/
29532wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29533{
29534 wpt_uint8 featSupported = 0;
29535 if (gpHostWlanFeatCaps != NULL)
29536 {
29537 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29538 }
29539 else
29540 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029542 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029543 }
29544 return featSupported;
29545}
29546
29547/**
29548 @brief WDI_getFwWlanFeatCaps
29549 WDI API that returns whether the feature passed to it as enum value in
29550 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29551 variable storing host capability bitmap to find this. This can be used by
29552 other moduels to decide certain things like call different APIs based on
29553 whether a particular feature is supported.
29554
29555 @param
29556
29557 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29558 in wlan_hal_msg.h.
29559
29560 @see
29561 @return
29562 0 - if the feature is NOT supported in FW
29563 any non-zero value - if the feature is SUPPORTED in FW.
29564*/
29565wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29566{
29567 wpt_uint8 featSupported = 0;
29568 if (gpFwWlanFeatCaps != NULL)
29569 {
29570 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29571 }
29572 else
29573 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029575 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029576 }
29577 return featSupported;
29578}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029579
Katya Nigamf0511f62015-05-05 16:40:57 +053029580wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
29581{
29582 /* 5gHz Channel */
29583 if( channel >= 34 && channel <= 165 )
29584 {
29585 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
29586 {
29587 if ( channel== 36 || channel == 52 || channel == 100 ||
29588 channel == 116 || channel == 149 )
29589 {
29590 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
29591 }
29592 else if ( channel == 40 || channel == 56 || channel == 104 ||
29593 channel == 120 || channel == 153 )
29594 {
29595 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
29596 }
29597 else if ( channel == 44 || channel == 60 || channel == 108 ||
29598 channel == 124 || channel == 157 )
29599 {
29600 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
29601 }
29602 else if ( channel == 48 || channel == 64 || channel == 112 ||
29603 channel == 128 || channel == 144 || channel == 161 )
29604 {
29605 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
29606 }
29607 else if ( channel == 165 )
29608 {
29609 return PHY_SINGLE_CHANNEL_CENTERED;
29610 }
29611 }
29612
29613 else
29614 {
29615 if ( channel== 40 || channel == 48 || channel == 56 ||
29616 channel == 64 || channel == 104 || channel == 112 ||
29617 channel == 120 || channel == 128 || channel == 136 ||
29618 channel == 144 || channel == 153 || channel == 161 )
29619 {
29620 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29621 }
29622 else if ( channel== 36 || channel == 44 || channel == 52 ||
29623 channel == 60 || channel == 100 || channel == 108 ||
29624 channel == 116 || channel == 124 || channel == 132 ||
29625 channel == 140 || channel == 149 || channel == 157 )
29626 {
29627 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29628 }
29629 else if ( channel == 165 )
29630 {
29631 return PHY_SINGLE_CHANNEL_CENTERED;
29632 }
29633 }
29634 }
29635
29636 /* 2.4Ghz Channel */
29637 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
29638 {
29639 if (channel >= 1 && channel <= 7)
29640 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29641 else if (channel >= 8 && channel <= 13)
29642 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29643 else if (channel ==14)
29644 return PHY_SINGLE_CHANNEL_CENTERED;
29645 }
29646 return PHY_SINGLE_CHANNEL_CENTERED;
29647}
29648
Mohit Khanna4a70d262012-09-11 16:30:12 -070029649#ifdef WLAN_FEATURE_11AC
29650WDI_Status
29651WDI_ProcessUpdateVHTOpModeReq
29652(
29653 WDI_ControlBlockType* pWDICtx,
29654 WDI_EventInfoType* pEventData
29655)
29656{
29657 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29658 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29659 wpt_uint8* pSendBuffer = NULL;
29660 wpt_uint16 usDataOffset = 0;
29661 wpt_uint16 usSendSize = 0;
29662
29663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29664
29665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029666 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029667
29668 /*-------------------------------------------------------------------------
29669 Sanity check
29670 -------------------------------------------------------------------------*/
29671 if (( NULL == pEventData ) ||
29672 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29673 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29674 {
29675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029676 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029677 WDI_ASSERT(0);
29678 return WDI_STATUS_E_FAILURE;
29679 }
29680
29681 /*-----------------------------------------------------------------------
29682 Get message buffer
29683 -----------------------------------------------------------------------*/
29684 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29685 sizeof(WDI_UpdateVHTOpMode),
29686 &pSendBuffer, &usDataOffset, &usSendSize))||
29687 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29688 {
29689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29690 "Unable to get send buffer in update vht opMode req");
29691 WDI_ASSERT(0);
29692 return WDI_STATUS_E_FAILURE;
29693 }
29694
29695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029696 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029697
29698 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29699 sizeof(WDI_UpdateVHTOpMode));
29700
29701 /*-------------------------------------------------------------------------
29702 Send Start Request to HAL
29703 -------------------------------------------------------------------------*/
29704 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29705 wdiVHTOpModeCb,
29706 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29707
29708}
29709
29710WDI_Status
29711WDI_UpdateVHTOpModeReq
29712(
29713 WDI_UpdateVHTOpMode *pData,
29714 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29715 void* pUserData
29716)
29717{
29718 WDI_EventInfoType wdiEventData;
29719
29720 /*------------------------------------------------------------------------
29721 Sanity Check
29722 ------------------------------------------------------------------------*/
29723 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29724 {
29725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29726 "WDI API call before module is initialized - Fail request");
29727
29728 return WDI_STATUS_E_NOT_ALLOWED;
29729 }
29730
29731 /*------------------------------------------------------------------------
29732 Fill in Event data and post to the Main FSM
29733 ------------------------------------------------------------------------*/
29734 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29735 wdiEventData.pEventData = pData;
29736 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29737 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29738 wdiEventData.pUserData = pUserData;
29739
29740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029741 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029742
29743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29744
29745}
29746#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029747
29748/**
29749 @brief WDI_TransportChannelDebug -
29750 Display DXE Channel debugging information
29751 User may request to display DXE channel snapshot
29752 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029753
Jeff Johnsonb88db982012-12-10 13:34:59 -080029754 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029755 @param debugFlags : Enable stall detect features
29756 defined by WPAL_DeviceDebugFlags
29757 These features may effect
29758 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029759 @see
29760 @return none
29761*/
29762void WDI_TransportChannelDebug
29763(
29764 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029765 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029766)
29767{
Mihir Shete40a55652014-03-02 14:14:47 +053029768 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029769 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029770}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029771/**
29772 @brief WDI_SsrTimerCB
29773 Callback function for SSR timer, if this is called then the graceful
29774 shutdown for Riva did not happen.
29775
29776 @param pUserData : user data to timer
29777
29778 @see
29779 @return none
29780*/
29781void
29782WDI_SsrTimerCB
29783(
29784 void *pUserData
29785)
29786{
29787 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29789
29790 if (NULL == pWDICtx )
29791 {
29792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029793 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029794 WDI_ASSERT(0);
29795 return;
29796 }
29797 wpalRivaSubystemRestart();
29798
29799 return;
29800
29801}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029802
29803/**
29804 @brief WDI_SetEnableSSR -
29805 This API is called to enable/disable SSR on WDI timeout.
29806
29807 @param enableSSR : enable/disable SSR
29808
29809 @see
29810 @return none
29811*/
29812void WDI_SetEnableSSR(wpt_boolean enableSSR)
29813{
29814 gWDICb.bEnableSSR = enableSSR;
29815}
Leo Chang9056f462013-08-01 19:21:11 -070029816
29817
29818#ifdef FEATURE_WLAN_LPHB
29819/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029820 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029821 This function will be invoked when FW detects low power
29822 heart beat failure
29823
29824 @param pWDICtx : wdi context
29825 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029826 @see
29827 @return Result of the function call
29828*/
29829WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029830WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029831(
29832 WDI_ControlBlockType* pWDICtx,
29833 WDI_EventInfoType* pEventData
29834)
29835{
29836 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029837 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29839
29840 /*-------------------------------------------------------------------------
29841 Sanity check
29842 -------------------------------------------------------------------------*/
29843 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29844 (NULL == pEventData->pEventData))
29845 {
29846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29847 "%s: Invalid parameters", __func__);
29848 WDI_ASSERT(0);
29849 return WDI_STATUS_E_FAILURE;
29850 }
29851
29852 /*-------------------------------------------------------------------------
29853 Extract indication and send it to UMAC
29854 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029855 wpalMemoryCopy(&lphbIndicationParam,
29856 pEventData->pEventData,
29857 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029858
Leo Changd9df8aa2013-09-26 13:32:26 -070029859 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029860 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029861 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029862 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029863 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029864 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029865 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029866 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029867 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029868 /*Notify UMAC*/
29869 if (pWDICtx->wdiLowLevelIndCB)
29870 {
29871 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29872 }
29873
29874 return WDI_STATUS_SUCCESS;
29875}
29876
29877/**
29878 @brief WDI_ProcessLphbCfgRsp -
29879 LPHB configuration response from FW
29880
29881 @param pWDICtx : wdi context
29882 pEventData : indication data
29883
29884 @see
29885 @return Result of the function call
29886*/
29887WDI_Status WDI_ProcessLphbCfgRsp
29888(
29889 WDI_ControlBlockType* pWDICtx,
29890 WDI_EventInfoType* pEventData
29891)
29892{
29893 WDI_Status wdiStatus;
29894 eHalStatus halStatus;
29895 WDI_LphbCfgCb wdiLphbCfgCb;
29896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29897
29898 /*-------------------------------------------------------------------------
29899 Sanity check
29900 -------------------------------------------------------------------------*/
29901 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29902 (NULL == pEventData->pEventData))
29903 {
29904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29905 "%s: Invalid parameters", __func__);
29906 WDI_ASSERT(0);
29907 return WDI_STATUS_E_FAILURE;
29908 }
29909
29910 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29911
29912 /*-------------------------------------------------------------------------
29913 Extract response and send it to UMAC
29914 -------------------------------------------------------------------------*/
29915 halStatus = *((eHalStatus*)pEventData->pEventData);
29916 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29917
29918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29919 "LPHB Cfg Rsp Return status %d", wdiStatus);
29920 /*Notify UMAC*/
29921 if (NULL != wdiLphbCfgCb)
29922 {
29923 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29924 }
29925
29926 return WDI_STATUS_SUCCESS;
29927}
29928
29929/**
29930 @brief WDI_ProcessLPHBConfReq -
29931 LPHB configuration request to FW
29932
29933 @param pWDICtx : wdi context
29934 pEventData : indication data
29935
29936 @see
29937 @return none
29938*/
29939WDI_Status WDI_ProcessLPHBConfReq
29940(
29941 WDI_ControlBlockType* pWDICtx,
29942 WDI_EventInfoType* pEventData
29943)
29944{
29945 WDI_LPHBReq *pLphbReqParams;
29946 WDI_Status wdiStatus;
29947 wpt_uint8* pSendBuffer = NULL;
29948 wpt_uint16 usDataOffset = 0;
29949 wpt_uint16 usSendSize = 0;
29950 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29952
29953 /*-------------------------------------------------------------------------
29954 Sanity check
29955 -------------------------------------------------------------------------*/
29956 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29957 {
29958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29959 "%s: Invalid parameters in Suspend ind",__func__);
29960 WDI_ASSERT(0);
29961 return WDI_STATUS_E_FAILURE;
29962 }
29963
29964 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29965
29966 /*-----------------------------------------------------------------------
29967 Get message buffer
29968 -----------------------------------------------------------------------*/
29969 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29970 WDI_LPHB_CFG_REQ,
29971 sizeof(tHalLowPowerHeartBeatReqMsg),
29972 &pSendBuffer, &usDataOffset, &usSendSize))||
29973 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29974 {
29975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29976 "Unable to get send buffer in LPHB Ind ");
29977 WDI_ASSERT(0);
29978 return WDI_STATUS_E_FAILURE;
29979 }
29980
29981 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29982 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29983
29984 halLphbReqRarams->lowPowerHeartBeatCmdType =
29985 (tANI_U16)(++pLphbReqParams->cmd);
29986 switch ((tANI_U16)pLphbReqParams->cmd)
29987 {
29988 case WDI_LPHB_SET_EN_PARAMS_INDID:
29989 halLphbReqRarams->sessionIdx =
29990 pLphbReqParams->params.lphbEnableReq.session;
29991 halLphbReqRarams->options.control.heartBeatEnable =
29992 pLphbReqParams->params.lphbEnableReq.enable;
29993 halLphbReqRarams->options.control.heartBeatType =
29994 pLphbReqParams->params.lphbEnableReq.item;
29995 break;
29996
29997 case WDI_LPHB_SET_TCP_PARAMS_INDID:
29998 halLphbReqRarams->sessionIdx =
29999 pLphbReqParams->params.lphbTcpParamReq.session;
30000 halLphbReqRarams->options.tcpParams.timeOutSec =
30001 pLphbReqParams->params.lphbTcpParamReq.timeout;
30002 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30003 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30004 sizeof(v_U32_t));
30005 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30006 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30007 sizeof(v_U32_t));
30008
30009 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30010 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30011 WDI_MAC_ADDR_LEN);
30012
30013 halLphbReqRarams->options.tcpParams.hostPort =
30014 pLphbReqParams->params.lphbTcpParamReq.src_port;
30015 halLphbReqRarams->options.tcpParams.destPort =
30016 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070030017 halLphbReqRarams->options.tcpParams.timePeriodSec =
30018 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
30019 halLphbReqRarams->options.tcpParams.tcpSn =
30020 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070030021 break;
30022
30023 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
30024 halLphbReqRarams->sessionIdx =
30025 pLphbReqParams->params.lphbTcpFilterReq.session;
30026 halLphbReqRarams->options.tcpUdpFilter.offset =
30027 pLphbReqParams->params.lphbTcpFilterReq.offset;
30028 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30029 pLphbReqParams->params.lphbTcpFilterReq.length;
30030 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30031 pLphbReqParams->params.lphbTcpFilterReq.filter,
30032 WDI_LPHB_FILTER_LEN);
30033 break;
30034
30035 case WDI_LPHB_SET_UDP_PARAMS_INDID:
30036 halLphbReqRarams->sessionIdx =
30037 pLphbReqParams->params.lphbUdpParamReq.session;
30038 halLphbReqRarams->options.udpParams.timeOutSec =
30039 pLphbReqParams->params.lphbUdpParamReq.timeout;
30040 halLphbReqRarams->options.udpParams.timePeriodSec =
30041 pLphbReqParams->params.lphbUdpParamReq.interval;
30042 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
30043 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
30044 sizeof(v_U32_t));
30045 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
30046 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
30047 sizeof(v_U32_t));
30048
30049 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
30050 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
30051 WDI_MAC_ADDR_LEN);
30052
30053 halLphbReqRarams->options.udpParams.hostPort =
30054 pLphbReqParams->params.lphbUdpParamReq.src_port;
30055 halLphbReqRarams->options.udpParams.destPort =
30056 pLphbReqParams->params.lphbUdpParamReq.dst_port;
30057 break;
30058
30059 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
30060 halLphbReqRarams->sessionIdx =
30061 pLphbReqParams->params.lphbUdpFilterReq.session;
30062 halLphbReqRarams->options.tcpUdpFilter.offset =
30063 pLphbReqParams->params.lphbUdpFilterReq.offset;
30064 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30065 pLphbReqParams->params.lphbUdpFilterReq.length;
30066 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30067 pLphbReqParams->params.lphbUdpFilterReq.filter,
30068 WDI_LPHB_FILTER_LEN);
30069 break;
30070
30071 case WDI_LPHB_SET_NETWORK_INFO_INDID:
30072 /* NA */
30073 break;
30074
30075 default:
30076 break;
30077 }
30078
30079 /*-------------------------------------------------------------------------
30080 Send Suspend Request to HAL
30081 -------------------------------------------------------------------------*/
30082 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30083 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30084
30085 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30086 usSendSize, pWDICtx->pfncRspCB,
30087 pWDICtx->pReqStatusUserData,
30088 WDI_LPHB_CFG_RESP);
30089
30090 return wdiStatus;
30091}
30092
30093/**
30094 @brief WDI_LPHBConfReq -
30095 LPHB configuration request API
30096
30097 @param lphbconfParam : configuration parameter
30098 usrData : client context
30099 lphbCfgCb : callback function pointer
30100
30101 @see
30102 @return Success or fail status code
30103*/
30104WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
30105 void *usrData, WDI_LphbCfgCb lphbCfgCb)
30106{
30107 WDI_EventInfoType wdiEventData;
30108
30109 /*------------------------------------------------------------------------
30110 Sanity Check
30111 ------------------------------------------------------------------------*/
30112 if (eWLAN_PAL_FALSE == gWDIInitialized)
30113 {
30114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30115 "WDI API call before module is initialized - Fail request");
30116
30117 return WDI_STATUS_E_NOT_ALLOWED;
30118 }
30119
30120 /*------------------------------------------------------------------------
30121 Fill in Event data and post to the Main FSM
30122 ------------------------------------------------------------------------*/
30123 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
30124 wdiEventData.pEventData = lphbconfParam;
30125 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
30126 wdiEventData.pCBfnc = lphbCfgCb;
30127 wdiEventData.pUserData = usrData;
30128
30129 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30130}
30131#endif /* FEATURE_WLAN_LPHB */
30132
Ravi Joshid2ca7c42013-07-23 08:37:49 -070030133/**
30134 @brief WDI_ProcessIbssPeerInactivityInd
30135 Process peer inactivity indication coming from HAL
30136
30137 @param pWDICtx: pointer to the WLAN DAL context
30138 pEventData: pointer to the event information structure
30139 @see
30140 @return Result of the function call
30141*/
30142WDI_Status
30143WDI_ProcessIbssPeerInactivityInd
30144(
30145 WDI_ControlBlockType* pWDICtx,
30146 WDI_EventInfoType* pEventData
30147)
30148{
30149 WDI_LowLevelIndType wdiInd;
30150 tIbssPeerInactivityIndMsg halIbssIndMsg;
30151
30152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30153
30154 /*-------------------------------------------------------------------------
30155 Sanity check
30156 -------------------------------------------------------------------------*/
30157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30158 ( NULL == pEventData->pEventData ))
30159 {
30160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30161 "%s: Invalid parameters", __func__);
30162 WDI_ASSERT( 0 );
30163 return WDI_STATUS_E_FAILURE;
30164 }
30165
30166 /*-------------------------------------------------------------------------
30167 Extract indication and send it to UMAC
30168 -------------------------------------------------------------------------*/
30169 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30170 pEventData->pEventData,
30171 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30172
30173 /*Fill in the indication parameters*/
30174 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30175
30176 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30177 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30178
30179 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30180 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30181
30182 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30183 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30184 sizeof(tSirMacAddr));
30185
30186 /*Notify UMAC*/
30187 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30188
30189 return WDI_STATUS_SUCCESS;
30190
30191} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030192
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030193/**
30194*@brief WDI_RateUpdateInd will be called when the upper MAC
30195 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030196
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030197
30198 @param wdiRateUpdateIndParams:
30199
30200
30201 @see
30202 @return Result of the function call
30203*/
30204WDI_Status
30205WDI_RateUpdateInd
30206(
30207 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30208)
30209{
30210 WDI_EventInfoType wdiEventData;
30211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30212
30213 /*------------------------------------------------------------------------
30214 Sanity Check
30215 ------------------------------------------------------------------------*/
30216 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30217 {
30218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30219 "WDI API call before module is initialized - Fail request");
30220
30221 return WDI_STATUS_E_NOT_ALLOWED;
30222 }
30223
30224 /*------------------------------------------------------------------------
30225 Fill in Event data and post to the Main FSM
30226 ------------------------------------------------------------------------*/
30227 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30228 wdiEventData.pEventData = wdiRateUpdateIndParams;
30229 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30230 wdiEventData.pCBfnc = NULL;
30231 wdiEventData.pUserData = NULL;
30232
30233 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30234
30235}/* WDI_RateUpdateInd */
30236
30237/**
30238 @brief Process Rate Update Indication and post it to HAL
30239
30240 @param pWDICtx: pointer to the WLAN DAL context
30241 pEventData: pointer to the event information structure
30242
30243 @see
30244 @return Result of the function call
30245*/
30246WDI_Status
30247WDI_ProcessRateUpdateInd
30248(
30249 WDI_ControlBlockType* pWDICtx,
30250 WDI_EventInfoType* pEventData
30251)
30252{
30253 wpt_uint8* pSendBuffer = NULL;
30254 wpt_uint16 usDataOffset = 0;
30255 wpt_uint16 usSendSize = 0;
30256 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30257 tHalRateUpdateInd *pRateUpdateInd;
30258 WDI_Status wdiStatus;
30259
30260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30261
30262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30263 "%s", __func__);
30264
30265 /*-------------------------------------------------------------------------
30266 Sanity check
30267 -------------------------------------------------------------------------*/
30268 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30269 {
30270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30271 "%s: Invalid parameters", __func__);
30272 WDI_ASSERT(0);
30273 return WDI_STATUS_E_FAILURE;
30274 }
30275 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30276 /*-----------------------------------------------------------------------
30277 Get message buffer
30278 -----------------------------------------------------------------------*/
30279
30280 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30281 WDI_RATE_UPDATE_IND,
30282 sizeof(tHalRateUpdateParams),
30283 &pSendBuffer, &usDataOffset, &usSendSize))||
30284 ( usSendSize < (usDataOffset +
30285 sizeof(tHalRateUpdateParams) )))
30286 {
30287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30288 "Unable to get send buffer in Rate Update Indication %p ",
30289 pEventData);
30290 WDI_ASSERT(0);
30291 return WDI_STATUS_E_FAILURE;
30292 }
30293
30294 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30295
30296 /* Copy the bssid */
30297 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30298 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30299
30300 /* Copy the tx flags */
30301 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30302 pwdiRateUpdateInd->ucastDataRateTxFlag;
30303 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30304 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30305 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30306 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30307 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30308 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30309
30310 /* Copy the tx rates */
30311 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30312 pwdiRateUpdateInd->ucastDataRate;
30313 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30314 pwdiRateUpdateInd->reliableMcastDataRate;
30315 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30316 pwdiRateUpdateInd->mcastDataRate24GHz;
30317 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30318 pwdiRateUpdateInd->mcastDataRate5GHz;
30319
30320 /*-------------------------------------------------------------------------
30321 Send Rate Update Indication to HAL
30322 -------------------------------------------------------------------------*/
30323 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30324 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30325
30326 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30327
30328 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30329 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30330
30331} /* WDI_ProcessRateUpdateInd */
30332
30333#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030334/**
30335 @brief Process stop batch indication from WDA
30336
30337 @param pWDICtx: pointer to the WLAN DAL context
30338 pEventData: pointer to the event information structure
30339
30340 @see
30341 @return Result of the function call
30342*/
30343WDI_Status
30344WDI_ProcessStopBatchScanInd
30345(
30346 WDI_ControlBlockType* pWDICtx,
30347 WDI_EventInfoType* pEventData
30348)
30349{
30350 wpt_uint8* pSendBuffer = NULL;
30351 wpt_uint16 usDataOffset = 0;
30352 wpt_uint16 usSendSize = 0;
30353 WDI_Status wdiStatus;
30354 tHalBatchScanStopIndParam *pHalInd = NULL;
30355 WDI_StopBatchScanIndType *pWdiInd = NULL;
30356
30357
30358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30359
30360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30361 "%s", __func__);
30362
30363 /*-------------------------------------------------------------------------
30364 Sanity check
30365 -------------------------------------------------------------------------*/
30366
30367 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30368 {
30369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30370 "%s: Invalid parameters", __func__);
30371 WDI_ASSERT(0);
30372 return WDI_STATUS_E_FAILURE;
30373 }
30374 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30375 /*-----------------------------------------------------------------------
30376 Get message buffer
30377 -----------------------------------------------------------------------*/
30378
30379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30380 WDI_STOP_BATCH_SCAN_IND,
30381 sizeof(tHalBatchScanStopIndParam),
30382 &pSendBuffer, &usDataOffset, &usSendSize))||
30383 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30384 {
30385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30386 "Unable to get send buffer in stop batch scan ind %p ",
30387 pEventData);
30388 WDI_ASSERT(0);
30389 return WDI_STATUS_E_FAILURE;
30390 }
30391
30392 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30393 pHalInd->param = pWdiInd->param;
30394
30395 pWDICtx->pReqStatusUserData = NULL;
30396 pWDICtx->pfncRspCB = NULL;
30397 /*-------------------------------------------------------------------------
30398 Send Stop batch scan indication to HAL
30399 -------------------------------------------------------------------------*/
30400 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30401 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30402}
30403
30404/**
30405 @brief This API is called to trigger batch scan results from FW
30406
30407 @param pWDICtx: pointer to the WLAN DAL context
30408 pEventData: pointer to the event information structure
30409
30410 @see
30411 @return Result of the function call
30412*/
30413WDI_Status
30414WDI_ProcessTriggerBatchScanResultInd
30415(
30416 WDI_ControlBlockType* pWDICtx,
30417 WDI_EventInfoType* pEventData
30418)
30419{
30420 WDI_Status wdiStatus;
30421 wpt_uint8* pSendBuffer = NULL;
30422 wpt_uint16 usDataOffset = 0;
30423 wpt_uint16 usSendSize = 0;
30424 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30425 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30426
30427
30428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30429
30430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30431 "%s", __func__);
30432
30433 /*-------------------------------------------------------------------------
30434 Sanity check
30435 -------------------------------------------------------------------------*/
30436
30437 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30438 {
30439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30440 "%s: Invalid parameters", __func__);
30441 WDI_ASSERT(0);
30442 return WDI_STATUS_E_FAILURE;
30443 }
30444 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30445 /*-----------------------------------------------------------------------
30446 Get message buffer
30447 -----------------------------------------------------------------------*/
30448
30449 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30450 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30451 sizeof(tHalBatchScanTriggerResultParam),
30452 &pSendBuffer, &usDataOffset, &usSendSize))||
30453 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30454 {
30455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30456 "Unable to get send buffer in stop batch scan ind %p ",
30457 pEventData);
30458 WDI_ASSERT(0);
30459 return WDI_STATUS_E_FAILURE;
30460 }
30461
30462 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30463 pHalInd->param = pWdiInd->param;
30464
30465 pWDICtx->pReqStatusUserData = NULL;
30466 pWDICtx->pfncRspCB = NULL;
30467 /*-------------------------------------------------------------------------
30468 Send trigger batch scan result indication to HAL
30469 -------------------------------------------------------------------------*/
30470 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30471 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30472}
30473
30474
30475/**
30476 @brief Process set batch scan response from FW
30477
30478 @param pWDICtx: pointer to the WLAN DAL context
30479 pEventData: pointer to the event information structure
30480
30481 @see
30482 @return Result of the function call
30483*/
30484WDI_Status
30485WDI_ProcessSetBatchScanRsp
30486(
30487 WDI_ControlBlockType* pWDICtx,
30488 WDI_EventInfoType* pEventData
30489)
30490{
30491 WDI_SetBatchScanCb wdiSetBatchScanCb;
30492 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30493
30494 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30496
30497 /*sanity check*/
30498 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30499 ( NULL == pEventData->pEventData))
30500 {
30501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30502 "%s: Invalid parameters", __func__);
30503 WDI_ASSERT(0);
30504 return WDI_STATUS_E_FAILURE;
30505 }
30506
30507 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30508 if ( NULL == wdiSetBatchScanCb)
30509 {
30510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30511 "%s: call back function is NULL", __func__);
30512 WDI_ASSERT(0);
30513 return WDI_STATUS_E_FAILURE;
30514 }
30515
30516 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30517
30518 if (NULL == pSetBatchScanRsp)
30519 {
30520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030521 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030522 pWDICtx, pEventData, pEventData->pEventData);
30523 WDI_ASSERT(0);
30524 return WDI_STATUS_E_FAILURE;
30525 }
30526
Sunil Duttbd736ed2014-05-26 21:19:41 +053030527 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030528 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30529
30530 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30531
Sunil Duttbd736ed2014-05-26 21:19:41 +053030532 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030533 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30534
30535 wpalMemoryFree(pSetBatchScanRsp);
30536
30537 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030538}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030539
30540/**
30541 @brief Process batch scan result indication from FW
30542
30543 @param pWDICtx: pointer to the WLAN DAL context
30544 pEventData: pointer to the event information structure
30545
30546 @see
30547 @return Result of the function call
30548*/
30549WDI_Status
30550WDI_ProcessBatchScanResultInd
30551(
30552 WDI_ControlBlockType* pWDICtx,
30553 WDI_EventInfoType* pEventData
30554)
30555{
30556 void *pBatchScanResultInd;
30557 WDI_LowLevelIndType wdiInd;
30558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30559
Sunil Duttbd736ed2014-05-26 21:19:41 +053030560 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030561 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30562 ( NULL == pEventData->pEventData))
30563 {
30564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30565 "%s: Invalid parameters", __func__);
30566 WDI_ASSERT(0);
30567 return WDI_STATUS_E_FAILURE;
30568 }
30569
Sunil Duttbd736ed2014-05-26 21:19:41 +053030570 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030571 pBatchScanResultInd = (void *)pEventData->pEventData;
30572
Sunil Duttbd736ed2014-05-26 21:19:41 +053030573 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030574 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30575
30576 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30577
Sunil Duttbd736ed2014-05-26 21:19:41 +053030578 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030579 if (pWDICtx->wdiLowLevelIndCB)
30580 {
30581 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30582 }
30583 else
30584 {
30585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30586 "%s: WDILowLevelIndCb is null", __func__);
30587 WDI_ASSERT(0);
30588 return WDI_STATUS_E_FAILURE;
30589 }
30590
30591 return WDI_STATUS_SUCCESS;
30592} /*End of WDI_ProcessBatchScanResultInd*/
30593
Sunil Duttbd736ed2014-05-26 21:19:41 +053030594#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30595/**
30596 @brief Process Link Layer Statistics Result indication from FW
30597
30598 @param pWDICtx: pointer to the WLAN DAL context
30599 pEventData: pointer to the event information structure
30600
30601 @see
30602 @return Result of the function call
30603*/
30604WDI_Status
30605WDI_ProcessLinkLayerStatsResultsInd
30606(
30607 WDI_ControlBlockType* pWDICtx,
30608 WDI_EventInfoType* pEventData
30609)
30610{
30611 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030612 WDI_LLstatsResultsType *halLLStatsResults;
30613 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030614 WDI_LowLevelIndType wdiInd;
30615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30616
30617 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30618 "%s: Event RESULTS Indication", __func__);
30619
30620 /* sanity check */
30621 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30622 ( NULL == pEventData->pEventData))
30623 {
30624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30625 "%s: Invalid parameters", __func__);
30626 WDI_ASSERT(0);
30627 return WDI_STATUS_E_FAILURE;
30628 }
30629
30630 /* extract response and send it to UMAC */
30631 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30632
30633 /* Fill in the indication parameters */
30634 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30635
Dino Mycled3d50022014-07-07 12:58:25 +053030636 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30637 = pLinkLayerStatsInd;
30638
30639 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30640
30641
30642 /* Need to fill in the MAC address */
30643 if ( WDI_STATUS_SUCCESS !=
30644 WDI_STATableGetStaMacAddr(pWDICtx,
30645 halLLStatsResults->iface_id,
30646 &macAddr))
30647 {
30648 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30649 " ifaceId: %u does not exist in the WDI Station Table",
30650 halLLStatsResults->iface_id);
30651
30652 return WDI_STATUS_E_FAILURE;
30653 }
30654 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30655 macAddr, WDI_MAC_ADDR_LEN);
30656
30657 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30658 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30659 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030660
30661 /* Notify UMAC */
30662 if (pWDICtx->wdiLowLevelIndCB)
30663 {
30664 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30665 }
30666 else
30667 {
30668 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30669 "%s: WDILowLevelIndCb is null", __func__);
30670 WDI_ASSERT(0);
30671 return WDI_STATUS_E_FAILURE;
30672 }
30673
30674 return WDI_STATUS_SUCCESS;
30675} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30676#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30677
Rajeev79dbe4c2013-10-05 11:03:42 +053030678/**
30679 @brief WDI_ProcessSetBatchScanReq -
30680 Set batch scan request to FW
30681
30682 @param pWDICtx : wdi context
30683 pEventData : indication data
30684
30685 @see
30686 @return none
30687*/
30688WDI_Status WDI_ProcessSetBatchScanReq
30689(
30690 WDI_ControlBlockType* pWDICtx,
30691 WDI_EventInfoType* pEventData
30692)
30693{
30694 WDI_SetBatchScanReqType *pWdiReq;
30695 WDI_Status wdiStatus;
30696 wpt_uint8* pSendBuffer = NULL;
30697 wpt_uint16 usDataOffset = 0;
30698 wpt_uint16 usSendSize = 0;
30699 tHalBatchScanSetParams *pHalReq;
30700 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30701
30702 /*sanity check*/
30703 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30704 {
30705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30706 "%s: Invalid parameters in set batch scan request", __func__);
30707 WDI_ASSERT(0);
30708 return WDI_STATUS_E_FAILURE;
30709 }
30710
30711
30712 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30713
30714
30715 /*get message buffer*/
30716 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30717 WDI_SET_BATCH_SCAN_REQ,
30718 sizeof(tHalBatchScanSetParams),
30719 &pSendBuffer, &usDataOffset, &usSendSize))||
30720 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30721 {
30722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30723 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30724 WDI_ASSERT(0);
30725 return WDI_STATUS_E_FAILURE;
30726 }
30727
30728 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30729
30730 pHalReq->rtt = pWdiReq->rtt;
30731 pHalReq->rfBand = pWdiReq->rfBand;
30732 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30733 pHalReq->scanInterval = pWdiReq->scanFrequency;
30734 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30735
30736 /*send set batch scan request to fw*/
30737 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30738 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30739
30740 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30741 usSendSize, pWDICtx->pfncRspCB,
30742 pWDICtx->pReqStatusUserData,
30743 WDI_SET_BATCH_SCAN_RESP);
30744
30745 return wdiStatus;
30746}
30747
30748/**
30749 @brief WDI_SetBatchScanReq
30750 This API is called to set batch scan request in FW
30751
30752 @param pBatchScanReqParam : pointer to set batch scan re param
30753 usrData : Client context
30754 setBatchScanRspCb : set batch scan resp callback
30755 @see
30756 @return SUCCESS or FAIL
30757*/
30758WDI_Status WDI_SetBatchScanReq
30759(
30760 void *pBatchScanReqParam,
30761 void *usrData,
30762 WDI_SetBatchScanCb setBatchScanRspCb
30763)
30764{
30765 WDI_EventInfoType wdiEventData;
30766
30767 /*sanity check*/
30768 if (eWLAN_PAL_FALSE == gWDIInitialized)
30769 {
30770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30771 "WDI API call before module is initialized - Fail request");
30772
30773 return WDI_STATUS_E_NOT_ALLOWED;
30774 }
30775
30776 /* fill in event data and post to the main FSM */
30777 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30778 wdiEventData.pEventData = pBatchScanReqParam;
30779 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30780 wdiEventData.pCBfnc = setBatchScanRspCb;
30781 wdiEventData.pUserData = usrData;
30782
30783 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30784}
30785
30786/**
30787 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30788
30789 @param None
30790
30791 @see
30792
30793 @return Status of the request
30794*/
30795WDI_Status
30796WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30797{
30798 WDI_EventInfoType wdiEventData;
30799
30800 /*-------------------------------------------------------------------------
30801 Sanity Check
30802 ------------------------------------------------------------------------*/
30803 if (eWLAN_PAL_FALSE == gWDIInitialized)
30804 {
30805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30806 "WDI API call before module is initialized - Fail request!");
30807
30808 return WDI_STATUS_E_NOT_ALLOWED;
30809 }
30810
30811 /*-------------------------------------------------------------------------
30812 Fill in Event data and post to the Main FSM
30813 ------------------------------------------------------------------------*/
30814 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30815 wdiEventData.pEventData = pWdiReq;
30816 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30817 wdiEventData.pCBfnc = NULL;
30818 wdiEventData.pUserData = NULL;
30819
30820 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30821}
30822
30823/**
30824 @brief WDI_TriggerBatchScanResultInd
30825 This API is called to pull batch scan result from FW
30826
30827 @param pWdiReq : pointer to get batch scan ind param
30828 @see
30829 @return SUCCESS or FAIL
30830*/
30831WDI_Status WDI_TriggerBatchScanResultInd
30832(
30833 WDI_TriggerBatchScanResultIndType *pWdiReq
30834)
30835{
30836 WDI_EventInfoType wdiEventData;
30837 /*-------------------------------------------------------------------------
30838 Sanity Check
30839 ------------------------------------------------------------------------*/
30840 if (eWLAN_PAL_FALSE == gWDIInitialized)
30841 {
30842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30843 "WDI API call before module is initialized - Fail request!");
30844
30845 return WDI_STATUS_E_NOT_ALLOWED;
30846 }
30847
30848 /*-------------------------------------------------------------------------
30849 Fill in Event data and post to the Main FSM
30850 ------------------------------------------------------------------------*/
30851 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30852 wdiEventData.pEventData = pWdiReq;
30853 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30854 wdiEventData.pCBfnc = NULL;
30855 wdiEventData.pUserData = NULL;
30856
30857 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30858}
Rajeev79dbe4c2013-10-05 11:03:42 +053030859#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030860
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030861/**
30862 @brief Process Update Channel Rsp function (called when a response is
30863 being received over the bus from HAL)
30864
30865 @param pWDICtx: pointer to the WLAN DAL context
30866 pEventData: pointer to the event information structure
30867
30868 @see
30869 @return Result of the function call
30870*/
30871WDI_Status
30872WDI_ProcessUpdateChanRsp
30873(
30874 WDI_ControlBlockType* pWDICtx,
30875 WDI_EventInfoType* pEventData
30876)
30877{
30878 WDI_Status wdiStatus;
30879 eHalStatus halStatus;
30880 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30882
30883 /*-------------------------------------------------------------------------
30884 Sanity check
30885 -------------------------------------------------------------------------*/
30886 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30887 ( NULL == pEventData->pEventData))
30888 {
30889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30890 "%s: Invalid parameters", __func__);
30891 WDI_ASSERT(0);
30892 return WDI_STATUS_E_FAILURE;
30893 }
30894
30895 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30896
30897 /*-------------------------------------------------------------------------
30898 Extract response and send it to UMAC
30899 -------------------------------------------------------------------------*/
30900 halStatus = *((eHalStatus*)pEventData->pEventData);
30901 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30902
30903 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30904
30905 return WDI_STATUS_SUCCESS;
30906}/*WDI_ProcessUpdateChanRsp*/
30907
Leo Chang0b0e45a2013-12-15 15:18:55 -080030908#ifdef FEATURE_WLAN_CH_AVOID
30909/**
30910 @brief v -WDI_ProcessChAvoidInd
30911
30912
30913 @param pWDICtx : wdi context
30914 pEventData : indication data
30915 @see
30916 @return Result of the function call
30917*/
30918WDI_Status
30919WDI_ProcessChAvoidInd
30920(
30921 WDI_ControlBlockType* pWDICtx,
30922 WDI_EventInfoType* pEventData
30923)
30924{
30925 WDI_LowLevelIndType wdiInd;
30926 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30927 wpt_uint16 rangeLoop;
30928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30929
30930 /*-------------------------------------------------------------------------
30931 Sanity check
30932 -------------------------------------------------------------------------*/
30933 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30934 (NULL == pEventData->pEventData))
30935 {
30936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30937 "%s: Invalid parameters", __func__);
30938 WDI_ASSERT(0);
30939 return WDI_STATUS_E_FAILURE;
30940 }
30941
30942 /*-------------------------------------------------------------------------
30943 Extract indication and send it to UMAC
30944 -------------------------------------------------------------------------*/
30945 wpalMemoryCopy(&chAvoidIndicationParam,
30946 pEventData->pEventData,
30947 sizeof(tHalAvoidFreqRangeIndParams));
30948
30949 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30950 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30951 chAvoidIndicationParam.avoidCnt;
30952 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30953 (void *)chAvoidIndicationParam.avoidRange,
30954 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30955 sizeof(WDI_ChAvoidFreqType));
30956 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30957 "%s: band count %d", __func__,
30958 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30959 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30960 {
30961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30962 "%s: srart freq %d, end freq %d", __func__,
30963 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30964 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30965 }
30966
30967 /*Notify UMAC*/
30968 if (pWDICtx->wdiLowLevelIndCB)
30969 {
30970 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30971 }
30972
30973 return WDI_STATUS_SUCCESS;
30974}
Atul Mittalc0f739f2014-07-31 13:47:47 +053030975
Leo Chang0b0e45a2013-12-15 15:18:55 -080030976#endif /* FEATURE_WLAN_CH_AVOID */
30977
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030978/**
30979 @brief Process OBSS Start scan result indication
30980
30981 @param pWDICtx: pointer to the WLAN DAL context
30982 pEventData: pointer to the event information structure
30983
30984 @see
30985 @return Result of the function call
30986*/
30987WDI_Status
30988WDI_ProcessHT40OBSSScanInd
30989(
30990 WDI_ControlBlockType* pWDICtx,
30991 WDI_EventInfoType* pEventData
30992)
30993{
30994 wpt_uint8* pSendBuffer = NULL;
30995 wpt_uint16 usDataOffset = 0;
30996 wpt_uint16 usSendSize = 0;
30997 wpt_uint16 usLen = 0;
30998 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
30999 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
31000 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
31001 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31002
31003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31004
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053031005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031006 "%s", __func__);
31007
31008 /*-------------------------------------------------------------------------
31009 Sanity check
31010 -------------------------------------------------------------------------*/
31011 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31012 {
31013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31014 "%s: Invalid parameters", __func__);
31015 WDI_ASSERT(0);
31016 return WDI_STATUS_E_FAILURE;
31017 }
31018 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
31019
31020 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
31021 /*-----------------------------------------------------------------------
31022 Get message buffer
31023 -----------------------------------------------------------------------*/
31024
31025 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31026 WDI_START_HT40_OBSS_SCAN_IND,
31027 sizeof(tHT40ObssScanIndType),
31028 &pSendBuffer, &usDataOffset, &usSendSize))||
31029 ( usSendSize < (usDataOffset + usLen )))
31030 {
31031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31032 "Unable to get send buffer in HT40 OBSS Start req %p ",
31033 pEventData);
31034 WDI_ASSERT(0);
31035 return WDI_STATUS_E_FAILURE;
31036 }
31037 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
31038 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
31039 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
31040 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
31041 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
31042 pHT40ObssScanInd->OBSSScanActiveDwellTime =
31043 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
31044 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
31045 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
31046 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
31047 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
31048 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
31049 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
31050 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
31051 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
31052 pHT40ObssScanInd->OBSSScanActivityThreshold =
31053 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
31054 pHT40ObssScanInd->selfStaIdx =
31055 pwdiHT40OBSSScanInd->selfStaIdx;
31056 pHT40ObssScanInd->bssIdx =
31057 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053031058 pHT40ObssScanInd->currentOperatingClass =
31059 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031060 pHT40ObssScanInd->fortyMHZIntolerent =
31061 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
31062 pHT40ObssScanInd->channelCount =
31063 pwdiHT40OBSSScanInd->channelCount;
31064
31065 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
31066 WDI_ROAM_SCAN_MAX_CHANNELS);
31067 pHT40ObssScanInd->ieFieldLen =
31068 pwdiHT40OBSSScanInd->ieFieldLen;
31069
31070 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
31071 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
31072 pWDICtx->pReqStatusUserData = NULL;
31073 pWDICtx->pfncRspCB = NULL;
31074
31075 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
31076 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
31077
31078 /*-------------------------------------------------------------------------
31079 Send OBSS Start Indication to HAL
31080 -------------------------------------------------------------------------*/
31081 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31082 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31083
31084} /*End of WDI_ProcessHT40OBSSStartScanInd*/
31085
31086
31087/**
31088 @brief wdi_HT40OBSSScanInd
31089 This API is called to start OBSS scan
31090
31091 @param pWdiReq : pointer to get ind param
31092 @see
31093 @return SUCCESS or FAIL
31094*/
31095WDI_Status WDI_HT40OBSSScanInd
31096(
31097 WDI_HT40ObssScanParamsType *pWdiReq
31098)
31099{
31100 WDI_EventInfoType wdiEventData;
31101
31102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31103 "%s", __func__);
31104 /*-------------------------------------------------------------------------
31105 Sanity Check
31106 ------------------------------------------------------------------------*/
31107 if (eWLAN_PAL_FALSE == gWDIInitialized)
31108 {
31109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31110 "WDI API call before module is initialized - Fail request!");
31111
31112 return WDI_STATUS_E_NOT_ALLOWED;
31113 }
31114
31115 /*-------------------------------------------------------------------------
31116 Fill in Event data and post to the Main FSM
31117 ------------------------------------------------------------------------*/
31118 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
31119 wdiEventData.pEventData = pWdiReq;
31120 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
31121 wdiEventData.pCBfnc = NULL;
31122 wdiEventData.pUserData = NULL;
31123
31124
31125 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31126}
31127
31128/**
31129 @brief Process OBSS Stop scan result
31130
31131 @param pWDICtx: pointer to the WLAN DAL context
31132 pEventData: pointer to the event information structure
31133
31134 @see
31135 @return Result of the function call
31136*/
31137WDI_Status
31138WDI_ProcessHT40OBSSStopScanInd
31139(
31140 WDI_ControlBlockType* pWDICtx,
31141 WDI_EventInfoType* pEventData
31142)
31143{
31144 wpt_uint8* pSendBuffer = NULL;
31145 wpt_uint16 usDataOffset = 0;
31146 wpt_uint16 usSendSize = 0;
31147 wpt_uint16 usLen = 0;
31148 wpt_uint8 *wdiBssIdx = 0;
31149 tANI_U8 *bssIdx = 0;
31150 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31151
31152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31153
31154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31155 "%s", __func__);
31156
31157 /*-------------------------------------------------------------------------
31158 Sanity check
31159 -------------------------------------------------------------------------*/
31160 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31161 {
31162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31163 "%s: Invalid parameters", __func__);
31164 WDI_ASSERT(0);
31165 return WDI_STATUS_E_FAILURE;
31166 }
31167 bssIdx = (wpt_uint8*)pEventData->pEventData;
31168 /*-----------------------------------------------------------------------
31169 Get message buffer
31170 -----------------------------------------------------------------------*/
31171
31172 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31173 WDI_STOP_HT40_OBSS_SCAN_IND,
31174 sizeof(tANI_U8),
31175 &pSendBuffer, &usDataOffset, &usSendSize))||
31176 ( usSendSize < (usDataOffset + usLen )))
31177 {
31178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31179 "Unable to get send buffer in HT40 OBSS Start req %p ",
31180 pEventData);
31181 WDI_ASSERT(0);
31182 return WDI_STATUS_E_FAILURE;
31183 }
31184
31185 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31186 bssIdx = wdiBssIdx;
31187
31188 pWDICtx->pReqStatusUserData = NULL;
31189 pWDICtx->pfncRspCB = NULL;
31190
31191 /*-------------------------------------------------------------------------
31192 Send DHCP Start Indication to HAL
31193 -------------------------------------------------------------------------*/
31194 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31195 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31196} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31197
31198/**
31199 @brief WDI_HT40OBSSStopScanInd
31200 This API is called to start OBSS scan
31201 @param pWdiReq : pointer to get ind param
31202 @see
31203 @return SUCCESS or FAIL
31204*/
31205WDI_Status WDI_HT40OBSSStopScanInd
31206(
31207 wpt_uint8 bssIdx
31208)
31209{
31210 WDI_EventInfoType wdiEventData;
31211
31212 /*-------------------------------------------------------------------------
31213 Sanity Check
31214 ------------------------------------------------------------------------*/
31215 if (eWLAN_PAL_FALSE == gWDIInitialized)
31216 {
31217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31218 "WDI API call before module is initialized - Fail request!");
31219
31220 return WDI_STATUS_E_NOT_ALLOWED;
31221 }
31222
31223 /*-------------------------------------------------------------------------
31224 Fill in Event data and post to the Main FSM
31225 ------------------------------------------------------------------------*/
31226 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31227 wdiEventData.pEventData = &bssIdx;
31228 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31229 wdiEventData.pCBfnc = NULL;
31230 wdiEventData.pUserData = NULL;
31231
31232 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31233}
31234
c_hpothu86041002014-04-14 19:06:51 +053031235WDI_Status
31236WDI_printRegInfo
31237(
31238 WDI_ControlBlockType* pWDICtx,
31239 WDI_EventInfoType* pEventData
31240)
31241{
31242 tHalRegDebugInfo *pRegTable;
31243 tHalRegDebugInfoParams *pRegParams;
31244 uint32 cnt=0;
31245
31246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31247 "%s: ", __func__);
31248 /*-------------------------------------------------------------------------
31249 Sanity check
31250 -------------------------------------------------------------------------*/
31251 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31252 ( NULL == pEventData->pEventData))
31253 {
31254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31255 "%s: Invalid parameters", __func__);
31256 WDI_ASSERT(0);
31257 return WDI_STATUS_E_FAILURE;
31258 }
31259
31260 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31261
31262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31263 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31264 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31265
31266 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31267
31268 if (pRegParams->regCount <= 0)
31269 {
31270 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31271 "%s incorrect parameters passed", __func__);
31272 return WDI_STATUS_E_FAILURE;
31273 }
31274
31275 while(pRegParams->regCount--)
31276 {
31277 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31278 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31279 cnt++;
31280 }
31281
31282 return WDI_STATUS_SUCCESS;
31283}
c_hpothu92367912014-05-01 15:18:17 +053031284
31285/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031286 * FUNCTION: WDI_delBaInd
31287 * send the delBA to peer.
31288 */
31289
31290WDI_Status
31291WDI_delBaInd
31292(
31293 WDI_ControlBlockType* pWDICtx,
31294 WDI_EventInfoType* pEventData
31295
31296)
31297{
31298 tHalWlanDelBaIndMsg halDelBaInd;
31299 WDI_LowLevelIndType wdiInd;
31300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31301
31302 /*-------------------------------------------------------------------------
31303 Sanity check
31304 -------------------------------------------------------------------------*/
31305 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31306 ( NULL == pEventData->pEventData))
31307 {
31308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31309 "%s: Invalid parameters", __func__);
31310 WDI_ASSERT(0);
31311 return WDI_STATUS_E_FAILURE;
31312 }
31313
31314 /*-------------------------------------------------------------------------
31315 Extract indication and send it to UMAC
31316 -------------------------------------------------------------------------*/
31317
31318 /* Parameters need to be unpacked according to HAL struct*/
31319 wpalMemoryCopy( &halDelBaInd,
31320 pEventData->pEventData,
31321 sizeof(halDelBaInd));
31322
31323 /*Fill in the indication parameters*/
31324 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31325
31326 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31327 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31328 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31329
31330 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31331 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31332 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31333
31334 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31335 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31336 if ( pWDICtx->wdiLowLevelIndCB )
31337 {
31338 /*Notify UMAC*/
31339 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31340 }
31341
31342 return WDI_STATUS_SUCCESS;
31343
31344
31345}
31346
31347/*
c_hpothu92367912014-05-01 15:18:17 +053031348 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31349 * send the response to PE with beacon miss count
31350 * received from WDI.
31351 */
31352WDI_Status
31353WDI_ProcessGetBcnMissRateRsp
31354(
31355 WDI_ControlBlockType* pWDICtx,
31356 WDI_EventInfoType* pEventData
31357)
31358{
31359 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31360 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31361
31362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31363 "In %s",__func__);
31364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31365
31366 /*-------------------------------------------------------------------------
31367 Sanity check
31368 -------------------------------------------------------------------------*/
31369 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31370 ( NULL == pEventData->pEventData))
31371 {
31372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31373 "%s: Invalid parameters", __func__);
31374 WDI_ASSERT(0);
31375 return WDI_STATUS_E_FAILURE;
31376 }
31377
31378 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31379 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31380
31381 /*Notify UMAC*/
31382 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31383 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31384 return WDI_STATUS_SUCCESS;
31385}
31386
31387/*
31388 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31389 * Request to WDI to get missed beacon rate.
31390 */
31391WDI_Status
31392WDI_ProcessGetBcnMissRateReq
31393(
31394 WDI_ControlBlockType* pWDICtx,
31395 WDI_EventInfoType* pEventData
31396)
31397{
31398 wpt_uint8* pSendBuffer = NULL;
31399 wpt_uint16 usDataOffset = 0;
31400 wpt_uint16 usSendSize = 0;
31401 wpt_uint8 ucCurrentBSSSesIdx = 0;
31402 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031403 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31404 tHalBcnMissRateReqParams halBcnMissRateReq;
31405
31406/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31407
31408 /*-------------------------------------------------------------------------
31409 Sanity check
31410 -------------------------------------------------------------------------*/
31411 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31412 ( NULL == pEventData->pCBfnc ) )
31413 {
31414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31415 "%s: Invalid parameters", __func__);
31416 WDI_ASSERT(0);
31417 return WDI_STATUS_E_FAILURE;
31418 }
31419
31420 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31421
31422 wpalMutexAcquire(&pWDICtx->wptMutex);
31423
31424 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31425 pEventData->pEventData, &pBSSSes);
31426 if ( NULL == pBSSSes )
31427 {
31428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31429 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031430 MAC_ADDRESS_STR, __func__,
31431 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031432 wpalMutexRelease(&pWDICtx->wptMutex);
31433 return WDI_STATUS_E_NOT_ALLOWED;
31434 }
31435 wpalMutexRelease(&pWDICtx->wptMutex);
31436
31437 /*-----------------------------------------------------------------------
31438 Get message buffer
31439 -----------------------------------------------------------------------*/
31440 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31441 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31442 sizeof(tHalBcnMissRateReqParams),
31443 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31444 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31445 {
31446 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31447 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31448 pEventData);
31449 WDI_ASSERT(0);
31450 return WDI_STATUS_E_FAILURE;
31451 }
31452
31453 pWDICtx->wdiReqStatusCB = NULL;
31454 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31455
31456 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31457
31458 wpalMemoryCopy( pSendBuffer+usDataOffset,
31459 &halBcnMissRateReq,
31460 sizeof(tHalBcnMissRateReqParams));
31461 /*-------------------------------------------------------------------------
31462 Send Get STA Request to HAL
31463 -------------------------------------------------------------------------*/
31464 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31465 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31466}
31467
31468/**
31469 @brief WDI_GetBcnMissRate
31470
31471 @param pUserData: user data will be passed back with the
31472 callback
31473 WDI_GetBcnMissRateCb: callback for passing back the response
31474 of the get stats operation received from the device
31475 bssid: bssid, to send bssIdx to FW
31476
31477 @return SUCCESS or FAIL
31478*/
31479WDI_Status WDI_GetBcnMissRate( void *pUserData,
31480 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31481 tANI_U8 *bssid )
31482{
31483 WDI_EventInfoType wdiEventData;
31484
31485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31486
31487 /*------------------------------------------------------------------------
31488 Sanity Check
31489 ------------------------------------------------------------------------*/
31490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31491 {
31492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31493 "WDI API call before module is initialized - Fail request");
31494
31495 return WDI_STATUS_E_NOT_ALLOWED;
31496 }
31497
31498 /*------------------------------------------------------------------------
31499 Fill in Event data and post to the Main FSM
31500 ------------------------------------------------------------------------*/
31501 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31502 wdiEventData.pEventData = bssid;
31503 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31504 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31505 wdiEventData.pUserData = pUserData;
31506
31507 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31508}
Abhishek Singh85b74712014-10-08 11:38:19 +053031509
31510/*
31511 * FUNCTION: WDI_ProcessGetFwStatsRsp
31512 * send the response with FW stats asked.
31513 */
31514WDI_Status
31515 WDI_ProcessGetFwStatsRsp
31516(
31517 WDI_ControlBlockType* pWDICtx,
31518 WDI_EventInfoType* pEventData
31519)
31520{
31521 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31522 tpHalfwStatsRspParams pHalFwstatsRsp;
31523 WDI_FWStatsResults fwStats;
31524
31525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31526
31527 /*-------------------------------------------------------------------------
31528 Sanity check
31529 -------------------------------------------------------------------------*/
31530 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31531 ( NULL == pEventData->pEventData))
31532 {
31533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31534 "%s: Invalid parameters", __func__);
31535 WDI_ASSERT(0);
31536 return WDI_STATUS_E_FAILURE;
31537 }
31538 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31539 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31540
31541 if(pHalFwstatsRsp->length)
31542 {
31543 switch( pHalFwstatsRsp->type )
31544 {
31545 case FW_UBSP_STATS:
31546 {
31547 ubspFwStats *ubspStatsfromFw;
31548
31549 fwStats.type = pHalFwstatsRsp->type;
31550 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31551 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31552 ubspStatsfromFw->ubsp_enter_cnt;
31553 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31554 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31555 }
31556 break;
31557 default:
31558 {
31559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31560 "%s: No handling for stats type %d", __func__,
31561 pHalFwstatsRsp->type);
31562 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31563 NULL, pWDICtx->pRspCBUserData);
31564 return WDI_STATUS_E_FAILURE;
31565 }
31566 }
31567 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31568 }
31569 else
31570 {
31571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31572 "%s: Length = 0 for type %d return failure ", __func__,
31573 pHalFwstatsRsp->type);
31574 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31575 NULL, pWDICtx->pRspCBUserData);
31576 return WDI_STATUS_E_FAILURE;
31577 }
31578 return WDI_STATUS_SUCCESS;
31579}
31580
31581/*
31582 * FUNCTION: WDI_ProcessGetFwStatsReq
31583 * Request to WDI to get FW Stats.
31584 */
31585WDI_Status
31586 WDI_ProcessGetFwStatsReq
31587(
31588 WDI_ControlBlockType* pWDICtx,
31589 WDI_EventInfoType* pEventData
31590)
31591{
31592 wpt_uint8* pSendBuffer = NULL;
31593 wpt_uint16 usDataOffset = 0;
31594 wpt_uint16 usSendSize = 0;
31595 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31596 tHalfwStatsReqParams halFwStatsReq;
31597
31598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31599
31600 /*-------------------------------------------------------------------------
31601 Sanity check
31602 -------------------------------------------------------------------------*/
31603 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31604 ( NULL == pEventData->pCBfnc ) )
31605 {
31606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31607 "%s: Invalid parameters", __func__);
31608 WDI_ASSERT(0);
31609 return WDI_STATUS_E_FAILURE;
31610 }
31611
31612 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31613
31614 /*-----------------------------------------------------------------------
31615 Get message buffer
31616 -----------------------------------------------------------------------*/
31617 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31618 pWDICtx, WDI_GET_FW_STATS_REQ,
31619 sizeof(tHalfwStatsReqParams),
31620 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31621 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31622 {
31623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31624 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31625 pEventData);
31626 WDI_ASSERT(0);
31627 return WDI_STATUS_E_FAILURE;
31628 }
31629
31630 pWDICtx->wdiReqStatusCB = NULL;
31631 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31632 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31633 wpalMemoryCopy( pSendBuffer+usDataOffset,
31634 &halFwStatsReq,
31635 sizeof(tHalfwStatsReqParams));
31636 /*-------------------------------------------------------------------------
31637 Send Get STA Request to HAL
31638 -------------------------------------------------------------------------*/
31639 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31640 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31641}
31642
Sunil Duttbd736ed2014-05-26 21:19:41 +053031643#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31644
31645/**
31646 @brief WDI_LLStatsSetReq
31647 This API is called to set link layer stats request in FW
31648
31649 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31650 wdiLLStatsSetRspCb : set link layer stats resp callback
31651 usrData : Client context
31652 @see
31653 @return SUCCESS or FAIL
31654*/
31655WDI_Status
31656WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31657 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31658 void* pUserData)
31659{
31660 WDI_EventInfoType wdiEventData;
31661
31662 /*------------------------------------------------------------------------
31663 Sanity Check
31664 ------------------------------------------------------------------------*/
31665 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31666 {
31667 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31668 "WDI API call before module is initialized - Fail request");
31669
31670 return WDI_STATUS_E_NOT_ALLOWED;
31671 }
31672
31673 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31674 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31675 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31676 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31677 wdiEventData.pUserData = pUserData;
31678
31679 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31680}
31681
31682/**
31683 @brief WDI_ProcessLLStatsSetReq -
31684 Set Link Layer Stats request to FW
31685
31686 @param pWDICtx : wdi context
31687 pEventData : indication data
31688
31689 @see
31690 @return none
31691*/
31692WDI_Status
31693WDI_ProcessLLStatsSetReq
31694(
31695 WDI_ControlBlockType* pWDICtx,
31696 WDI_EventInfoType* pEventData
31697)
31698{
31699 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31700 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31701 wpt_uint8* pSendBuffer = NULL;
31702 wpt_uint16 usSendSize = 0;
31703 wpt_uint16 usDataOffset = 0;
31704 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31705
31706 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31707 ( NULL == pEventData->pCBfnc ))
31708 {
31709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31710 "%s: Invalid parameters", __func__);
31711 WDI_ASSERT(0);
31712 return WDI_STATUS_E_FAILURE;
31713 }
31714
31715 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31716 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31717
31718 /*-----------------------------------------------------------------------
31719 Get message buffer
31720 ! TO DO : proper conversion into the HAL Message Request Format
31721 -----------------------------------------------------------------------*/
31722 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31723 pWDICtx,
31724 WDI_LL_STATS_SET_REQ,
31725 sizeof(tHalMacLlSetStatsReqParams),
31726 &pSendBuffer, &usDataOffset,
31727 &usSendSize))||
31728 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31729 {
31730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31731 "Unable to get send buffer in %s %p %p %p", __func__,
31732 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31733 WDI_ASSERT(0);
31734 return WDI_STATUS_E_FAILURE;
31735 }
31736
31737
Dino Mycled3d50022014-07-07 12:58:25 +053031738 /* Need to fill in the self STA Index */
31739 if ( WDI_STATUS_SUCCESS !=
31740 WDI_STATableFindStaidByAddr(pWDICtx,
31741 pwdiLLStatsSetReqParams->macAddr,
31742 &halLLStatsSetParams.sta_id))
31743 {
31744 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31745 MAC_ADDRESS_STR
31746 ": This station does not exist in the WDI Station Table",
31747 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31748
31749 wpalMemoryFree(pSendBuffer);
31750 return WDI_STATUS_E_FAILURE;
31751 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031752
31753 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031754 halLLStatsSetParams.mpdu_size_threshold =
31755 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31756 halLLStatsSetParams.aggressive_statistics_gathering =
31757 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31758
31759 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31760 " halLLStatsSetParams.req_id = %u",
31761 halLLStatsSetParams.req_id);
31762 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31763 " halLLStatsSetParams.sta_id = %u",
31764 halLLStatsSetParams.sta_id);
31765 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31766 " halLLStatsSetParams.mpdu_size_threshold = %u",
31767 halLLStatsSetParams.mpdu_size_threshold);
31768 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31769 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31770 halLLStatsSetParams.aggressive_statistics_gathering);
31771
31772 wpalMemoryCopy(pSendBuffer+usDataOffset,
31773 &halLLStatsSetParams,
31774 sizeof(halLLStatsSetParams));
31775
31776 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31777
31778 /*-------------------------------------------------------------------------
31779 Send Clear Link Layer Stats Request to HAL
31780 -------------------------------------------------------------------------*/
31781 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31782 wdiLLStatsSetCb, pEventData->pUserData,
31783 WDI_LL_STATS_SET_RSP);
31784}
31785
31786/**
31787 @brief WDI_LLStatsGetReq
31788 This API is called to get link layer stats request in FW
31789
31790 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31791 wdiLLStatsGetRspCb : get link layer stats resp callback
31792 usrData : Client context
31793 @see
31794 @return SUCCESS or FAIL
31795*/
31796WDI_Status
31797WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31798 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31799 void* pUserData)
31800{
31801 WDI_EventInfoType wdiEventData;
31802
31803 /*------------------------------------------------------------------------
31804 Sanity Check
31805 ------------------------------------------------------------------------*/
31806 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31807 {
31808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31809 "WDI API call before module is initialized - Fail request");
31810
31811 return WDI_STATUS_E_NOT_ALLOWED;
31812 }
31813
31814 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31815 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31816 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31817 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31818 wdiEventData.pUserData = pUserData;
31819
31820 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31821}
31822
31823/**
31824 @brief WDI_ProcessLLStatsGetReq -
31825 Get Link Layer Stats request to FW
31826
31827 @param pWDICtx : wdi context
31828 pEventData : indication data
31829
31830 @see
31831 @return none
31832*/
31833WDI_Status
31834WDI_ProcessLLStatsGetReq
31835(
31836 WDI_ControlBlockType* pWDICtx,
31837 WDI_EventInfoType* pEventData
31838)
31839{
31840 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31841 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31842 wpt_uint8* pSendBuffer = NULL;
31843 wpt_uint16 usSendSize = 0;
31844 wpt_uint16 usDataOffset = 0;
31845 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31846
31847 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31848 ( NULL == pEventData->pCBfnc ))
31849 {
31850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31851 "%s: Invalid parameters", __func__);
31852 WDI_ASSERT(0);
31853 return WDI_STATUS_E_FAILURE;
31854 }
31855
31856 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31857 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31858
31859 /*-----------------------------------------------------------------------
31860 Get message buffer
31861 ! TO DO : proper conversion into the HAL Message Request Format
31862 -----------------------------------------------------------------------*/
31863 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31864 pWDICtx,
31865 WDI_LL_STATS_GET_REQ,
31866 sizeof(tHalMacLlGetStatsReqParams),
31867 &pSendBuffer, &usDataOffset,
31868 &usSendSize))||
31869 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31870 {
31871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31872 "Unable to get send buffer in %s %p %p %p", __func__,
31873 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31874 WDI_ASSERT(0);
31875 return WDI_STATUS_E_FAILURE;
31876 }
Dino Mycled3d50022014-07-07 12:58:25 +053031877 /* Need to fill in the self STA Index */
31878 if ( WDI_STATUS_SUCCESS !=
31879 WDI_STATableFindStaidByAddr(pWDICtx,
31880 pwdiLLStatsGetReqParams->macAddr,
31881 &halLLStatsGetParams.sta_id))
31882 {
31883 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31884 MAC_ADDRESS_STR
31885 ": This station does not exist in the WDI Station Table",
31886 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31887
31888 wpalMemoryFree(pSendBuffer);
31889 return WDI_STATUS_E_FAILURE;
31890 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031891
31892 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031893 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31894
31895 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31896 " halLLStatsGetParams.req_id = %u",
31897 halLLStatsGetParams.req_id);
31898 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31899 " halLLStatsGetParams.staId = %u",
31900 halLLStatsGetParams.sta_id);
31901 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31902 " halLLStatsGetParams.Mask = %u",
31903 halLLStatsGetParams.param_id_mask);
31904
31905 wpalMemoryCopy(pSendBuffer+usDataOffset,
31906 &halLLStatsGetParams,
31907 sizeof(halLLStatsGetParams));
31908
31909 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31910
31911 /*-------------------------------------------------------------------------
31912 Send Clear Link Layer Stats Request to HAL
31913 -------------------------------------------------------------------------*/
31914 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31915 wdiLLStatsGetCb, pEventData->pUserData,
31916 WDI_LL_STATS_GET_RSP);
31917}
31918
31919/**
31920 @brief WDI_LLStatsClearReq
31921 This API is called to clear link layer stats request in FW
31922
31923 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
31924 wdiLLStatsSetRspCb : clear link layer stats resp callback
31925 usrData : Client context
31926 @see
31927 @return SUCCESS or FAIL
31928*/
31929WDI_Status
31930WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
31931 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
31932 void* pUserData)
31933{
31934 WDI_EventInfoType wdiEventData;
31935
31936 /*------------------------------------------------------------------------
31937 Sanity Check
31938 ------------------------------------------------------------------------*/
31939 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31940 {
31941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31942 "WDI API call before module is initialized - Fail request");
31943
31944 return WDI_STATUS_E_NOT_ALLOWED;
31945 }
31946
31947 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
31948 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
31949 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
31950 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
31951 wdiEventData.pUserData = pUserData;
31952
31953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31954 "%s:%d Enter", __func__, __LINE__);
31955
31956 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31957}
31958
31959/**
31960 @brief WDI_ProcessLLStatsClearReq -
31961 Clear Link Layer Stats request to FW
31962
31963 @param pWDICtx : wdi context
31964 pEventData : indication data
31965
31966 @see
31967 @return none
31968*/
31969WDI_Status
31970WDI_ProcessLLStatsClearReq
31971(
31972 WDI_ControlBlockType* pWDICtx,
31973 WDI_EventInfoType* pEventData
31974)
31975{
31976 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
31977 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
31978 wpt_uint8* pSendBuffer = NULL;
31979 wpt_uint16 usSendSize = 0;
31980 wpt_uint16 usDataOffset = 0;
31981 tHalMacLlClearStatsReqParams halLLStatsClearParams;
31982
31983 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31984 ( NULL == pEventData->pCBfnc ))
31985 {
31986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31987 "%s: Invalid parameters", __func__);
31988 WDI_ASSERT(0);
31989 return WDI_STATUS_E_FAILURE;
31990 }
31991
31992 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
31993 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
31994
31995 /*-----------------------------------------------------------------------
31996 Get message buffer
31997 ! TO DO : proper conversion into the HAL Message Request Format
31998 -----------------------------------------------------------------------*/
31999 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32000 pWDICtx,
32001 WDI_LL_STATS_CLEAR_REQ,
32002 sizeof(tHalMacLlClearStatsReqParams),
32003 &pSendBuffer, &usDataOffset,
32004 &usSendSize))||
32005 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
32006 {
32007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32008 "Unable to get send buffer in %s %p %p %p", __func__,
32009 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
32010 WDI_ASSERT(0);
32011 return WDI_STATUS_E_FAILURE;
32012 }
Dino Mycled3d50022014-07-07 12:58:25 +053032013 /* Need to fill in the self STA Index */
32014 if ( WDI_STATUS_SUCCESS !=
32015 WDI_STATableFindStaidByAddr(pWDICtx,
32016 pwdiLLStatsClearReqParams->macAddr,
32017 &halLLStatsClearParams.sta_id))
32018 {
32019 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32020 MAC_ADDRESS_STR
32021 ": This station does not exist in the WDI Station Table",
32022 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
32023
32024 wpalMemoryFree(pSendBuffer);
32025 return WDI_STATUS_E_FAILURE;
32026 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032027
32028 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032029 halLLStatsClearParams.stats_clear_req_mask =
32030 pwdiLLStatsClearReqParams->statsClearReqMask;
32031 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
32032
32033 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32034 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
32035 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32036 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
32037 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32038 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
32039 halLLStatsClearParams.stats_clear_req_mask);
32040 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32041 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
32042
32043 wpalMemoryCopy(pSendBuffer+usDataOffset,
32044 &halLLStatsClearParams,
32045 sizeof(halLLStatsClearParams));
32046
32047 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32048
32049 /*-------------------------------------------------------------------------
32050 Send Clear Link Layer Stats Request to HAL
32051 -------------------------------------------------------------------------*/
32052 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32053 wdiLLStatsClearCb, pEventData->pUserData,
32054 WDI_LL_STATS_CLEAR_RSP);
32055}
32056#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053032057
Abhishek Singh85b74712014-10-08 11:38:19 +053032058WDI_Status WDI_FWStatsGetReq( void* pUserData,
32059 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
32060 wpt_uint32 stats)
32061{
32062 WDI_EventInfoType wdiEventData;
32063
32064 /*------------------------------------------------------------------------
32065 Sanity Check
32066 ------------------------------------------------------------------------*/
32067 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32068 {
32069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32070 "WDI API call before module is initialized - Fail request");
32071 return WDI_STATUS_E_NOT_ALLOWED;
32072 }
32073 /*------------------------------------------------------------------------
32074 Fill in Event data and post to the Main FSM
32075 ------------------------------------------------------------------------*/
32076 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
32077 wdiEventData.pEventData = (void *)&stats;
32078 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
32079 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
32080 wdiEventData.pUserData = pUserData;
32081
32082 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32083
32084}
32085
Katya Nigamf0511f62015-05-05 16:40:57 +053032086WDI_Status
32087WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
32088 WDI_MonStartRspCb wdiMonStartRspCb,
32089 void* pUserData)
32090{
32091 WDI_EventInfoType wdiEventData;
32092
32093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32094 "%s", __func__);
32095
32096 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32097 {
32098 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32099 "WDI API call before module is initialized - Fail request");
32100
32101 return WDI_STATUS_E_NOT_ALLOWED;
32102 }
32103
32104 wdiEventData.wdiRequest = WDI_MON_START_REQ;
32105 wdiEventData.pEventData = pwdiMonStartReqParams;
32106 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
32107 wdiEventData.pCBfnc = wdiMonStartRspCb;
32108 wdiEventData.pUserData = pUserData;
32109
32110 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32111}
32112
32113WDI_Status
32114WDI_ProcessMonStartReq
32115(
32116 WDI_ControlBlockType* pWDICtx,
32117 WDI_EventInfoType* pEventData
32118)
32119{
32120 WDI_MonStartReqType* pwdiMonStartReqParams;
32121 WDI_MonStartRspCb wdiMonStartCb;
32122 wpt_uint8* pSendBuffer = NULL;
32123 wpt_uint16 usSendSize = 0;
32124 wpt_uint16 usDataOffset = 0;
32125 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
32126
32127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32128 "%s", __func__);
32129
32130 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32131 ( NULL == pEventData->pCBfnc ))
32132 {
32133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32134 "%s: Invalid parameters", __func__);
32135 WDI_ASSERT(0);
32136 return WDI_STATUS_E_FAILURE;
32137 }
32138
32139 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
32140 wdiMonStartCb = (WDI_MonStartRspCb)pEventData->pCBfnc;
32141
32142 /*-----------------------------------------------------------------------
32143 Get message buffer
32144 ! TO DO : proper conversion into the HAL Message Request Format
32145 -----------------------------------------------------------------------*/
32146 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32147 pWDICtx,
32148 WDI_MON_START_REQ,
32149 sizeof(tHalEnableMonitorModeReqParams),
32150 &pSendBuffer, &usDataOffset,
32151 &usSendSize))||
32152 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
32153 {
32154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32155 "Unable to get send buffer in %s %p %p %p", __func__,
32156 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
32157 WDI_ASSERT(0);
32158 return WDI_STATUS_E_FAILURE;
32159 }
32160
32161 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
32162 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
32163 pwdiMonStartReqParams->ChannelBW);
32164 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
32165 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
32166 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
32167 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
32168 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
32169 pwdiMonStartReqParams->mmFilters[0].macAddr,
32170 sizeof( wpt_macAddr ));
32171 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
32172 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
32173 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
32174 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
32175
32176 wpalMemoryCopy(pSendBuffer+usDataOffset,
32177 &halEnableMonitorModeParams,
32178 sizeof(halEnableMonitorModeParams));
32179
32180 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32181
32182 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32183 wdiMonStartCb, pEventData->pUserData,
32184 WDI_MON_START_RSP);
32185}
32186
32187WDI_Status
32188WDI_ProcessMonStartRsp
32189(
32190 WDI_ControlBlockType* pWDICtx,
32191 WDI_EventInfoType* pEventData
32192)
32193{
32194 WDI_MonStartRspCb wdiMonStartRspCb;
32195
32196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32197 "%s: Enter ", __func__);
32198 /*-------------------------------------------------------------------------
32199 Sanity check
32200 -------------------------------------------------------------------------*/
32201 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32202 ( NULL == pEventData->pEventData))
32203 {
32204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32205 "%s: Invalid parameters", __func__);
32206 WDI_ASSERT(0);
32207 return WDI_STATUS_E_FAILURE;
32208 }
32209
32210 wdiMonStartRspCb = (WDI_MonStartRspCb)pWDICtx->pfncRspCB;
32211
32212 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32213
32214 return WDI_STATUS_SUCCESS;
32215}
32216
32217WDI_Status
32218WDI_MonStopReq(WDI_MonStopRspCb wdiMonStopRspCb,
32219 void* pUserData)
32220{
32221 WDI_EventInfoType wdiEventData;
32222
32223 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32224 "%s", __func__);
32225
32226 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32227 {
32228 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32229 "WDI API call before module is initialized - Fail request");
32230
32231 return WDI_STATUS_E_NOT_ALLOWED;
32232 }
32233
32234 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
32235 wdiEventData.pEventData = NULL;
32236 wdiEventData.uEventDataSize = sizeof(NULL);
32237 wdiEventData.pCBfnc = wdiMonStopRspCb;
32238 wdiEventData.pUserData = pUserData;
32239
32240 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32241}
32242
32243WDI_Status
32244WDI_ProcessMonStopReq
32245(
32246 WDI_ControlBlockType* pWDICtx,
32247 WDI_EventInfoType* pEventData
32248)
32249{
32250 WDI_MonStopRspCb wdiMonStopCb;
32251 wpt_uint8* pSendBuffer = NULL;
32252 wpt_uint16 usSendSize = 0;
32253 wpt_uint16 usDataOffset = 0;
32254 wpt_uint8 resetConfiguration;
32255
32256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32257 "%s", __func__);
32258
32259 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
32260 {
32261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32262 "%s: Invalid parameters", __func__);
32263 WDI_ASSERT(0);
32264 return WDI_STATUS_E_FAILURE;
32265 }
32266
32267 wdiMonStopCb = (WDI_MonStopRspCb)pEventData->pCBfnc;
32268
32269 /*-----------------------------------------------------------------------
32270 Get message buffer
32271 ! TO DO : proper conversion into the HAL Message Request Format
32272 -----------------------------------------------------------------------*/
32273 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32274 pWDICtx,
32275 WDI_MON_STOP_REQ,
32276 sizeof(wpt_uint8),
32277 &pSendBuffer, &usDataOffset,
32278 &usSendSize))||
32279 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
32280 {
32281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32282 "Unable to get send buffer in %s %p %p", __func__,
32283 pEventData, wdiMonStopCb);
32284 WDI_ASSERT(0);
32285 return WDI_STATUS_E_FAILURE;
32286 }
32287
32288 wpalMemoryCopy(pSendBuffer+usDataOffset,
32289 &resetConfiguration,
32290 sizeof(wpt_uint8));
32291
32292 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32293
32294 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32295 wdiMonStopCb, pEventData->pUserData,
32296 WDI_MON_STOP_RSP);
32297}
32298
32299WDI_Status
32300WDI_ProcessMonStopRsp
32301(
32302 WDI_ControlBlockType* pWDICtx,
32303 WDI_EventInfoType* pEventData
32304)
32305{
32306 WDI_MonStopRspCb wdiMonStopRspCb;
32307
32308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32309 "%s: Enter ", __func__);
32310 /*-------------------------------------------------------------------------
32311 Sanity check
32312 -------------------------------------------------------------------------*/
32313 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
32314 {
32315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32316 "%s: Invalid parameters", __func__);
32317 WDI_ASSERT(0);
32318 return WDI_STATUS_E_FAILURE;
32319 }
32320
32321 wdiMonStopRspCb = (WDI_MonStopRspCb)pWDICtx->pfncRspCB;
32322
32323 wdiMonStopRspCb(pWDICtx->pRspCBUserData);
32324
32325 return WDI_STATUS_SUCCESS;
32326}
32327
Dino Mycle41bdc942014-06-10 11:30:24 +053032328#ifdef WLAN_FEATURE_EXTSCAN
32329
32330/**
32331 @brief Process EXTSCAN BUffer full indication from FW
32332
32333 @param pWDICtx: pointer to the WLAN DAL context
32334 pEventData: pointer to the event information structure
32335
32336 @see
32337 @return Result of the function call
32338*/
32339WDI_Status
32340WDI_ProcessEXTScanProgressInd
32341(
32342 WDI_ControlBlockType* pWDICtx,
32343 WDI_EventInfoType* pEventData
32344)
32345{
32346 WDI_LowLevelIndType wdiInd;
32347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32348
32349 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32350 "%s: ", __func__);
32351
32352 /* sanity check */
32353 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32354 ( NULL == pEventData->pEventData))
32355 {
32356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32357 "%s: Invalid parameters", __func__);
32358 WDI_ASSERT(0);
32359 return WDI_STATUS_E_FAILURE;
32360 }
32361
32362 /* Fill in the indication parameters */
32363 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
32364
32365 /* extract response and send it to UMAC */
32366 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32367
32368 /* Notify UMAC */
32369 if (pWDICtx->wdiLowLevelIndCB)
32370 {
32371 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32372 }
32373 else
32374 {
Dino Mycled3d50022014-07-07 12:58:25 +053032375 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032376 "%s: WDILowLevelIndCb is null", __func__);
32377 WDI_ASSERT(0);
32378 return WDI_STATUS_E_FAILURE;
32379 }
32380 return WDI_STATUS_SUCCESS;
32381
32382} /* End of WDI_ProcessEXTScanProgressInd */
32383
32384
32385/**
32386 @brief Process EXTScan Scan Available indication from FW
32387
32388 @param pWDICtx: pointer to the WLAN DAL context
32389 pEventData: pointer to the event information structure
32390
32391 @see
32392 @return Result of the function call
32393*/
32394WDI_Status
32395WDI_ProcessEXTScanScanAvailableInd
32396(
32397 WDI_ControlBlockType* pWDICtx,
32398 WDI_EventInfoType* pEventData
32399)
32400{
32401 WDI_LowLevelIndType wdiInd;
32402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32403
32404 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32405 "%s: ", __func__);
32406
32407 /* sanity check */
32408 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32409 ( NULL == pEventData->pEventData))
32410 {
32411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32412 "%s: Invalid parameters", __func__);
32413 WDI_ASSERT(0);
32414 return WDI_STATUS_E_FAILURE;
32415 }
32416
32417
32418
32419 /* Fill in the indication parameters */
32420 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32421
32422 /* extract response and send it to UMAC */
32423 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32424
32425 /* Notify UMAC */
32426 if (pWDICtx->wdiLowLevelIndCB)
32427 {
32428 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32429 }
32430 else
32431 {
32432 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32433 "%s: WDILowLevelIndCb is null", __func__);
32434 WDI_ASSERT(0);
32435 return WDI_STATUS_E_FAILURE;
32436 }
32437 return WDI_STATUS_SUCCESS;
32438} /* End of WDI_ProcessEXTScanScanDoneInd */
32439
32440/**
32441 @brief Process EXTScan Result Indication indication from FW
32442
32443 @param pWDICtx: pointer to the WLAN DAL context
32444 pEventData: pointer to the event information structure
32445
32446 @see
32447 @return Result of the function call
32448*/
32449WDI_Status
32450WDI_ProcessEXTScanResultInd
32451(
32452 WDI_ControlBlockType* pWDICtx,
32453 WDI_EventInfoType* pEventData
32454)
32455{
32456 WDI_LowLevelIndType wdiInd;
32457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32458
32459 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32460 "%s: ", __func__);
32461
32462 /* sanity check */
32463 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32464 ( NULL == pEventData->pEventData))
32465 {
32466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32467 "%s: Invalid parameters", __func__);
32468 WDI_ASSERT(0);
32469 return WDI_STATUS_E_FAILURE;
32470 }
32471
32472 /* Fill in the indication parameters */
32473 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32474
32475 /* extract response and send it to UMAC */
32476 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32477
32478 /* Notify UMAC */
32479 if (pWDICtx->wdiLowLevelIndCB)
32480 {
32481 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32482 }
32483 else
32484 {
32485 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32486 "%s: WDILowLevelIndCb is null", __func__);
32487 WDI_ASSERT(0);
32488 return WDI_STATUS_E_FAILURE;
32489 }
32490 return WDI_STATUS_SUCCESS;
32491} /* End of WDI_ProcessEXTScanResultInd */
32492
32493/**
32494 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32495
32496 @param pWDICtx: pointer to the WLAN DAL context
32497 pEventData: pointer to the event information structure
32498
32499 @see
32500 @return Result of the function call
32501*/
32502WDI_Status
32503WDI_ProcessEXTScanBssidHotListResultInd
32504(
32505 WDI_ControlBlockType* pWDICtx,
32506 WDI_EventInfoType* pEventData
32507)
32508{
32509 WDI_LowLevelIndType wdiInd;
32510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32511
32512 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32513 "%s: ", __func__);
32514
32515 /* sanity check */
32516 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32517 ( NULL == pEventData->pEventData))
32518 {
32519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32520 "%s: Invalid parameters", __func__);
32521 WDI_ASSERT(0);
32522 return WDI_STATUS_E_FAILURE;
32523 }
32524
32525 /* Fill in the indication parameters */
32526 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32527
32528 /* extract response and send it to UMAC */
32529 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32530
32531 /* Notify UMAC */
32532 if (pWDICtx->wdiLowLevelIndCB)
32533 {
32534 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32535 }
32536 else
32537 {
32538 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32539 "%s: WDILowLevelIndCb is null", __func__);
32540 WDI_ASSERT(0);
32541 return WDI_STATUS_E_FAILURE;
32542 }
32543 return WDI_STATUS_SUCCESS;
32544} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32545
32546/**
32547 @brief Process EXTScan Significant RSSI Result Indication indication from FW
32548
32549 @param pWDICtx: pointer to the WLAN DAL context
32550 pEventData: pointer to the event information structure
32551
32552 @see
32553 @return Result of the function call
32554*/
32555WDI_Status
32556WDI_ProcessEXTScanSignfRssiResultInd
32557(
32558 WDI_ControlBlockType* pWDICtx,
32559 WDI_EventInfoType* pEventData
32560)
32561{
32562 WDI_LowLevelIndType wdiInd;
32563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32564
32565 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32566 "%s: ", __func__);
32567
32568 /* sanity check */
32569 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32570 ( NULL == pEventData->pEventData))
32571 {
32572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32573 "%s: Invalid parameters", __func__);
32574 WDI_ASSERT(0);
32575 return WDI_STATUS_E_FAILURE;
32576 }
32577
32578 /* Fill in the indication parameters */
32579 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
32580
32581 /* extract response and send it to UMAC */
32582 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32583
32584 /* Notify UMAC */
32585 if (pWDICtx->wdiLowLevelIndCB)
32586 {
32587 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32588 }
32589 else
32590 {
32591 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32592 "%s: WDILowLevelIndCb is null", __func__);
32593 WDI_ASSERT(0);
32594 return WDI_STATUS_E_FAILURE;
32595 }
32596 return WDI_STATUS_SUCCESS;
32597} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
32598
32599/**
32600 @brief WDI_EXTScanGetCapabilitiesReq
32601
32602 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32603 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32604 of the Req operation received from the device
32605 pUserData: user data will be passed back with the callback
32606
32607 @return SUCCESS or FAIL
32608*/
32609WDI_Status
32610WDI_EXTScanGetCapabilitiesReq(
32611 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32612 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32613 void* pUserData)
32614{
32615 WDI_EventInfoType wdiEventData;
32616
32617 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32618 "%s: %d ",__func__, __LINE__);
32619 /*------------------------------------------------------------------------
32620 Sanity Check
32621 ------------------------------------------------------------------------*/
32622 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32623 {
32624 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32625 "WDI API call before module is initialized - Fail request");
32626
32627 return WDI_STATUS_E_NOT_ALLOWED;
32628 }
32629
32630 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32631 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32632 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32633 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32634 wdiEventData.pUserData = pUserData;
32635
32636 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32637}
32638
32639/**
32640 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32641 Extended Scan Get Capability request to FW
32642
32643 @param pWDICtx : wdi context
32644 pEventData : indication data
32645
32646 @see
32647 @return none
32648*/
32649WDI_Status
32650WDI_ProcessEXTScanGetCapabilitiesReq
32651(
32652 WDI_ControlBlockType* pWDICtx,
32653 WDI_EventInfoType* pEventData
32654)
32655{
32656 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32657 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32658 wpt_uint8* pSendBuffer = NULL;
32659 wpt_uint16 usSendSize = 0;
32660 wpt_uint16 usDataOffset = 0;
32661 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32662
32663 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32664 "%s: %d Enter",__func__, __LINE__);
32665
32666 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32667 ( NULL == pEventData->pCBfnc ))
32668 {
32669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32670 "%s: Invalid parameters", __func__);
32671 WDI_ASSERT(0);
32672 return WDI_STATUS_E_FAILURE;
32673 }
32674
32675 pwdiEXTScanGetCapabilitiesReqParams =
32676 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
32677 wdiEXTScanGetCapabilitiesRspCb =
32678 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
32679
32680 /*-----------------------------------------------------------------------
32681 Get message buffer
32682 ! TO DO : proper conversion into the HAL Message Request Format
32683 -----------------------------------------------------------------------*/
32684 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32685 pWDICtx,
32686 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
32687 sizeof(halEXTScanGetCapReqParams),
32688 &pSendBuffer, &usDataOffset,
32689 &usSendSize))||
32690 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
32691 {
32692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32693 "Unable to get send buffer in %s %p %p %p", __func__,
32694 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
32695 wdiEXTScanGetCapabilitiesRspCb);
32696 WDI_ASSERT(0);
32697 return WDI_STATUS_E_FAILURE;
32698 }
32699
32700 halEXTScanGetCapReqParams.requestId =
32701 pwdiEXTScanGetCapabilitiesReqParams->requestId;
32702 halEXTScanGetCapReqParams.sessionId =
32703 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
32704
32705 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32706 " requestId %u "
32707 " sessionId %u ",
32708 halEXTScanGetCapReqParams.requestId,
32709 halEXTScanGetCapReqParams.sessionId);
32710
32711 wpalMemoryCopy(pSendBuffer+usDataOffset,
32712 &halEXTScanGetCapReqParams,
32713 sizeof(halEXTScanGetCapReqParams));
32714
32715 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32716
32717
32718 /*-------------------------------------------------------------------------
32719 Send EXTScan Stop Request to HAL
32720 -------------------------------------------------------------------------*/
32721 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32722 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
32723 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
32724}
32725
32726/**
32727 @brief WDI_EXTScanGetCachedResultsReq
32728
32729 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
32730 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
32731 of the Req operation received from the device
32732 pUserData: user data will be passed back with the callback
32733
32734 @return SUCCESS or FAIL
32735*/
32736
32737WDI_Status
32738WDI_EXTScanGetCachedResultsReq(
32739 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
32740 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
32741 void* pUserData)
32742{
32743 WDI_EventInfoType wdiEventData;
32744
32745 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32746 "%s: %d Enter",__func__, __LINE__);
32747 /*------------------------------------------------------------------------
32748 Sanity Check
32749 ------------------------------------------------------------------------*/
32750 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32751 {
32752 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32753 "WDI API call before module is initialized - Fail request");
32754
32755 return WDI_STATUS_E_NOT_ALLOWED;
32756 }
32757
32758 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
32759 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
32760 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
32761 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
32762 wdiEventData.pUserData = pUserData;
32763
32764 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32765}
32766
32767/**
32768 @brief WDI_ProcessEXTScanGetCachedResultsReq -
32769 Extended Scan Get Cached Result request to FW
32770
32771 @param pWDICtx : wdi context
32772 pEventData : indication data
32773
32774 @see
32775 @return none
32776*/
32777WDI_Status
32778WDI_ProcessEXTScanGetCachedResultsReq
32779(
32780 WDI_ControlBlockType* pWDICtx,
32781 WDI_EventInfoType* pEventData
32782)
32783{
32784 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
32785 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
32786 wpt_uint8* pSendBuffer = NULL;
32787 wpt_uint16 usSendSize = 0;
32788 wpt_uint16 usDataOffset = 0;
32789 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
32790
32791 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32792 "%s: %d Enter",__func__, __LINE__);
32793
32794 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32795 ( NULL == pEventData->pCBfnc ))
32796 {
32797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32798 "%s: Invalid parameters", __func__);
32799 WDI_ASSERT(0);
32800 return WDI_STATUS_E_FAILURE;
32801 }
32802
32803 pwdiEXTScanGetCachedResultsReqParams =
32804 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
32805 wdiEXTScanGetCachedResultsCb =
32806 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
32807
32808 /*-----------------------------------------------------------------------
32809 Get message buffer
32810 ! TO DO : proper conversion into the HAL Message Request Format
32811 -----------------------------------------------------------------------*/
32812 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32813 pWDICtx,
32814 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
32815 sizeof(tHalExtScanGetScanReq),
32816 &pSendBuffer, &usDataOffset,
32817 &usSendSize))||
32818 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
32819 {
32820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32821 "Unable to get send buffer in %s %p %p %p", __func__,
32822 pEventData, pwdiEXTScanGetCachedResultsReqParams,
32823 wdiEXTScanGetCachedResultsCb);
32824 WDI_ASSERT(0);
32825 return WDI_STATUS_E_FAILURE;
32826 }
32827
32828 halEXTScanGetScanReqParams.requestId =
32829 pwdiEXTScanGetCachedResultsReqParams->requestId;
32830 halEXTScanGetScanReqParams.sessionId =
32831 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32832 halEXTScanGetScanReqParams.flush =
32833 pwdiEXTScanGetCachedResultsReqParams->flush;
32834
32835 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32836 " requestId %u "
32837 " sessionId %u "
32838 " flush %u ",
32839 halEXTScanGetScanReqParams.requestId,
32840 halEXTScanGetScanReqParams.sessionId,
32841 halEXTScanGetScanReqParams.flush);
32842
32843 wpalMemoryCopy(pSendBuffer+usDataOffset,
32844 &halEXTScanGetScanReqParams,
32845 sizeof(halEXTScanGetScanReqParams));
32846
32847 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32848
32849
32850 /*-------------------------------------------------------------------------
32851 Send EXTScan Stop Request to HAL
32852 -------------------------------------------------------------------------*/
32853 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32854 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32855 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32856}
32857
32858/**
32859 @brief WDI_EXTScanStopReq
32860
32861 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32862 WDI_EXTScanStopRspCb: callback for passing back the response
32863 of the Req operation received from the device
32864 pUserData: user data will be passed back with the callback
32865
32866 @return SUCCESS or FAIL
32867*/
32868WDI_Status
32869WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32870 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32871 void* pUserData)
32872{
32873 WDI_EventInfoType wdiEventData;
32874
32875 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32876 "%s: %d ",__func__, __LINE__);
32877 /*------------------------------------------------------------------------
32878 Sanity Check
32879 ------------------------------------------------------------------------*/
32880 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32881 {
32882 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32883 "WDI API call before module is initialized - Fail request");
32884
32885 return WDI_STATUS_E_NOT_ALLOWED;
32886 }
32887
32888 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32889 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32890 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32891 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32892 wdiEventData.pUserData = pUserData;
32893
32894 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32895}
32896
32897/**
32898 @brief WDI_ProcessEXTScanStopReq -
32899 Extended Scan Stop request to FW
32900
32901 @param pWDICtx : wdi context
32902 pEventData : indication data
32903
32904 @see
32905 @return none
32906*/
32907WDI_Status
32908WDI_ProcessEXTScanStopReq
32909(
32910 WDI_ControlBlockType* pWDICtx,
32911 WDI_EventInfoType* pEventData
32912)
32913{
32914 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
32915 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
32916 wpt_uint8* pSendBuffer = NULL;
32917 wpt_uint16 usSendSize = 0;
32918 wpt_uint16 usDataOffset = 0;
32919 tHalExtScanStopReq halEXTScanStopReqParams;
32920
32921 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32922 "%s: %d ",__func__, __LINE__);
32923
32924 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32925 ( NULL == pEventData->pCBfnc ))
32926 {
32927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32928 "%s: Invalid parameters", __func__);
32929 WDI_ASSERT(0);
32930 return WDI_STATUS_E_FAILURE;
32931 }
32932
32933 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
32934 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
32935
32936 /*-----------------------------------------------------------------------
32937 Get message buffer
32938 ! TO DO : proper conversion into the HAL Message Request Format
32939 -----------------------------------------------------------------------*/
32940 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32941 pWDICtx,
32942 WDI_EXTSCAN_STOP_REQ,
32943 sizeof(tHalExtScanStopReq),
32944 &pSendBuffer, &usDataOffset,
32945 &usSendSize))||
32946 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
32947 {
32948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32949 "Unable to get send buffer in %s %p %p %p", __func__,
32950 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
32951 WDI_ASSERT(0);
32952 return WDI_STATUS_E_FAILURE;
32953 }
32954
32955 halEXTScanStopReqParams.requestId =
32956 pwdiEXTScanStopReqParams->requestId;
32957 halEXTScanStopReqParams.sessionId =
32958 pwdiEXTScanStopReqParams->sessionId;
32959
32960 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32961 " halEXTScanStopReqParams.requestId %u "
32962 " halEXTScanStopReqParams.sessionId %u ",
32963 halEXTScanStopReqParams.requestId,
32964 halEXTScanStopReqParams.sessionId);
32965
32966 wpalMemoryCopy(pSendBuffer+usDataOffset,
32967 &halEXTScanStopReqParams,
32968 sizeof(halEXTScanStopReqParams));
32969
32970 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32971
32972
32973 /*-------------------------------------------------------------------------
32974 Send EXTScan Stop Request to HAL
32975 -------------------------------------------------------------------------*/
32976 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32977 wdiEXTScanStopCb, pEventData->pUserData,
32978 WDI_EXTSCAN_STOP_RSP);
32979}
32980
32981/**
32982 @brief WDI_EXTScanStartReq
32983
32984 @param WDI_EXTScanStartReqParams: Req parameter for the FW
32985 WDI_EXTScanStartRspCb: callback for passing back the response
32986 of the Req operation received from the device
32987 pUserData: user data will be passed back with the callback
32988
32989 @return SUCCESS or FAIL
32990*/
32991WDI_Status
32992WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
32993 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
32994 void* pUserData)
32995{
32996 WDI_EventInfoType wdiEventData;
32997
32998 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32999 "%s: %d Enter",__func__, __LINE__);
33000 /*------------------------------------------------------------------------
33001 Sanity Check
33002 ------------------------------------------------------------------------*/
33003 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33004 {
33005 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33006 "WDI API call before module is initialized - Fail request");
33007
33008 return WDI_STATUS_E_NOT_ALLOWED;
33009 }
33010
33011 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
33012 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
33013 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
33014 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
33015 wdiEventData.pUserData = pUserData;
33016
33017 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33018}
33019
33020/**
33021 @brief WDI_ProcessEXTScanStartReq -
33022 Extended Scan Start Request to FW
33023
33024 @param pWDICtx : wdi context
33025 pEventData : indication data
33026
33027 @see
33028 @return none
33029*/
33030WDI_Status
33031WDI_ProcessEXTScanStartReq
33032(
33033 WDI_ControlBlockType* pWDICtx,
33034 WDI_EventInfoType* pEventData
33035)
33036{
33037 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
33038 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
33039 wpt_uint8* pSendBuffer = NULL;
33040 wpt_uint16 usSendSize = 0;
33041 wpt_uint16 usDataOffset = 0;
33042 tpHalExtScanStartReq pHalExtScanStartReqParams;
33043 int i = 0;
33044 int j = 0;
33045
33046 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33047 "%s: %d Enter",__func__, __LINE__);
33048
33049 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33050 ( NULL == pEventData->pCBfnc ))
33051 {
33052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33053 "%s: Invalid parameters", __func__);
33054 WDI_ASSERT(0);
33055 return WDI_STATUS_E_FAILURE;
33056 }
33057
33058 pwdiEXTScanStartReqParams =
33059 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
33060 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
33061
33062 /*-----------------------------------------------------------------------
33063 Get message buffer
33064 ! TO DO : proper conversion into the HAL Message Request Format
33065 -----------------------------------------------------------------------*/
33066 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33067 pWDICtx,
33068 WDI_EXTSCAN_START_REQ,
33069 sizeof(tHalExtScanStartReq),
33070 &pSendBuffer, &usDataOffset,
33071 &usSendSize))||
33072 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
33073 {
33074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33075 "Unable to get send buffer in %s %p %p %p", __func__,
33076 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
33077 WDI_ASSERT(0);
33078 return WDI_STATUS_E_FAILURE;
33079 }
33080
33081 pHalExtScanStartReqParams =
33082 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
33083
33084 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
33085 pHalExtScanStartReqParams->maxApPerScan =
33086 pwdiEXTScanStartReqParams->maxAPperScan;
33087 pHalExtScanStartReqParams->reportThreshold =
33088 pwdiEXTScanStartReqParams->reportThreshold;
33089 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
33090 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
33091 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
33092
33093 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
33094 {
33095 pHalExtScanStartReqParams->bucketData[i].bucketId =
33096 pwdiEXTScanStartReqParams->buckets[i].bucket;
33097 pHalExtScanStartReqParams->bucketData[i].channelBand =
33098 pwdiEXTScanStartReqParams->buckets[i].band;
33099 pHalExtScanStartReqParams->bucketData[i].period =
33100 pwdiEXTScanStartReqParams->buckets[i].period;
33101 pHalExtScanStartReqParams->bucketData[i].reportEvents =
33102 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
33103 pHalExtScanStartReqParams->bucketData[i].numChannels =
33104 pwdiEXTScanStartReqParams->buckets[i].numChannels;
33105
33106 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
33107 {
33108 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
33109 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
33110 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
33111 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
33112 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
33113 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
33114 }
33115
33116 }
33117
33118
33119 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33120 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
33121 " sessionId %u numBuckets%u ",
33122 pHalExtScanStartReqParams->basePeriod,
33123 pHalExtScanStartReqParams->maxApPerScan,
33124 pHalExtScanStartReqParams->reportThreshold,
33125 pHalExtScanStartReqParams->requestId,
33126 pHalExtScanStartReqParams->sessionId,
33127 pHalExtScanStartReqParams->numBuckets);
33128
33129 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
33130 {
33131 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
33132 " %d) bucketId %u channelBand %u period %u "
33133 " reportEvents %u numChannels %u ",i,
33134 pHalExtScanStartReqParams->bucketData[i].bucketId,
33135 pHalExtScanStartReqParams->bucketData[i].channelBand,
33136 pHalExtScanStartReqParams->bucketData[i].period,
33137 pHalExtScanStartReqParams->bucketData[i].reportEvents,
33138 pHalExtScanStartReqParams->bucketData[i].numChannels);
33139
33140 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
33141 {
33142 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33143 "%d) channel %u dwellTimeMs %u passive %u ",j,
33144 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
33145 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
33146 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
33147 }
33148
33149 }
33150
Dino Mycle41bdc942014-06-10 11:30:24 +053033151 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33152
33153 /*-------------------------------------------------------------------------
33154 Send EXTSCAN Start Request to HAL
33155 -------------------------------------------------------------------------*/
33156 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33157 wdiEXTScanStartCb, pEventData->pUserData,
33158 WDI_EXTSCAN_START_RSP);
33159}
33160
33161/**
33162 @brief WDI_EXTScanSetBSSIDHotlistReq
33163
33164 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
33165 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
33166 of the Req operation received from the device
33167 pUserData: user data will be passed back with the callback
33168
33169 @return SUCCESS or FAIL
33170*/
33171WDI_Status
33172WDI_EXTScanSetBSSIDHotlistReq(
33173 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
33174 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
33175 void* pUserData)
33176{
33177 WDI_EventInfoType wdiEventData;
33178
33179 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33180 "%s: %d Enter ",__func__, __LINE__);
33181 /*------------------------------------------------------------------------
33182 Sanity Check
33183 ------------------------------------------------------------------------*/
33184 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33185 {
33186 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33187 "WDI API call before module is initialized - Fail request");
33188
33189 return WDI_STATUS_E_NOT_ALLOWED;
33190 }
33191
33192 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
33193 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
33194 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
33195 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
33196 wdiEventData.pUserData = pUserData;
33197
33198 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33199}
33200
33201/**
33202 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
33203 Extended Scan Set BSSSID Hotlist Request to FW
33204
33205 @param pWDICtx : wdi context
33206 pEventData : indication data
33207
33208 @see
33209 @return none
33210*/
33211WDI_Status
33212WDI_ProcessEXTScanSetBSSIDHotlistReq
33213(
33214 WDI_ControlBlockType* pWDICtx,
33215 WDI_EventInfoType* pEventData
33216)
33217{
33218 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
33219 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33220 wpt_uint8* pSendBuffer = NULL;
33221 wpt_uint16 usSendSize = 0;
33222 wpt_uint16 usDataOffset = 0;
33223 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
33224 int i;
33225
33226 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33227 "%s: %d Enter",__func__, __LINE__);
33228
33229 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33230 ( NULL == pEventData->pCBfnc ))
33231 {
33232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33233 "%s: Invalid parameters", __func__);
33234 WDI_ASSERT(0);
33235 return WDI_STATUS_E_FAILURE;
33236 }
33237
33238 pwdiEXTScanSetBSSIDHotlistReqParams =
33239 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
33240 wdiEXTScanSetBSSIDHotlistRspCb =
33241 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
33242
33243 /*-----------------------------------------------------------------------
33244 Get message buffer
33245 ! TO DO : proper conversion into the HAL Message Request Format
33246 -----------------------------------------------------------------------*/
33247 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33248 pWDICtx,
33249 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
33250 sizeof(tHalBssidHotlistSetReq),
33251 &pSendBuffer, &usDataOffset,
33252 &usSendSize))||
33253 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
33254 {
33255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33256 "Unable to get send buffer in %s %p %p %p", __func__,
33257 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
33258 wdiEXTScanSetBSSIDHotlistRspCb);
33259 WDI_ASSERT(0);
33260 return WDI_STATUS_E_FAILURE;
33261 }
33262 pHalBssidHotlistSetReqParams =
33263 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
33264
33265 pHalBssidHotlistSetReqParams->requestId =
33266 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
33267
33268 pHalBssidHotlistSetReqParams->sessionId =
33269 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
33270
33271 pHalBssidHotlistSetReqParams->numAp =
33272 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
33273
33274 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
33275
33276 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
33277 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
33278 WDI_MAC_ADDR_LEN);
33279
33280 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
33281 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
33282
33283 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
33284 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
33285
33286 pHalBssidHotlistSetReqParams->ap[i].channel =
33287 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
33288
33289 }
33290
33291 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33292 "ReqID %u sessionId %u numAp %u ",
33293 pHalBssidHotlistSetReqParams->requestId,
33294 pHalBssidHotlistSetReqParams->sessionId,
33295 pHalBssidHotlistSetReqParams->numAp);
33296
33297 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
33298
33299 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33300 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33301 __func__, __LINE__, i,
33302 pHalBssidHotlistSetReqParams->ap[i].bssid,
33303 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
33304 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
33305 pHalBssidHotlistSetReqParams->ap[i].channel);
33306
33307 }
33308
33309 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33310
33311
33312 /*-------------------------------------------------------------------------
33313 Send EXTScan Stop Request to HAL
33314 -------------------------------------------------------------------------*/
33315 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33316 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
33317 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
33318}
33319
33320/**
33321 @brief WDI_EXTScanResetBSSIDHotlistReq
33322
33323 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
33324 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
33325 of the Req operation received from the device
33326 pUserData: user data will be passed back with the callback
33327
33328 @return SUCCESS or FAIL
33329*/
33330WDI_Status
33331WDI_EXTScanResetBSSIDHotlistReq(
33332 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
33333 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
33334 void* pUserData)
33335{
33336 WDI_EventInfoType wdiEventData;
33337
33338 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33339 "%s: %d",__func__, __LINE__);
33340 /*------------------------------------------------------------------------
33341 Sanity Check
33342 ------------------------------------------------------------------------*/
33343 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33344 {
33345 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33346 "WDI API call before module is initialized - Fail request");
33347
33348 return WDI_STATUS_E_NOT_ALLOWED;
33349 }
33350
33351 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
33352 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
33353 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
33354 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
33355 wdiEventData.pUserData = pUserData;
33356
33357 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33358}
33359
33360/**
33361 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
33362 Extended Scan reset BSSID hotlist Request to FW
33363
33364 @param pWDICtx : wdi context
33365 pEventData : indication data
33366
33367 @see
33368 @return none
33369*/
33370WDI_Status
33371WDI_ProcessEXTScanResetBSSIDHotlistReq
33372(
33373 WDI_ControlBlockType* pWDICtx,
33374 WDI_EventInfoType* pEventData
33375)
33376{
33377 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33378 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33379 wpt_uint8* pSendBuffer = NULL;
33380 wpt_uint16 usSendSize = 0;
33381 wpt_uint16 usDataOffset = 0;
33382 tpHalHotlistResetReq pHalHotlistResetReqParams;
33383
33384 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33385 "%s: %d",__func__, __LINE__);
33386
33387 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33388 ( NULL == pEventData->pCBfnc ))
33389 {
33390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33391 "%s: Invalid parameters", __func__);
33392 WDI_ASSERT(0);
33393 return WDI_STATUS_E_FAILURE;
33394 }
33395
33396 pwdiEXTScanResetBSSIDHotlistReqParams =
33397 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33398 wdiEXTScanResetBSSIDHotlistRspCb =
33399 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33400
33401 /*-----------------------------------------------------------------------
33402 Get message buffer
33403 ! TO DO : proper conversion into the HAL Message Request Format
33404 -----------------------------------------------------------------------*/
33405 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33406 pWDICtx,
33407 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33408 sizeof(tHalHotlistResetReq),
33409 &pSendBuffer, &usDataOffset,
33410 &usSendSize))||
33411 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33412 {
33413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33414 "Unable to get send buffer in %s %p %p %p", __func__,
33415 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33416 wdiEXTScanResetBSSIDHotlistRspCb);
33417 WDI_ASSERT(0);
33418 return WDI_STATUS_E_FAILURE;
33419 }
33420 pHalHotlistResetReqParams =
33421 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33422
33423 pHalHotlistResetReqParams->requestId =
33424 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33425
33426 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33427
33428 /*-------------------------------------------------------------------------
33429 Send EXTScan Stop Request to HAL
33430 -------------------------------------------------------------------------*/
33431 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33432 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33433 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33434}
33435
33436/**
33437 @brief WDI_EXTScanSetSignfRSSIChangeReq
33438
33439 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
33440 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
33441 of the Req operation received from the device
33442 pUserData: user data will be passed back with the callback
33443
33444 @return SUCCESS or FAIL
33445*/
33446WDI_Status
33447WDI_EXTScanSetSignfRSSIChangeReq(
33448 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
33449 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
33450 void* pUserData)
33451{
33452 WDI_EventInfoType wdiEventData;
33453
33454 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33455 "%s: %d ",__func__, __LINE__);
33456 /*------------------------------------------------------------------------
33457 Sanity Check
33458 ------------------------------------------------------------------------*/
33459 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33460 {
33461 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33462 "WDI API call before module is initialized - Fail request");
33463
33464 return WDI_STATUS_E_NOT_ALLOWED;
33465 }
33466
33467 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
33468 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
33469 wdiEventData.uEventDataSize =
33470 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
33471 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
33472 wdiEventData.pUserData = pUserData;
33473
33474 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33475}
33476
33477/**
33478 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
33479 Extended Scan set Significant RSSI change Request to FW
33480
33481 @param pWDICtx : wdi context
33482 pEventData : indication data
33483
33484 @see
33485 @return none
33486*/
33487WDI_Status
33488WDI_ProcessEXTScanSetSignifRSSIChangeReq
33489(
33490 WDI_ControlBlockType* pWDICtx,
33491 WDI_EventInfoType* pEventData
33492)
33493{
33494 WDI_EXTScanSetSignfRSSIChangeReqParams*
33495 pwdiEXTScanSetSignfRSSIChangeReqParams;
33496 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33497 wpt_uint8* pSendBuffer = NULL;
33498 wpt_uint16 usSendSize = 0;
33499 wpt_uint16 usDataOffset = 0;
33500 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
33501 int i;
33502
33503 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33504 "%s: %d Enter",__func__, __LINE__);
33505
33506 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33507 ( NULL == pEventData->pCBfnc ))
33508 {
33509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33510 "%s: Invalid parameters", __func__);
33511 WDI_ASSERT(0);
33512 return WDI_STATUS_E_FAILURE;
33513 }
33514
33515 pwdiEXTScanSetSignfRSSIChangeReqParams =
33516 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
33517 wdiEXTScanSetSignfRSSIChangeRspCb =
33518 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33519
33520 /*-----------------------------------------------------------------------
33521 Get message buffer
33522 ! TO DO : proper conversion into the HAL Message Request Format
33523 -----------------------------------------------------------------------*/
33524 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33525 pWDICtx,
33526 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
33527 sizeof(tHalSigRssiSetReq),
33528 &pSendBuffer, &usDataOffset,
33529 &usSendSize))||
33530 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
33531 {
33532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33533 "Unable to get send buffer in %s %p %p %p", __func__,
33534 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
33535 wdiEXTScanSetSignfRSSIChangeRspCb);
33536 WDI_ASSERT(0);
33537 return WDI_STATUS_E_FAILURE;
33538 }
33539
33540 pHalSigRssiSetReqParams =
33541 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
33542
33543 pHalSigRssiSetReqParams->requestId =
33544 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
33545 pHalSigRssiSetReqParams->sessionId =
33546 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
33547 pHalSigRssiSetReqParams->rssiSampleSize =
33548 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
33549 pHalSigRssiSetReqParams->lostApSampleSize =
33550 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
33551 pHalSigRssiSetReqParams->minBreaching =
33552 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
33553 pHalSigRssiSetReqParams->numAp =
33554 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
33555
33556
33557 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
33558
33559 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
33560 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
33561 WDI_MAC_ADDR_LEN);
33562
33563 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
33564 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
33565
33566 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
33567 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
33568
33569 pHalSigRssiSetReqParams->ap[i].channel =
33570 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
33571
33572 }
33573
33574
33575 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33576 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
33577 " minBreaching %u numAp %u ",
33578 pHalSigRssiSetReqParams->requestId,
33579 pHalSigRssiSetReqParams->sessionId,
33580 pHalSigRssiSetReqParams->rssiSampleSize,
33581 pHalSigRssiSetReqParams->lostApSampleSize,
33582 pHalSigRssiSetReqParams->minBreaching,
33583 pHalSigRssiSetReqParams->numAp);
33584
33585 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
33586
33587 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33588 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33589 i,
33590 pHalSigRssiSetReqParams->ap[i].bssid,
33591 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
33592 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
33593 pHalSigRssiSetReqParams->ap[i].channel);
33594
33595 }
33596
33597 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33598
33599
33600 /*-------------------------------------------------------------------------
33601 Send EXTScan Stop Request to HAL
33602 -------------------------------------------------------------------------*/
33603 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33604 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
33605 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
33606}
33607
33608/**
33609 @brief WDI_EXTScanResetSignfRSSIChangeReq
33610
33611 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
33612 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
33613 of the Req operation received from the device
33614 pUserData: user data will be passed back with the callback
33615
33616 @return SUCCESS or FAIL
33617*/
33618WDI_Status
33619WDI_EXTScanResetSignfRSSIChangeReq(
33620 WDI_EXTScanResetSignfRSSIChangeReqParams*
33621 pwdiEXTScanResetSignfRSSIChangeReqParams,
33622 WDI_EXTScanResetSignfRSSIChangeRspCb
33623 wdiEXTScanResetSignfRSSIChangeRspCb,
33624 void* pUserData)
33625{
33626 WDI_EventInfoType wdiEventData;
33627
33628 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33629 "%s: %d ",__func__, __LINE__);
33630 /*------------------------------------------------------------------------
33631 Sanity Check
33632 ------------------------------------------------------------------------*/
33633 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33634 {
33635 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33636 "WDI API call before module is initialized - Fail request");
33637
33638 return WDI_STATUS_E_NOT_ALLOWED;
33639 }
33640
33641 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
33642 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
33643 wdiEventData.uEventDataSize =
33644 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
33645 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
33646 wdiEventData.pUserData = pUserData;
33647
33648 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33649}
33650
33651/**
33652 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
33653 Extended Scana reset Significant RSSI change Request to FW
33654
33655 @param pWDICtx : wdi context
33656 pEventData : indication data
33657
33658 @see
33659 @return none
33660*/
33661WDI_Status
33662WDI_ProcessEXTScanResetSignfRSSIChangeReq
33663(
33664 WDI_ControlBlockType* pWDICtx,
33665 WDI_EventInfoType* pEventData
33666)
33667{
33668 WDI_EXTScanResetSignfRSSIChangeReqParams*
33669 pwdiEXTScanResetSignfRSSIChangeReqParams;
33670 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33671 wpt_uint8* pSendBuffer = NULL;
33672 wpt_uint16 usSendSize = 0;
33673 wpt_uint16 usDataOffset = 0;
33674 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
33675
33676 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33677 "%s: %d ",__func__, __LINE__);
33678
33679 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33680 ( NULL == pEventData->pCBfnc ))
33681 {
33682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33683 "%s: Invalid parameters", __func__);
33684 WDI_ASSERT(0);
33685 return WDI_STATUS_E_FAILURE;
33686 }
33687
33688 pwdiEXTScanResetSignfRSSIChangeReqParams =
33689 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
33690 wdiEXTScanResetSignfRSSIChangeRspCb =
33691 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33692
33693 /*-----------------------------------------------------------------------
33694 Get message buffer
33695 ! TO DO : proper conversion into the HAL Message Request Format
33696 -----------------------------------------------------------------------*/
33697 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33698 pWDICtx,
33699 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
33700 sizeof(tHalSigRssiResetReq),
33701 &pSendBuffer, &usDataOffset,
33702 &usSendSize))||
33703 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
33704 {
33705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33706 "Unable to get send buffer in %s %p %p %p", __func__,
33707 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
33708 wdiEXTScanResetSignfRSSIChangeRspCb);
33709 WDI_ASSERT(0);
33710 return WDI_STATUS_E_FAILURE;
33711 }
33712 pHalSigRssiResetReqParams =
33713 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
33714
33715 pHalSigRssiResetReqParams->requestId =
33716 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
33717
33718 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33719
33720
33721 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33722 wdiEXTScanResetSignfRSSIChangeRspCb,
33723 pEventData->pUserData,
33724 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
33725}
33726
33727/**
33728 @brief Process Extended Scan Start Rsp function (called when a response
33729 is being received over the bus from HAL)
33730
33731 @param pWDICtx: pointer to the WLAN DAL context
33732 pEventData: pointer to the event information structure
33733
33734 @see
33735 @return Result of the function call
33736*/
33737WDI_Status
33738WDI_ProcessEXTScanStartRsp
33739(
33740 WDI_ControlBlockType* pWDICtx,
33741 WDI_EventInfoType* pEventData
33742)
33743{
33744 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
33745
33746 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33747 "%s: %d",__func__, __LINE__);
33748 /*-------------------------------------------------------------------------
33749 Sanity check
33750 -------------------------------------------------------------------------*/
33751 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33752 ( NULL == pEventData->pEventData))
33753 {
33754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33755 "%s: Invalid parameters", __func__);
33756 WDI_ASSERT(0);
33757 return WDI_STATUS_E_FAILURE;
33758 }
33759
33760 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33761 if ( NULL == wdiEXTScanStartRspCb)
33762 {
33763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33764 "%s: Callback function Invalid", __func__);
33765 WDI_ASSERT(0);
33766 return WDI_STATUS_E_FAILURE;
33767 }
33768
33769 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
33770
33771 return WDI_STATUS_SUCCESS;
33772}
33773
33774
33775/**
33776 @brief Process Extended Scan Stop Rsp function (called when a response
33777 is being received over the bus from HAL)
33778
33779 @param pWDICtx: pointer to the WLAN DAL context
33780 pEventData: pointer to the event information structure
33781
33782 @see
33783 @return Result of the function call
33784*/
33785WDI_Status
33786WDI_ProcessEXTScanStopRsp
33787(
33788 WDI_ControlBlockType* pWDICtx,
33789 WDI_EventInfoType* pEventData
33790)
33791{
33792 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
33793
33794 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33795 "%s: %d",__func__, __LINE__);
33796
33797
33798 /*-------------------------------------------------------------------------
33799 Sanity check
33800 -------------------------------------------------------------------------*/
33801 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33802 ( NULL == pEventData->pEventData))
33803 {
33804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33805 "%s: Invalid parameters", __func__);
33806 WDI_ASSERT(0);
33807 return WDI_STATUS_E_FAILURE;
33808 }
33809
33810 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33811 if ( NULL == wdiEXTScanStopRspCb)
33812 {
33813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33814 "%s: Callback function Invalid", __func__);
33815 WDI_ASSERT(0);
33816 return WDI_STATUS_E_FAILURE;
33817 }
33818
33819 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33820
33821 return WDI_STATUS_SUCCESS;
33822}
33823
33824/**
33825 @brief Process Extended Scan Get Cached Rsp function (called when a response
33826 is being received over the bus from HAL)
33827
33828 @param pWDICtx: pointer to the WLAN DAL context
33829 pEventData: pointer to the event information structure
33830
33831 @see
33832 @return Result of the function call
33833*/
33834WDI_Status
33835WDI_ProcessEXTScanGetCachedResultsRsp
33836(
33837 WDI_ControlBlockType* pWDICtx,
33838 WDI_EventInfoType* pEventData
33839)
33840{
33841 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33842
33843 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33844 "%s: %d Enter",__func__, __LINE__);
33845
33846
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 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33860 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
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 wdiEXTScanGetCachedResultsRspCb(
33869 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33870
33871 return WDI_STATUS_SUCCESS;
33872}
33873
33874/**
33875 @brief Process Extended Scan Get Capabilityu 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_ProcessEXTScanGetCapabilitiesRsp
33886(
33887 WDI_ControlBlockType* pWDICtx,
33888 WDI_EventInfoType* pEventData
33889)
33890{
33891 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
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 wdiEXTScanGetCapabilitiesRspCb =
33910 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
33911 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
33912 {
33913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33914 "%s: Callback function Invalid", __func__);
33915 WDI_ASSERT(0);
33916 return WDI_STATUS_E_FAILURE;
33917 }
33918
33919 wdiEXTScanGetCapabilitiesRspCb(
33920 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33921
33922 return WDI_STATUS_SUCCESS;
33923}
33924
33925/**
33926 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
33927 response is being received over the bus from HAL)
33928
33929 @param pWDICtx: pointer to the WLAN DAL context
33930 pEventData: pointer to the event information structure
33931
33932 @see
33933 @return Result of the function call
33934*/
33935WDI_Status
33936WDI_ProcessEXTScanSetHotlistBSSIDRsp
33937(
33938 WDI_ControlBlockType* pWDICtx,
33939 WDI_EventInfoType* pEventData
33940)
33941{
33942 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33943
33944 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33945 "%s: %d ",__func__, __LINE__);
33946
33947
33948 /*-------------------------------------------------------------------------
33949 Sanity check
33950 -------------------------------------------------------------------------*/
33951 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33952 ( NULL == pEventData->pEventData))
33953 {
33954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33955 "%s: Invalid parameters", __func__);
33956 WDI_ASSERT(0);
33957 return WDI_STATUS_E_FAILURE;
33958 }
33959
33960 wdiEXTScanSetBSSIDHotlistRspCb =
33961 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33962 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
33963 {
33964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33965 "%s: Callback function Invalid", __func__);
33966 WDI_ASSERT(0);
33967 return WDI_STATUS_E_FAILURE;
33968 }
33969
33970 wdiEXTScanSetBSSIDHotlistRspCb(
33971 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33972
33973 return WDI_STATUS_SUCCESS;
33974}
33975
33976/**
33977 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
33978 when a response is being received over the bus from HAL)
33979
33980 @param pWDICtx: pointer to the WLAN DAL context
33981 pEventData: pointer to the event information structure
33982
33983 @see
33984 @return Result of the function call
33985*/
33986WDI_Status
33987WDI_ProcessEXTScanResetHotlistBSSIDRsp
33988(
33989 WDI_ControlBlockType* pWDICtx,
33990 WDI_EventInfoType* pEventData
33991)
33992{
33993 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33994
33995 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33996 "%s: %d ",__func__, __LINE__);
33997
33998
33999 /*-------------------------------------------------------------------------
34000 Sanity check
34001 -------------------------------------------------------------------------*/
34002 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34003 ( NULL == pEventData->pEventData))
34004 {
34005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34006 "%s: Invalid parameters", __func__);
34007 WDI_ASSERT(0);
34008 return WDI_STATUS_E_FAILURE;
34009 }
34010
34011 wdiEXTScanResetBSSIDHotlistRspCb =
34012 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34013 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
34014 {
34015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34016 "%s: Callback function Invalid", __func__);
34017 WDI_ASSERT(0);
34018 return WDI_STATUS_E_FAILURE;
34019 }
34020
34021 wdiEXTScanResetBSSIDHotlistRspCb(
34022 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34023
34024 return WDI_STATUS_SUCCESS;
34025}
34026
34027/**
34028 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
34029 when a response is being received over the bus from HAL)
34030
34031 @param pWDICtx: pointer to the WLAN DAL context
34032 pEventData: pointer to the event information structure
34033
34034 @see
34035 @return Result of the function call
34036*/
34037WDI_Status
34038WDI_ProcessEXTScanSetSignfRSSIChangeRsp
34039(
34040 WDI_ControlBlockType* pWDICtx,
34041 WDI_EventInfoType* pEventData
34042)
34043{
34044 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
34045
34046 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34047 "%s: %d",__func__, __LINE__);
34048
34049
34050 /*-------------------------------------------------------------------------
34051 Sanity check
34052 -------------------------------------------------------------------------*/
34053 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34054 ( NULL == pEventData->pEventData))
34055 {
34056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34057 "%s: Invalid parameters", __func__);
34058 WDI_ASSERT(0);
34059 return WDI_STATUS_E_FAILURE;
34060 }
34061
34062 wdiEXTScanSetSignfRSSIChangeRspCb =
34063 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
34064 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
34065 {
34066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34067 "%s: Callback function Invalid", __func__);
34068 WDI_ASSERT(0);
34069 return WDI_STATUS_E_FAILURE;
34070 }
34071
34072 wdiEXTScanSetSignfRSSIChangeRspCb(
34073 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34074
34075 return WDI_STATUS_SUCCESS;
34076}
34077
34078/**
34079 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
34080 (called when a response is being received over the bus from HAL)
34081
34082 @param pWDICtx: pointer to the WLAN DAL context
34083 pEventData: pointer to the event information structure
34084
34085 @see
34086 @return Result of the function call
34087*/
34088WDI_Status
34089WDI_ProcessEXTScanResetSignfRSSIChangeRsp
34090(
34091 WDI_ControlBlockType* pWDICtx,
34092 WDI_EventInfoType* pEventData
34093)
34094{
34095 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
34096
34097 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34098 "%s: %d Enter",__func__, __LINE__);
34099
34100
34101 /*-------------------------------------------------------------------------
34102 Sanity check
34103 -------------------------------------------------------------------------*/
34104 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34105 ( NULL == pEventData->pEventData))
34106 {
34107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34108 "%s: Invalid parameters", __func__);
34109 WDI_ASSERT(0);
34110 return WDI_STATUS_E_FAILURE;
34111 }
34112
34113 wdiEXTScanResetSignfRSSIChangeRspCb =
34114 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
34115 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
34116 {
34117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34118 "%s: Callback function Invalid", __func__);
34119 WDI_ASSERT(0);
34120 return WDI_STATUS_E_FAILURE;
34121 }
34122
34123 wdiEXTScanResetSignfRSSIChangeRspCb(
34124 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34125
34126 return WDI_STATUS_SUCCESS;
34127}
34128#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053034129
34130/**
34131 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
34132
34133 @param None
34134
34135 @see
34136
34137 @return Status of the request
34138*/
34139WDI_Status
34140WDI_SetSpoofMacAddrReq
34141(
34142 WDI_SpoofMacAddrInfoType* pWdiReq,
34143 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
34144 void* pUserData)
34145{
34146 WDI_EventInfoType wdiEventData;
34147
34148 /*-------------------------------------------------------------------------
34149 Sanity Check
34150 ------------------------------------------------------------------------*/
34151 if (eWLAN_PAL_FALSE == gWDIInitialized)
34152 {
34153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34154 "WDI API call before module is initialized - Fail request!");
34155
34156 return WDI_STATUS_E_NOT_ALLOWED;
34157 }
34158
34159 /*-------------------------------------------------------------------------
34160 Fill in Event data and post to the Main FSM
34161 ------------------------------------------------------------------------*/
34162 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
34163 wdiEventData.pEventData = pWdiReq;
34164 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
34165 wdiEventData.pCBfnc = spoofMacAddrRspCb;
34166 wdiEventData.pUserData = pUserData;
34167
34168 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34169}
34170
34171/**
34172 @brief Process SpoofMacAddr Request
34173
34174 @param pWDICtx: pointer to the WLAN DAL context
34175 pEventData: pointer to the event information structure
34176
34177 @see
34178 @return Result of the function call
34179*/
34180WDI_Status
34181WDI_ProcessSpoofMacAddrReq
34182(
34183 WDI_ControlBlockType* pWDICtx,
34184 WDI_EventInfoType* pEventData
34185)
34186{
34187 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
34188 wpt_uint8* pSendBuffer = NULL;
34189 wpt_uint16 usDataOffset = 0;
34190 wpt_uint16 usSendSize = 0;
34191 WDI_Status wdiStatus;
34192 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
34193 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
34194
34195
34196 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34197 "%s: %d Enter",__func__, __LINE__);
34198
34199 /*-------------------------------------------------------------------------
34200 Sanity check
34201 -------------------------------------------------------------------------*/
34202 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34203 ( NULL == pEventData->pEventData))
34204 {
34205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34206 "%s: Invalid parameters", __func__);
34207 WDI_ASSERT(0);
34208 return WDI_STATUS_E_FAILURE;
34209 }
34210 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
34211
34212 /*-----------------------------------------------------------------------
34213 Get message buffer
34214 -----------------------------------------------------------------------*/
34215 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34216 WDI_SPOOF_MAC_ADDR_REQ,
34217 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
34218 &pSendBuffer, &usDataOffset, &usSendSize))||
34219 (usSendSize < (usDataOffset +
34220 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
34221 {
34222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34223 "Unable to get send buffer in Process Spoof Mac Addr Req");
34224 WDI_ASSERT(0);
34225 return WDI_STATUS_E_FAILURE;
34226 }
34227
34228 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
34229 wdiSpoofMacAddr->macAddr,
34230 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
34231
34232 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
34233
34234 wpalMemoryCopy( pSendBuffer+usDataOffset,
34235 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
34236 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
34237
34238 /*-------------------------------------------------------------------------
34239 Send Suspend Request to HAL
34240 -------------------------------------------------------------------------*/
34241 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34242 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
34243
34244 return wdiStatus;
34245}
34246
34247/**
34248 @brief Process Spoof Mac Address Rsp function
34249 (called when a response is being received over the bus from HAL)
34250
34251 @param pWDICtx: pointer to the WLAN DAL context
34252 pEventData: pointer to the event information structure
34253
34254 @see
34255 @return Result of the function call
34256*/
34257WDI_Status
34258WDI_ProcessSpoofMacAddrRsp
34259(
34260 WDI_ControlBlockType* pWDICtx,
34261 WDI_EventInfoType* pEventData
34262)
34263{
34264 tMacSpoofedScanResp halRsp;
34265 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
34266 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
34267
34268 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34269 "%s: %d Enter",__func__, __LINE__);
34270
34271 /*-------------------------------------------------------------------------
34272 Sanity check
34273 -------------------------------------------------------------------------*/
34274 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34275 ( NULL == pEventData->pEventData))
34276 {
34277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34278 "%s: Invalid parameters", __func__);
34279 WDI_ASSERT(0);
34280 return WDI_STATUS_E_FAILURE;
34281 }
34282 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
34283
34284 /*-------------------------------------------------------------------------
34285 Extract response and send it to UMAC
34286 -------------------------------------------------------------------------*/
34287 wpalMemoryCopy( &halRsp,
34288 pEventData->pEventData, sizeof(halRsp));
34289
34290 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34291
34292 /*Notify UMAC*/
34293 wdiSpoofMacAddrRspCb(
34294 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
34295
34296 return WDI_STATUS_SUCCESS;
34297}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034298
34299/**
Siddharth Bhal64246172015-02-27 01:04:37 +053034300 @brief Process Get Frame Log Rsp function
34301 (called when a response is being received over the bus from HAL)
34302
34303 @param pWDICtx: pointer to the WLAN DAL context
34304 pEventData: pointer to the event information structure
34305
34306 @see
34307 @return Result of the function call
34308*/
34309WDI_Status
34310WDI_ProcessGetFrameLogRsp
34311(
34312 WDI_ControlBlockType* pWDICtx,
34313 WDI_EventInfoType* pEventData
34314)
34315{
34316 tGetFrameLogResp halRsp;
34317 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
34318 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
34319
34320 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34321 "%s: %d Enter",__func__, __LINE__);
34322
34323 /*-------------------------------------------------------------------------
34324 Sanity check
34325 -------------------------------------------------------------------------*/
34326 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34327 ( NULL == pEventData->pEventData))
34328 {
34329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34330 "%s: Invalid parameters", __func__);
34331 WDI_ASSERT(0);
34332 return WDI_STATUS_E_FAILURE;
34333 }
34334
34335 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
34336
34337 /*-------------------------------------------------------------------------
34338 Extract response and send it to UMAC
34339 -------------------------------------------------------------------------*/
34340 wpalMemoryCopy( &halRsp,
34341 pEventData->pEventData, sizeof(halRsp));
34342
34343 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34344
34345 /*Notify UMAC*/
34346 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
34347
34348 return WDI_STATUS_SUCCESS;
34349}
34350/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034351 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053034352
34353 @param pWDICtx: pointer to the WLAN DAL context
34354 pEventData: pointer to the event information structure
34355
34356 @see
34357 @return Result of the function call
34358*/
34359WDI_Status
34360WDI_ProcessGetFrameLogReq
34361(
34362 WDI_ControlBlockType* pWDICtx,
34363 WDI_EventInfoType* pEventData
34364)
34365{
34366 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
34367 wpt_uint8* pSendBuffer = NULL;
34368 wpt_uint16 usDataOffset = 0;
34369 wpt_uint16 usSendSize = 0;
34370 WDI_Status wdiStatus;
34371 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034372 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053034373
34374
34375 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34376 "%s: %d Enter",__func__, __LINE__);
34377
34378 /*-------------------------------------------------------------------------
34379 Sanity check
34380 ------------------------------------------------------------------------*/
34381 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34382 ( NULL == pEventData->pEventData))
34383 {
34384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34385 "%s: Invalid parameters", __func__);
34386 WDI_ASSERT(0);
34387 return WDI_STATUS_E_FAILURE;
34388 }
34389
34390 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
34391
34392 /*-----------------------------------------------------------------------
34393 Get message buffer
34394 -----------------------------------------------------------------------*/
34395 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34396 WDI_GET_FRAME_LOG_REQ,
34397 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
34398 &pSendBuffer, &usDataOffset, &usSendSize))||
34399 (usSendSize < (usDataOffset +
34400 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
34401 {
34402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34403 "Unable to get send buffer in GetFrameLog Req");
34404 WDI_ASSERT(0);
34405 return WDI_STATUS_E_FAILURE;
34406 }
34407
34408 halGetFrameLogReq.tGetFrameLogReqParams.flags =
34409 wdiGetFrameLogReq->flags;
34410
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034411 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053034412
34413 wpalMemoryCopy( pSendBuffer+usDataOffset,
34414 &halGetFrameLogReq.tGetFrameLogReqParams,
34415 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
34416
34417 /*-------------------------------------------------------------------------
34418 Send Suspend Request to HAL
34419 ------------------------------------------------------------------------*/
34420 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34421 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
34422
34423 return wdiStatus;
34424}
34425/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034426 @brief Process MgmtFrame Logging Init Rsp function
34427 (called when a response is being received over the bus from HAL)
34428
34429 @param pWDICtx: pointer to the WLAN DAL context
34430 pEventData: pointer to the event information structure
34431
34432 @see
34433 @return Result of the function call
34434*/
34435WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034436WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034437(
34438 WDI_ControlBlockType* pWDICtx,
34439 WDI_EventInfoType* pEventData
34440)
34441{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034442 tFWLoggingInitResp halRsp;
34443 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
34444 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034445
34446 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34447 "%s: %d Enter",__func__, __LINE__);
34448
34449 /*-------------------------------------------------------------------------
34450 Sanity check
34451 -------------------------------------------------------------------------*/
34452 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34453 ( NULL == pEventData->pEventData))
34454 {
34455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34456 "%s: Invalid parameters", __func__);
34457 WDI_ASSERT(0);
34458 return WDI_STATUS_E_FAILURE;
34459 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034460 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034461
34462 /*-------------------------------------------------------------------------
34463 Extract response and send it to UMAC
34464 -------------------------------------------------------------------------*/
34465 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34466
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034467 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034468
34469 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034470 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034471
34472 return WDI_STATUS_SUCCESS;
34473}
34474
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034475WDI_Status
34476WDI_ProcessFWLoggingDXEdoneInd
34477(
34478 WDI_ControlBlockType* pWDICtx,
34479 WDI_EventInfoType* pEventData
34480)
34481{
34482 wpt_uint8* pSendBuffer = NULL;
34483 wpt_uint16 usDataOffset = 0;
34484 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034485 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053034486 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034487 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
34488
34489
34490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34491
34492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34493 "%s", __func__);
34494
34495 /*-------------------------------------------------------------------------
34496 Sanity check
34497 -------------------------------------------------------------------------*/
Mihir Shete5affadc2015-05-29 20:54:57 +053034498 if (NULL == pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034499 {
34500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34501 "%s: Invalid parameters", __func__);
34502 WDI_ASSERT(0);
34503 return WDI_STATUS_E_FAILURE;
34504 }
Mihir Shete5affadc2015-05-29 20:54:57 +053034505 pLoggingSession = (WDI_DS_LoggingSessionType *)
34506 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
34507 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034508 /*-----------------------------------------------------------------------
34509 Get message buffer
34510 -----------------------------------------------------------------------*/
34511
34512 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34513 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053034514 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034515 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053034516 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034517 {
34518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34519 "Unable to get send buffer in RTS CTS ind %p ",
34520 pEventData);
34521 WDI_ASSERT(0);
34522 return WDI_STATUS_E_FAILURE;
34523 }
34524 FWLoggingDxeDoneIndParams =
34525 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
34526
34527 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053034528 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034529 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053034530
34531 FWLoggingDxeDoneIndParams->status = eHAL_STATUS_SUCCESS;
34532
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034533 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053034534 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034535 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
34536
34537 pWDICtx->pReqStatusUserData = NULL;
34538 pWDICtx->pfncRspCB = NULL;
34539 /*-------------------------------------------------------------------------
34540 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
34541 -------------------------------------------------------------------------*/
34542 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
34543 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
34544}
34545
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034546/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034547 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034548
34549 @param pWDICtx: pointer to the WLAN DAL context
34550 pEventData: pointer to the event information structure
34551
34552 @see
34553 @return Result of the function call
34554*/
34555WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034556WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034557(
34558 WDI_ControlBlockType* pWDICtx,
34559 WDI_EventInfoType* pEventData
34560)
34561{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034562 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034563 wpt_uint8* pSendBuffer = NULL;
34564 wpt_uint16 usDataOffset = 0;
34565 wpt_uint16 usSendSize = 0;
34566 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034567 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
34568 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034569
34570
34571 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34572 "%s: %d Enter",__func__, __LINE__);
34573
34574 /*-------------------------------------------------------------------------
34575 Sanity check
34576 ------------------------------------------------------------------------*/
34577 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34578 ( NULL == pEventData->pEventData))
34579 {
34580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34581 "%s: Invalid parameters", __func__);
34582 WDI_ASSERT(0);
34583 return WDI_STATUS_E_FAILURE;
34584 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034585 wdiFWLoggingInitReq =
34586 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034587
34588 /*-----------------------------------------------------------------------
34589 Get message buffer
34590 -----------------------------------------------------------------------*/
34591 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034592 WDI_FW_LOGGING_INIT_REQ,
34593 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034594 &pSendBuffer, &usDataOffset, &usSendSize))||
34595 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034596 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034597 {
34598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34599 "Unable to get send buffer in Process Mgmt Logging Init Req");
34600 WDI_ASSERT(0);
34601 return WDI_STATUS_E_FAILURE;
34602 }
34603
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034604 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
34605 wdiFWLoggingInitReq->enableFlag;
34606 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
34607 wdiFWLoggingInitReq->frameSize;
34608 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
34609 wdiFWLoggingInitReq->frameType;
34610 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
34611 wdiFWLoggingInitReq->bufferMode;
34612 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
34613 wdiFWLoggingInitReq->continuousFrameLogging;
34614 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
34615 wdiFWLoggingInitReq->minLogBufferSize;
34616 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
34617 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053034618 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
34619 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
34620 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
34621 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034622
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034623 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034624
34625 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034626 &halFWLoggingInitReq.tFWLoggingInitReqParams,
34627 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034628
34629 /*-------------------------------------------------------------------------
34630 Send Mgmt Logging Init Request to HAL
34631 ------------------------------------------------------------------------*/
34632 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034633 wdiFWLoggingInitRspCb, pEventData->pUserData,
34634 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034635
34636 return wdiStatus;
34637}
34638
34639/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034640 @brief WDI_EncryptMsgReq
34641
34642 @param pwdiEncryptMsgParams: Req parameter for the FW
34643 wdiEncryptMsgCbRsp: callback for passing back the response
34644 of the Req operation received from the device
34645 pUserData: user data will be passed back with the callback
34646
34647 @return SUCCESS or FAIL
34648*/
34649WDI_Status
34650WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
34651 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
34652 void* pUserData)
34653{
34654 WDI_EventInfoType wdiEventData;
34655
34656 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34657 "%s: %d Enter" ,__func__, __LINE__);
34658 /*------------------------------------------------------------------------
34659 Sanity Check
34660 ------------------------------------------------------------------------*/
34661 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34662 {
34663 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34664 "WDI API call before module is initialized - Fail request");
34665
34666 return WDI_STATUS_E_NOT_ALLOWED;
34667 }
34668
34669 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
34670 wdiEventData.pEventData = pwdiEncryptMsgParams;
34671 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
34672 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
34673 wdiEventData.pUserData = pUserData;
34674
34675 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34676}
34677
34678/*
34679 * FUNCTION: WDI_ProcessEncryptMsgReq
34680 * Request to WDI to encrypt the given message.
34681 *
34682 * @param pWDICtx: pointer to the WLAN DAL context
34683 * pEventData: pointer to the event information structure
34684 *
34685 * @return Result of the function call
34686 */
34687
34688WDI_Status
34689WDI_ProcessEncryptMsgReq
34690(
34691 WDI_ControlBlockType* pWDICtx,
34692 WDI_EventInfoType* pEventData
34693)
34694{
34695 wpt_uint8* pSendBuffer = NULL;
34696 wpt_uint16 usDataOffset = 0;
34697 wpt_uint16 usSendSize = 0;
34698 WDI_EncryptMsgRspCb* wdiEncMsgCb;
34699 tSetEncryptedDataParams *pHalEncryptDataReq;
34700 wpt_pkt80211 *pkt = NULL;
34701
34702 /*-------------------------------------------------------------------------
34703 Sanity check
34704 -------------------------------------------------------------------------*/
34705 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
34706 ( NULL == pEventData->pCBfnc ) )
34707 {
34708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34709 "%s: Invalid parameters", __func__);
34710 WDI_ASSERT(0);
34711 return WDI_STATUS_E_FAILURE;
34712 }
34713
34714 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
34715
34716 /*-----------------------------------------------------------------------
34717 Get message buffer
34718 -----------------------------------------------------------------------*/
34719 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34720 pWDICtx, WDI_ENCRYPT_MSG_REQ,
34721 sizeof(tSetEncryptedDataReqMsg),
34722 &pSendBuffer, &usDataOffset, &usSendSize)) ||
34723 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
34724 {
34725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34726 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
34727 pEventData);
34728 WDI_ASSERT(0);
34729 return WDI_STATUS_E_FAILURE;
34730 }
34731
34732 pWDICtx->wdiReqStatusCB = NULL;
34733 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34734 pkt = (wpt_pkt80211 *)pEventData->pEventData;
34735
34736 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
34737 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
34738
34739 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
34740
34741 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
34742 pkt->encParams.keyParams.key[0].keyId;
34743
34744 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
34745 &pkt->encParams.keyParams.key[0].key[0], 16);
34746
34747 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
34748
34749 pHalEncryptDataReq->data.length = pkt->data.length;
34750 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
34751
34752 /*-------------------------------------------------------------------------
34753 Send Get STA Request to HAL
34754 -------------------------------------------------------------------------*/
34755 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
34756 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
34757}
34758
34759/*
34760 * FUNCTION: WDI_ProcessEncryptMsgRsp
34761 * Receives the encrypted message from the firmware
34762 * @param pWDICtx: pointer to the WLAN DAL context
34763 * pEventData: pointer to the event information structure
34764 *
34765 * @return Result of the function call
34766 */
34767WDI_Status
34768WDI_ProcessEncryptMsgRsp
34769(
34770 WDI_ControlBlockType* pWDICtx,
34771 WDI_EventInfoType* pEventData
34772)
34773{
34774 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
34775 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
34776
34777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34778 "In %s",__func__);
34779
34780 /*-------------------------------------------------------------------------
34781 Sanity check
34782 -------------------------------------------------------------------------*/
34783 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34784 ( NULL == pEventData->pEventData))
34785 {
34786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34787 "%s: Invalid parameters", __func__);
34788 WDI_ASSERT(0);
34789 return WDI_STATUS_E_FAILURE;
34790 }
34791
34792 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
34793
34794 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
34795
34796 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
34797 pEventData->pEventData,
34798 pWDICtx->pRspCBUserData);
34799 return WDI_STATUS_SUCCESS;
34800}
Srinivas Dasari32a79262015-02-19 13:04:49 +053034801
34802WDI_Status
34803WDI_NanRequest
34804(
34805 WDI_NanRequestType *pwdiNanRequest,
34806 void *usrData
34807)
34808{
34809 WDI_EventInfoType wdiEventData;
34810
34811 /*------------------------------------------------------------------------
34812 Sanity Check
34813 ------------------------------------------------------------------------*/
34814 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34815 {
34816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34817 "WDI API call before module is initialized - Fail request");
34818
34819 return WDI_STATUS_E_NOT_ALLOWED;
34820 }
34821
34822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34823 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
34824 pwdiNanRequest->request_data_len);
34825
34826 /*------------------------------------------------------------------------
34827 Fill in Event data and post to the Main FSM
34828 ------------------------------------------------------------------------*/
34829 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
34830 wdiEventData.pEventData = pwdiNanRequest;
34831 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
34832 + pwdiNanRequest->request_data_len;
34833 wdiEventData.pUserData = usrData;
34834 wdiEventData.pCBfnc = NULL;
34835
34836
34837 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34838}
34839
34840WDI_Status
34841WDI_ProcessNanRequest
34842(
34843 WDI_ControlBlockType* pWDICtx,
34844 WDI_EventInfoType* pEventData
34845)
34846{
34847 WDI_NanRequestType *pwdiNanRequest = NULL;
34848 wpt_uint8* pSendBuffer = NULL;
34849 wpt_uint16 usDataOffset = 0;
34850 wpt_uint16 usSendSize = 0;
34851
34852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34853 "WDI_ProcessNanRequest");
34854
34855 /*-------------------------------------------------------------------------
34856 Sanity check
34857 -------------------------------------------------------------------------*/
34858 if (( NULL == pEventData ) ||
34859 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
34860 {
34861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34862 "%s: Invalid parameters", __FUNCTION__);
34863 WDI_ASSERT(0);
34864 return WDI_STATUS_E_FAILURE;
34865 }
34866
34867 /*-----------------------------------------------------------------------
34868 Get message buffer
34869 -----------------------------------------------------------------------*/
34870 if (( WDI_STATUS_SUCCESS
34871 != WDI_GetMessageBuffer( pWDICtx,
34872 WDI_NAN_REQUEST,
34873 pwdiNanRequest->request_data_len,
34874 &pSendBuffer,
34875 &usDataOffset,
34876 &usSendSize))||
34877 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
34878 {
34879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34880 "Unable to get send buffer in NAN request %p %p",
34881 pEventData, pwdiNanRequest);
34882 WDI_ASSERT(0);
34883 return WDI_STATUS_E_FAILURE;
34884 }
34885
34886 wpalMemoryCopy( pSendBuffer+usDataOffset,
34887 pwdiNanRequest->request_data,
34888 pwdiNanRequest->request_data_len);
34889
34890 pWDICtx->pReqStatusUserData = NULL;
34891 pWDICtx->pfncRspCB = NULL;
34892 vos_mem_free( pEventData->pUserData);
34893
34894 /*-------------------------------------------------------------------------
34895 Send NAN Request to HAL
34896 -------------------------------------------------------------------------*/
34897 return WDI_SendMsg( pWDICtx,
34898 pSendBuffer,
34899 usSendSize,
34900 NULL,
34901 NULL,
34902 WDI_NAN_RESPONSE);
34903}
34904
34905/**
34906 @brief Process NAN Response function (called when a
34907 response is being received over the bus from HAL)
34908
34909 @param pWDICtx: pointer to the WLAN DAL context
34910 pEventData: pointer to the event information structure
34911
34912 @see
34913 @return Result of the function call
34914*/
34915WDI_Status
34916WDI_ProcessNanResponse
34917(
34918 WDI_ControlBlockType* pWDICtx,
34919 WDI_EventInfoType* pEventData
34920)
34921{
34922 WDI_Status wdiStatus;
34923 eHalStatus halStatus;
34924
34925 /*-------------------------------------------------------------------------
34926 Sanity check
34927 -------------------------------------------------------------------------*/
34928 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34929 ( NULL == pEventData->pEventData))
34930 {
34931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34932 "%s: Invalid parameters", __func__);
34933 WDI_ASSERT(0);
34934 return WDI_STATUS_E_FAILURE;
34935 }
34936
34937 halStatus = *((eHalStatus*)pEventData->pEventData);
34938 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
34939
34940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34941 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
34942
34943 return WDI_STATUS_SUCCESS;
34944}/*WDI_ProcessNanResponse*/
34945
34946
34947/**
34948 @brief Process NAN Event function (called when
34949 an indication is being received over the
34950 bus from HAL)
34951
34952 @param pWDICtx: pointer to the WLAN DAL context
34953 pEventData: pointer to the event information structure
34954
34955 @see
34956 @return Result of the function call
34957*/
34958WDI_Status
34959WDI_ProcessNanEvent
34960(
34961 WDI_ControlBlockType* pWDICtx,
34962 WDI_EventInfoType* pEventData
34963)
34964{
34965 WDI_LowLevelIndType wdiInd;
34966
34967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34968
34969 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34970 ( NULL == pEventData->pEventData ))
34971 {
34972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34973 "%s: Invalid parameters", __func__);
34974 WDI_ASSERT( 0 );
34975 return WDI_STATUS_E_FAILURE;
34976 }
34977
34978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34979 "%s: Received NAN event", __func__);
34980 /*-------------------------------------------------------------------------
34981 Extract indication and send it to UMAC
34982 -------------------------------------------------------------------------*/
34983 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
34984 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
34985 pEventData->uEventDataSize;
34986 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
34987 pEventData->pEventData;
34988
34989 /*Notify UMAC*/
34990 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34991
34992 return WDI_STATUS_SUCCESS;
34993}/*WDI_ProcessNanEvent*/
34994
Abhishek Singh41988ba2015-05-25 19:42:29 +053034995WDI_Status
34996WDI_ProcessSetRtsCtsHtvhtInd
34997(
34998 WDI_ControlBlockType* pWDICtx,
34999 WDI_EventInfoType* pEventData
35000)
35001{
35002 wpt_uint8* pSendBuffer = NULL;
35003 wpt_uint16 usDataOffset = 0;
35004 wpt_uint16 usSendSize = 0;
35005 wpt_uint32 *rtsCtsVal;
35006 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
35007 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
35008
35009
35010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35011
35012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35013 "%s", __func__);
35014
35015 /*-------------------------------------------------------------------------
35016 Sanity check
35017 -------------------------------------------------------------------------*/
35018 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
35019 {
35020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35021 "%s: Invalid parameters", __func__);
35022 WDI_ASSERT(0);
35023 return WDI_STATUS_E_FAILURE;
35024 }
35025 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
35026 /*-----------------------------------------------------------------------
35027 Get message buffer
35028 -----------------------------------------------------------------------*/
35029
35030 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35031 WDI_SET_RTS_CTS_HTVHT_IND,
35032 sizeof(tHalRtsCtsHtvhtIndParams),
35033 &pSendBuffer, &usDataOffset, &usSendSize))||
35034 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
35035 {
35036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35037 "Unable to get send buffer in RTS CTS ind %p ",
35038 pEventData);
35039 WDI_ASSERT(0);
35040 return WDI_STATUS_E_FAILURE;
35041 }
35042 rtsCtsHtvhtIndParams =
35043 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
35044 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
35045
35046 pWDICtx->pReqStatusUserData = NULL;
35047 pWDICtx->pfncRspCB = NULL;
35048 /*-------------------------------------------------------------------------
35049 Send SET_RTS_CTS_HTVHT Indication to HAL
35050 -------------------------------------------------------------------------*/
35051 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35052 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35053}
35054
35055WDI_Status
35056WDI_SetRtsCtsHTVhtInd
35057(
35058 wpt_uint32 rtsCtsVal
35059)
35060{
35061 WDI_EventInfoType wdiEventData;
35062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35063
35064 /*------------------------------------------------------------------------
35065 Sanity Check
35066 ------------------------------------------------------------------------*/
35067 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35068 {
35069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35070 "WDI API call before module is initialized - Fail request");
35071 return WDI_STATUS_E_NOT_ALLOWED;
35072 }
35073
35074 /*------------------------------------------------------------------------
35075 Fill in Event data and post to the Main FSM
35076 ------------------------------------------------------------------------*/
35077 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
35078 wdiEventData.pEventData = (void *) &rtsCtsVal;
35079 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
35080 wdiEventData.pCBfnc = NULL;
35081 wdiEventData.pUserData = NULL;
35082
35083 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35084
35085}/* WDI_SetRtsCtsHTVhtInd */